2015-10-06 145 views
1

有沒有人有任何代碼發送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的支持。 –

回答

1

因此,看起來.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); 
    }