我使用C#在运行时将Html文档(包含图像)作为电子邮件附件发送 但是当我检查收到的电子邮件时,发送的html文档不包含任何图像。
请指导我如何确保html文档与图像一起发送。
MailMessage objMailMessage = new MailMessage();
objMailMessage.From = new MailAddress("aa@gmail.com");
string[] emailIds = objReportRequest.EmailIds.Split(',');
foreach (string emailId in emailIds)
{
objMailMessage.To.Add(new MailAddress(emailId));
}
objMailMessage.IsBodyHtml = true;
objMailMessage.Body = messageBody;
objMailMessage.Subject = "Test Service";
objMailMessage.Attachments.Add(new Attachment(filePath));
SmtpClient objSmtpClient = new SmtpClient("smtp.gmail.com");
objSmtpClient.Credentials = new NetworkCredential("aaa@gmail.com", "aaa");
objSmtpClient.EnableSsl = true;
objSmtpClient.Send(objMailMessage);
我收到html doc作为电子邮件附件,但不显示图片。
谢谢!
答案 0 :(得分:4)
AlternateView htmlView = AlternateView.CreateAlternateViewFromString(message, null, "text/html");
LinkedResource image = new LinkedResource(@".\images\sample.jpg");
image.ContentId = "Image";
message = "<img src=cid:Image>" + message;
htmlView = AlternateView.CreateAlternateViewFromString(message, null, "text/html");
htmlView.LinkedResources.Add(image);
您是如何将图像放入HTML电子邮件中的,根据MSDN的html附件使用相同的对象,但我没有专门执行此操作的代码。
答案 1 :(得分:3)
答案 2 :(得分:0)
如果HTML作为附件发送,我认为您不能在其中嵌入图像。毕竟,HTML是文本。
如果图像是静态的,我认为最好的方法是通过绝对路径引用图像,并将图像托管在您的一台服务器上。
答案 3 :(得分:0)
由于您将HTML 作为附件发送而不是作为正文,因此没有一种简单的方法可以执行此操作。
以下是一些选项:
最好的方法是实际构建MHT(或MHTML)文档,并将其作为附件发送。
您可能希望使用HTML填充电子邮件正文,然后嵌入图片,而不是将HTML添加为附件。
另一种选择是简单地构建电子邮件,将图像嵌入电子邮件中,然后将电子邮件添加为附件。
如果收件人将使用更新的浏览器,您可以使用数据URL方案将图像直接嵌入到标记中。 http://en.wikipedia.org/wiki/Data_URI_scheme
与另一张建议的海报一样,在标签中使用绝对链接,并在某处托管图像。