首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >发送mhtml电子邮件- C#

发送mhtml电子邮件- C#
EN

Stack Overflow用户
提问于 2010-01-20 19:24:04
回答 3查看 4.8K关注 0票数 16

我有一个要求发送包含文本和图像的电子邮件。

因此,我有一个包含需要通过电子邮件发送的内容的.mhtml文件。

我使用的是Chilkat,但在Outlook2007中,它将mhtml文件显示为不同的附件(html+images)。

谁能给我推荐一些发送mhtml电子邮件的其他组件。

仅供参考,我使用的是.Net 3.5

另外,我不想在发送之前将图像保存在服务器上。

谢谢!

EN

回答 3

Stack Overflow用户

发布于 2010-01-20 19:55:30

下面是一个使用图像作为嵌入式资源的示例。

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);
}
}
票数 4
EN

Stack Overflow用户

发布于 2012-12-18 18:52:30

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("~")

我不确定最后一行,因为我是直接在这里写的。您只需使用它并祝您好运;-)

票数 2
EN

Stack Overflow用户

发布于 2012-12-19 21:38:24

您需要将MIME类型显式设置为multipart/related。更改MailMessage.Body,使其包含MHTML文件的内容。最后,向MailMessage.AlternateViews集合添加一个新项以定义正确的MIME类型。以下来自MSDN的链接有一个很好的设置示例:

MailMessage.AlternateViews Property

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2100944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档