3

我正在尝试从 C# 发送带有嵌入图像的电子邮件。当我在 Gmail 中收到这封电子邮件时,嵌入的图像没有正确的名称 - 相反,它们显示为“noname” - 请参见下面的屏幕截图

以下是我将图像嵌入电子邮件的方式:

foreach (var objimage in images)
{
    var ms = new MemoryStream(objimage.ImageBytes);
    var lr = new LinkedResource(ms, MediaTypeNames.Image.Jpeg);
    lr.ContentId = "Photo_" + (++i).ToString();
    lstImages.Add(lr);

    body += string.Format("<img src='cid:{0}' alt='{1}' name='{1}' title='{1}' />", lr.ContentId, objimage.ImageName);
}

看这个问题:如何阻止电子邮件中的嵌入图像被 GMail 显示为附件?- 并比较我的电子邮件正文,看起来我需要将 Content-Type 字段设置为

内容类型:图片/jpeg;name="我的图片名称.png" "

而目前我的电子邮件看起来像这样:

----boundary_3_d581d04c-d294-4dc5-971e-785a678fbd12
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-ID: <Photo_1>

知道如何使用 C# 和 System.Mail 做到这一点吗?

谢谢。

4

3 回答 3

10

好吧,答案很简单:

lr.ContentType.Name = "my image name.jpg";

学分发送带有嵌入图像的 html 电子邮件和与 C# 中的附件具有相同图像的纯文本

于 2012-04-11T14:50:30.293 回答
0

如果图像没有出现在 IE 中,请使用以下 linkedResource = new LinkedResource(src, MediaTypeNames.Image.Jpeg); //abbukmailer.com

于 2012-12-08T11:53:30.033 回答
-2

对于附件

Content-Disposition: attachment; fileName=<Your file name>

关于 RFC

对于链接资源必须是相似的

于 2012-04-11T14:54:31.390 回答