将PNG图像嵌入到WPF中的电子邮件中
Embedding PNG images into an email in WPF
我在将 PNG 渲染为电子邮件中的嵌入图像时遇到问题。我要做的就是在电子邮件底部嵌入公司徽标。
图片是我项目中的资源。
这是我用来生成电子邮件正文和备用视图的代码:
string body =
@"<html><body><b>Please do not respond to this message</b><br/><br/>" +
"<img src='cid:companyLogo' width='100px'/></body></html>";
Bitmap logo = new Bitmap(Properties.Resources.logo_dark_background);
MemoryStream logoStream = new MemoryStream();
logo.Save(logoStream, ImageFormat.Jpeg);
LinkedResource companyLogo = new LinkedResource(logoStream);
companyLogo.ContentId = "companyLogo";
companyLogo.ContentType = new ContentType("image/jpg");
AlternateView av = AlternateView.CreateAlternateViewFromString(
body, null, MediaTypeNames.Text.Html);
av.LinkedResources.Add(companyLogo);
message.AlternateViews.Add(av);
请注意 'message' 是之前创建的 MailMessage
对象。
问题是您的流的位置在保存徽标后位于流的末尾。
在 logo.Save()
调用之后,您可以立即设置 logoStream.Position = 0
将其重置为开头。
另外不要忘记处理您的流,很可能在 using
语句中。
我在将 PNG 渲染为电子邮件中的嵌入图像时遇到问题。我要做的就是在电子邮件底部嵌入公司徽标。
图片是我项目中的资源。
这是我用来生成电子邮件正文和备用视图的代码:
string body =
@"<html><body><b>Please do not respond to this message</b><br/><br/>" +
"<img src='cid:companyLogo' width='100px'/></body></html>";
Bitmap logo = new Bitmap(Properties.Resources.logo_dark_background);
MemoryStream logoStream = new MemoryStream();
logo.Save(logoStream, ImageFormat.Jpeg);
LinkedResource companyLogo = new LinkedResource(logoStream);
companyLogo.ContentId = "companyLogo";
companyLogo.ContentType = new ContentType("image/jpg");
AlternateView av = AlternateView.CreateAlternateViewFromString(
body, null, MediaTypeNames.Text.Html);
av.LinkedResources.Add(companyLogo);
message.AlternateViews.Add(av);
请注意 'message' 是之前创建的 MailMessage
对象。
问题是您的流的位置在保存徽标后位于流的末尾。
在 logo.Save()
调用之后,您可以立即设置 logoStream.Position = 0
将其重置为开头。
另外不要忘记处理您的流,很可能在 using
语句中。