为什么图像不显示在Gmail邮件中的HTML邮件?
问题描述:
我试图在HTML邮件中添加图像。当我保存它显示的是体为HTML文件,但是当我发送HTML体作为发电子邮件,通过的GMail,图像不显示。谁能告诉我原因?为什么图像不显示在Gmail邮件中的HTML邮件?
我设置图像的这样来源:
var image = body.GetElementsByTagName("img");
string imageAttachmentPath = Path.Combine(Globals.NotificationTemplatesPath, "Header.png");
foreach (XmlElement img in image)
{
img.SetAttribute("src", imageAttachmentPath);
break;
}
//thats the method in which i am sending email.
public static void SendMessageViaEmailService(string from,
string sendTo,
string carbonCopy,
string blindCarbonCopy,
string subject,
string body,
bool isBodyHtml,
string imageAttachmentPath,
Hashtable images,
List<string> attachment,
string title = null,
string embeddedImages = null)
{
Attachment image = new Attachment(imageAttachmentPath);
MailMessage msg = new MailMessage();
msg.IsBodyHtml = true; // email body will allow html elements
msg.From = new MailAddress(from, "Admin"); // setting the Sender Email ID
msg.To.Add(sendTo); // adding the Recipient Email ID
if (!string.IsNullOrEmpty(carbonCopy)) // add CC email ids if supplied.
msg.CC.Add(carbonCopy);
msg.Subject = subject; //setting email subject and body
msg.Body = body;
msg.Attachments.Add(image);
//create a Smtp Mail which will automatically get the smtp server details
//from web.config mailSettings section
SmtpClient SmtpMail = new SmtpClient();
SmtpMail.Host = "smtp.gmail.com";
SmtpMail.Port = 587;
SmtpMail.EnableSsl = true;
SmtpMail.UseDefaultCredentials = false;
SmtpMail.Credentials = new System.Net.NetworkCredential(from, "password");
// sending the message.
try
{
SmtpMail.Send(msg);
}
catch (Exception ex) { }
}
答
更可能的是你的形象SRC属性不是绝对的,公帑可访问的URI。任何文件系统或本地URI都不会在电子邮件中显示图像。
具体而言,这些都不行:
c://test.png
test.png
/folder/test.png
http://localhost/test.png
http://internaldomain/test.png
确保您的图片网址
- 绝对的(即使用类似
http://
协议) - 包括完整路径图像
- 该域名是公共领域
+0
你可以使用LinkedResource。它确实有效 – Dan 2015-09-29 19:04:19
答
从this thread尝试的代码部分:
// creating the attachment
System.Net.Mail.Attachment inline = new System.Net.Mail.Attachment(@"c:\\test.png");
inline.ContentDisposition.Inline = true;
// sending the message
MailMessage email = new MailMessage();
// set the information of the message (subject, body ecc...)
// send the message
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("localhost");
smtp.Send(email);
email.Dispose();
欢迎来到Stack Overflow。如果我们也看到你的工作会更好。你有没有尝试设置你的['IsBodyHtml'属性](http://msdn.microsoft.com/en-us/library/system.net.mail.mailmessage.isbodyhtml.aspx)?请阅读[常见问题],[问]和[帮助]作为开始.. – 2014-10-22 07:16:40
请发表您的代码 – 2014-10-22 07:20:53
@VinodVT我已发布代码 – Fahad 2014-10-22 07:29:57