【问题标题】:Converting to doc file in ASP.NET Core app and attaching doc file to email在 ASP.NET Core 应用程序中转换为 doc 文件并将 doc 文件附加到电子邮件
【发布时间】:2018-07-03 18:34:17
【问题描述】:

我正在尝试在 ASP.NET 应用程序中转换从数据库中获取的一些数据。到目前为止,我遇到了一个非常简单的框架来执行此操作,称为 DocX。

https://www.nuget.org/packages/DocX/

因此,根据它的 API,我决定实现我的任务的最佳方式是首先制作一个文档并将其保存到服务器。然后将其作为流从服务器导入并将其附加到电子邮件中。但我很怀疑。

所以我走了:

            var doc = DocX.Create("test.doc");
            string f = "sdcdscdsc";
            doc.InsertParagraph(f);
            doc.Save();

这里发生了两件事:

1) 首先我得到一个异常 FileNotFoundException: Could not load file or assembly 'System.IO.Packaging 2) 不知何故...当我尝试使用另一个框架来执行此 DocumentCore (https://www.nuget.org/packages/sautinsoft.document/) 时,我猜它安装了一个丢失的文件,并且 Save() 方法开始工作并保存文件,但文件是空白的。

老实说,我非常感谢执行此任务的最佳实践。如果有人遇到过类似的任务,请分享使用的方法。

第二部分更容易一些。我对电子邮件部分进行了排序,但仍然不知道如何附加文件。到目前为止,代码如下所示:

    private static void SendMail()
    {
        var mailMessage = new MailMessage("xxxxxx@gmail.com", "xxxxxx@gmail.com");
        mailMessage.Subject = "Tester ";
        mailMessage.Body = "This is the message";


        SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
        client.Credentials = new System.Net.NetworkCredential()
        {
            UserName = "xxxxxxxx@gmail.com",
            Password = "xxxxxxxxx"
        };

        client.EnableSsl = true;
        client.Send(mailMessage);
    }

总体而言,它是零碎的,我非常感谢分享一些经验。非常感谢。

【问题讨论】:

  • 您应该将这些问题分成两个问题。如何使用 DocX 是一个独立于如何向电子邮件添加附件的问题。但在提出任何问题之前,请确保您已经充分研究了您的问题。有很多使用 DocX 库和将文件附加到电子邮件的示例。
  • 在您的第一个代码示例中,您没有对您的 f 变量执行任何操作,因此您看到的结果似乎是一个空文件,我并不感到惊讶。跨度>
  • 抱歉,打错了。实际上,问题的第 1 部分刚刚得到解决。显然整个故事的发生是因为我应该使用 DocXCore,因为我使用的是 ASP.NET Core。所以现在尝试以某种方式将此文档附加到电子邮件中。谢谢。

标签: c# asp.net docx doc


【解决方案1】:

第 1 部分 - 创建包含内容的文档

必须为 ASP.NET Core 应用程序使用 DocXCore。

     private void CreateDocument()
     {

        try
        {
            var doc = DocX.Create("mytest.docx");
            doc.InsertParagraph("Hello my new message");
            doc.Save();

        }
        catch (Exception e)
        {
            Console.WriteLine(e);
            throw;
        } 

    }

第 2 部分 - 发送电子邮件

    private void SendMail()
    {
        var mailMessage = new MailMessage("xxxxx@gmail.com", "yzolxxxxxotarev@gmail.com");
        mailMessage.Subject = "Tester ASP.NET Boat Inspector";
        mailMessage.Body = "This is the message";

        var contentPath = _env.ContentRootPath+@"\mytest.docx";

        Attachment data = new Attachment(contentPath, MediaTypeNames.Application.Octet);
        mailMessage.Attachments.Add(data);

        SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
        client.Credentials = new System.Net.NetworkCredential()
        {
            UserName = "xxxxx@gmail.com",
            Password = "xxxxx"
        };


        client.EnableSsl = true;
        client.Send(mailMessage);
    }

效果很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 1970-01-01
    • 2012-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多