簡體   English   中英

發送mhtml電子郵件 - C#

[英]Sending mhtml emails - C#

我要求發送包含文本和圖像的電子郵件。
所以,我有.mhtml文件,其中包含需要通過電子郵件發送的內容。

我正在使用Chilkat,但在Outlook 2007中它將mhtml文件顯示為不同的附件(html +圖像)。

任何人都可以建議我發送mhtml電子郵件的其他組件。
僅供參考,我使用的是.Net 3.5

另外,我不希望在發送之前將圖像保存在服務器上。

謝謝!

我使用普通的舊本機MailMessage類。 之前的回答可以指出正確的方向

編輯:我前段時間構建了一個類似的代碼,它捕獲外部HTML頁面,解析它的內容,獲取所有外部內容(css,圖像等)並通過電子郵件發送,而不保存任何磁盤。

以下是使用圖像作為嵌入資源的示例。

MailMessage message = new MailMessage();
message.From = new MailAddress(fromEmailAddress);
message.To.Add(toEmailAddress);
message.Subject = "Test Email";
message.Body = "body text\nblah\nblah";

string html = "<body><h1>html email</h1><img src=\"cid:Pic1\" /><hr />" + message.Body.Replace(Environment.NewLine, "<br />") + "</body>";
AlternateView alternate = AlternateView.CreateAlternateViewFromString(html, null, MediaTypeNames.Text.Html);
message.AlternateViews.Add(alternate);

Assembly assembly = Assembly.GetExecutingAssembly();
using (Stream stream = assembly.GetManifestResourceStream("SendEmailWithEmbeddedImage.myimage.gif")) {
    LinkedResource picture = new LinkedResource(stream, MediaTypeNames.Image.Gif);

    picture.ContentId = "pic1"; // a unique ID 
    alternate.LinkedResources.Add(picture);

    SmtpClient s = new SmtpClient();
    s.Host = emailHost;
    s.Port = emailPort;
    s.Credentials = new NetworkCredential(emailUser, emailPassword);
    s.UseDefaultCredentials = false;

    s.Send(message);
}
}
System.Net would be the one that you are looking for.<br/>
MailMessage is used to compose new mail.<br/>
SMTPClient is used to send mail.
NetworkCredentials would be used to attach username and password for making request to sending mail.


來你的問題如何添加圖像。
您需要為MailMessage設置isHtml=true
由於你想在html中發送郵件相對路徑不會像../directory/imagename.formate那樣工作
在這種情況下,您需要提供websiteUrl/directory/imagename.formate的圖像位置的完整路徑
要動態獲取完整的Url,您可以像這樣使用Request.Uri.GetLeftParth(URIPartial.Authority)+VitrtualToAbsolute.getAbsolute("~")

因為我直接寫在這里,所以我不確定最后一行。 你只需要使用它並祝你好運;-)

您需要將MIME類型顯式設置為multipart/related 更改MailMessage.Body以在其中包含MHTML文件的內容。 最后,在MailMessage.AlternateViews集合中添加一個新項,以定義正確的MIME類型。 MSDN的以下鏈接有一個非常好的示例如何設置它:

MailMessage.AlternateViews屬性

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM