C# 在某些计算机上,发送带有内联图像的电子邮件时显示为ATT0001
这在本地运行正常,但当我使用mac上的Outlook将它发送给公司的另一个人(同一台exchange服务器)时,它无法正常工作。取而代之的是,图像被替换为文本ATT00001,图像成为名为ATT0001的附件 首先要让它工作起来很难,下面是我使用的代码:C# 在某些计算机上,发送带有内联图像的电子邮件时显示为ATT0001,c#,email,smtp,email-attachments,C#,Email,Smtp,Email Attachments,这在本地运行正常,但当我使用mac上的Outlook将它发送给公司的另一个人(同一台exchange服务器)时,它无法正常工作。取而代之的是,图像被替换为文本ATT00001,图像成为名为ATT0001的附件 首先要让它工作起来很难,下面是我使用的代码: var assembly = Assembly.GetExecutingAssembly(); var stream = assembly.GetManifestResourceStream("EmailManager.Kitten.jpg")
var assembly = Assembly.GetExecutingAssembly();
var stream = assembly.GetManifestResourceStream("EmailManager.Kitten.jpg");
var inlineLogo = new LinkedResource(stream, "image/jpg");
inlineLogo.ContentId = "CompanyLogo";
body = body.Replace("{logourl}", string.Format("cid:{0}", inlineLogo.ContentId));
var view = AlternateView.CreateAlternateViewFromString(body, null, MediaTypeNames.Text.Html);
view.LinkedResources.Add(inlineLogo);
mailMessage.Body = body;
mailMessage.Subject = "Check out the kitty logo";
mailMessage.AlternateViews.Add(view);
mailMessage.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient(....);
smtp.Send(mailMessage);
身体只是一串东西,里面有一个
有什么建议我可以做修复或调试这个?或者,有没有一种方法可以链接到外部图像,而不必outlook在默认情况下阻止它(例如,它来自同一台服务器或类似服务器)
编辑:我读到一些关于Mac电脑希望在电子邮件末尾列出附件的信息,可能是这样吗?尽管我无法从上面看出如何指定这种行为。另外,我也不完全确定这是否是问题所在。一些电子邮件客户端足够智能,可以正确显示,而另一些客户端则要求您非常具体地使用AlternateView和LinkedResource。您是否尝试过其他电子邮件客户端,例如Windows Live Mail 尝试指定AlternateView的内容类型:
view.ContentType=newcontenttype(“text/html”)代码>
我也遇到过同样的问题,Outlook也做了同样的事情,将图像显示为未命名的附件,但是Windows Live Mail工作得非常好
快进到我们将SMTP服务器移动到Mandrill时,我们遇到了所有电子邮件客户端的相同问题,其中电子邮件显示为未命名附件,结果我们没有指定一个ContentType,它默认为“application/octet stream”我知道这个问题有点老了,但我注意到,在使用“而不是”包装源代码时会出现一些问题。
试着这样写
希望这对某人有所帮助。可能是解决方案之一
我发现,\u EmailLogo1
和
\u EmailLogo
是空的,所以需要检查它是否为空/NULL!!如果不是空/NULL,那么应该链接它,否则不要
dynamic htmlView = AlternateView.CreateAlternateViewFromString(_Body.ToString(), null, "text/html");
if (!string.IsNullOrEmpty(_EmailLogo1)) {
LinkedResource logo = new LinkedResource(_EmailLogo);
logo.ContentId = "logo2";
htmlView.LinkedResources.Add(logo);
}
if (!string.IsNullOrEmpty(_EmailLogo))
{
LinkedResource logo1 = new LinkedResource(_EmailLogo1);
logo1.ContentId = "logo1";
htmlView.LinkedResources.Add(logo1);
aMessage.AlternateViews.Add(htmlView);
}