作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我在将 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);
最佳答案
好的,我已经解决了这个问题。
我没有使用 BitMap 保存方法,而是将 BitMap 转换为 Byte[] 并将内存流指定为 Byte[]
没用:
b.Save(logo, ImageFormat.Jpeg);
成功了:
Bitmap b = new Bitmap(Properties.Resources.companyLogo);
ImageConverter ic = new ImageConverter();
Byte [] ba = (Byte[]) ic.ConvertTo(b,typeof(Byte[]));
MemoryStream logo = new MemoryStream(ba);
我认为它与 Bitmap.Save 方法有关,在 MSDN 库中它提到流的偏移量必须为 0。
关于c# - 如何将图像流嵌入到 MailMessage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6261956/
我是一名优秀的程序员,十分优秀!