我正在编写一个触发电子邮件的Windows服务。也可以使用相同的代码从Windows应用程序触发该功能。
我们触发的电子邮件应该是带有徽标的签名,该徽标位于资源文件中。电子邮件被触发正常,但图像没有显示,但图像的占位符是。这是我正在使用的代码:
![try
{
Bitmap imgAttachment = Project.Shared.Properties.Resources.Image1;
using (MemoryStream mstream = new MemoryStream())
{
ContentType type = new ContentType()
{
MediaType = MediaTypeNames.Image.Jpeg,
Name = "attachment"
};
imgAttachment.Save(mstream, ImageFormat.Jpeg);
Attachment sigAttachment = new Attachment(mstream, type);
string ContentId = "imagelogo";
sigAttachment.ContentId = ContentId;
sigAttachment.ContentDisposition.Inline = true;
sigAttachment.ContentDisposition.DispositionType = DispositionTypeNames.Inline;
message.Attachments.Add(sigAttachment);
message.Body = Body + "<htm><body> <br/><br/><table border='0' cellpadding='0'
cellspacing='0' width='1000'> <tr><td> </td></tr> <tr> <td
rowspan='8' valign='top' align='left'><img alt = 'Logo' src=\"cid:" +
ContentId + "\"></td> <td width='1000' height='46' valign='top'> " +
SignatureLine1 + " </td> </tr> <tr> " + SignatureLine2 + " </tr> <tr> " +
SignatureLine3 + " </tr> <tr> " + SignatureLine4 + " </tr> </table>
</body></html>";
client.Send(message);
}
}
catch {}]
有人可以帮助我吗?我错过了什么吗?
答案 0 :(得分:0)
问题是您没有生成正确的MIME结构。 HTML主体和图像附件需要是多部分/相关的一部分,你正在编写的代码可能会创建一个多部分/混合(我实际上没有测试过你的代码,但是我已经在Mono中进行了挖掘) System.Net.Mail实现,看来你的代码会生成multipart / mixed而不是multipart / related,这就是你想要的。)
我没有很多使用System.Net.Mail的经验(这很糟糕,所以我编写了自己的库),但你需要做的是使用AlternateView
来获取HTML消息正文并将图片LinkedResource
添加到AlternateView
(请参阅AlternateView.LinkedResources
属性)。