我将从Properties.Resources中的图像嵌入到MailMessage中时遇到了一些困难,目前图像未显示在我收到的电子邮件中.
我已经成功地从目录位置嵌入了图像,但是如果图像来自内存/应用程序则更喜欢.
这是我正在做的简化版本.
Bitmap b = new Bitmap(Properties.Resources.companyLogo);
MemoryStream logo = new MemoryStream();
b.Save(logo, ImageFormat.Jpeg);
MailMessage newEmail = new MailMessage(from, to);
newEmail.Subject = subject;
newEmail.IsBodyHtml = true;
LinkedResource footerImg = new LinkedResource(logo, "image/jpeg");
footerImg.ContentId = "companyLogo";
AlternateView foot= AlternateView.CreateAlternateViewFromString(body + "<p> <img src=cid:companyLogo /> </p>", null, "text/html");
foot.LinkedResources.Add(footerImg);
newEmail.AlternateViews.Add(foot);
SmtpClient server = new SmtpClient(host, port);
server.Send(newEmail);
Run Code Online (Sandbox Code Playgroud)
flu*_*luf 25
好的,我已经解决了这个问题.
我没有使用BitMap保存方法,而是将BitMap转换为Byte []并为内存流提供Byte []
不工作 :
b.Save(logo, ImageFormat.Jpeg);
Run Code Online (Sandbox Code Playgroud)
工作:
Bitmap b = new Bitmap(Properties.Resources.companyLogo);
ImageConverter ic = new ImageConverter();
Byte [] ba = (Byte[]) ic.ConvertTo(b,typeof(Byte[]));
MemoryStream logo = new MemoryStream(ba);
Run Code Online (Sandbox Code Playgroud)
我认为它与Bitmap.Save方法有关,在MSDN lib中它提到流必须有0的偏移量.
Jer*_*emy 20
Bitmap b = new Bitmap(Properties.Resources.companyLogo);
MemoryStream logo = new MemoryStream();
b.Save(logo, ImageFormat.Jpeg);
Run Code Online (Sandbox Code Playgroud)
执行保存后,您必须"寻找"MemoryStream回到开始.
logo.Position = 0;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25934 次 |
| 最近记录: |