在ASP.NET Core应用中转换为文档文件并将文档文件附加到电子邮件

时间:2018-07-03 18:34:17

标签: c# asp.net docx doc

我正在尝试转换从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:无法加载文件或程序集'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);
    }

总的来说,它是点点滴滴的,我非常感谢分享经验。非常感谢。

1 个答案:

答案 0 :(得分:0)

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

必须将DocXCore用于ASP.NET Core应用程序。

     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);
    }

效果很好。