使用C#发送MHT文件邮件消息

问题描述:

有没有人有任何代码发送MHT在C#中使用SmtpClient和MailMessage?使用C#发送MHT文件邮件消息

我发现了使用Alternate Views的诱人参考,但我无法弄清楚如何使这个工作与我的SSRS生成的MHT。

如果任何人有任何工作代码,他们愿意分享我会非常感激。

+0

您可以创建报告和subscritions通过电子邮件以多种格式包括MHTML传递这些报告。在SSRS中配置SMTP设置,勾选[this](http://bhushan.extreme-advice.com/email-configuration-in-ssrs-with-smtp-in-windows-server-2008r2/)。在订阅中选择MHTML格式。 –

+0

我已经有一个我需要发送的MHTML文档。由于我有其他要求,不希望SSRS执行此操作。需要从C#代码中完成。 – TheEdge

+0

你想附加或嵌入邮件正文中的MHTML文件?我认为[this](http://www.example-code.com/csharp/loadMhtmlAndSendEmail.asp)代码可以帮助你。另外请记住,邮件中的嵌入式MHTML可以显示为未格式化,这是由于客户端邮件阻止和对MIME的支持。 –

因此,看起来.NET MailMessage并不支持这种开箱即用的方式。我发现了几种可以用于不同程度成功的方法。

MHTML - > HTML解码器

大卫本克写道:https://github.com/DavidBenko/MHTML-to-HTML-Decoding-in-C-Sharp/blob/master/MHTMLParser.cs,虽然它的作品,我无法使图像出现时,我观察所得的电子邮件。在HTML看看右边,它只是没有工作在Outlook 2010中

转换MimeKit的MimeMessage到.NET邮件

正如杰弗里指出,这是一个开始https://github.com/jstedfast/MimeKit/issues/140。我再次遇到了图像没有显示在结果信息中的问题。

使用MimeKit & MailKit

我结束了使用https://github.com/jstedfast/MimeKit来完成这项工作。这可以实现如下:

MimeMessage messageMimeKit = MimeMessage.Load(Request.MapPath("~/Blah/378921.mht")); 

    messageMimeKit.From.Add(new MailboxAddress("Dev", "[email protected]")); 
    messageMimeKit.To.Add(new MailboxAddress("Homer", "[email protected]")); 
    messageMimeKit.Subject = "Another subject line"; 
    using (var client = new MailKit.Net.Smtp.SmtpClient()) 
    { 
     client.Connect("smtp.gmail.com", 465, true); 
     client.Authenticate("[email protected]", "*****"); 
     client.Send(messageMimeKit); 
     client.Disconnect(true); 
    }