5

我有一个应用程序可以发送带有嵌入图像的 HTML 格式的电子邮件。该电子邮件在许多不同的桌面/网络客户端上看起来都很完美。在支持 HTML 电子邮件的手机上查看电子邮件时(在 iPhone、WinMo 6.1 上测试),图像显示为红色的“X”。所有其他 HTML 正在正确显示。需要明确的是,这个问题只发生在移动客户端上,而不是桌面客户端上。

嵌入图像的代码运行良好,我认为它没有任何问题,但我在下面提供了一些快速示例代码,以防万一:

MailMessage mail = new MailMessage();
            mail.To.Add("123@myemail.com");
            mail.From = new MailAddress("456@ myemail.com");
            mail.Subject = "Image sample - fails in mobile clients";
            string Body = "Sample email text<img src=\"cid:imageId\" />";

            AlternateView htmlView = AlternateView.CreateAlternateViewFromString(Body, null, "text/html");
            LinkedResource lr = new LinkedResource("myImage.jpg");
            lr.ContentId = "imageId";
            htmlView.LinkedResources.Add(lr);

            mail.AlternateViews.Add(htmlView);
            SmtpClient smtpClient = new SmtpClient();
            smtpClient.Send(mail);

有谁知道为什么嵌入式图像不显示在移动客户端上?更好的是,我怎样才能让图像正确显示?

编辑:如果 Outlook 2007(及更高版本)发送带有图像的电子邮件,则图像在移动客户端和桌面客户端中正确显示。如果发送带有嵌入图像的 HTML 格式的电子邮件,则图像不会在移动客户端中正确显示,但在桌面客户端中会正确显示。

Outlook 如何能够发送带有自信显示图像的电子邮件,但如果通过 Web 应用程序(使用嵌入式图像)发送,移动客户端会阻止图像。两者有什么区别?

4

4 回答 4

3

终于找到了这个问题的答案:LinkedResource 的可选ContentType 没有设置。桌面客户端可以弄清楚

来自MSDN

ContentType 类中的信息用于描述电子邮件消息中包含的数据,以便显示电子邮件的软件可以以适当的方式呈现内容。ContentType 与 Attachment 类一起使用,以指定附件中的内容类型。

Outlook 能够理解附加图像的显示方式,但移动客户端需要更多信息。

于 2010-03-18T13:13:23.913 回答
2

正如其他用户所说,这是一个偏好问题和一个已知错误。

艾莉森,你确定图像二进制文件进入了手机吗?正如其他用户所说,偏好问题可能是一个默认设置,以减少无意中将大量图像下载到数据计划有限的移动客户端。

关于已知问题,请参见

http://www.google.com/support/forum/p/Google+Mobile/thread?tid=6470e77d94f0315c&hl=en

谢谢,祝你好运...

编辑:哇......这是一个老问题;)

于 2010-03-12T01:07:26.807 回答
0

最常见的原因是智能手机上的设置被设置为默认阻止下载电子邮件图像。在大多数手机上,默认行为是他们必须手动下载图像,通常是通过电子邮件客户端中的按钮或设置,如果他们想查看附加到该特定电子邮件的图像。这与我在台式机和笔记本电脑 Outlook 设置中使用的设置相同。对于大多数电子邮件客户端来说,这是一种垃圾邮件保护措施。对于手机来说,这也是为了节省不必要的使用带宽。您永远不应该指望客户总是默认看到图像。

于 2009-10-05T18:37:56.243 回答
0

这里的好答案:

string attachmentPath = Environment.CurrentDirectory + @"\test.png";
Attachment inline = new Attachment(attachmentPath);
inline.ContentDisposition.Inline = true;
inline.ContentDisposition.DispositionType = DispositionTypeNames.Inline;
inline.ContentId = contentID;
inline.ContentType.MediaType = "image/png";
inline.ContentType.Name = Path.GetFileName(attachmentPath);

message.Attachments.Add(inline);

我刚刚测试了它,它就像一个魅力。当然,您需要确定您的文件类型。这是媒体类型的列表:

http://www.fileformat.info/info/mimetype/image/index.htm

于 2016-12-22T14:42:25.867 回答