如何在 windows 应用程序的电子邮件正文中附加多张图片?
How to attach multi images in email body in windows application?
我正在处理 windows 电子邮件发送应用程序。
对于文本格式,我将 tinymce 编辑器用于电子邮件正文。
使用 tinymce 插入图像功能在电子邮件正文中添加图像,但是当电子邮件发送给用户时。图片不会出现在用户电子邮件正文中。
然后我尝试如下手动添加base64图像:
<img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOYAAABLCAYAAABk6PuLAAAACXBIWXMAASdHAAEnRwEEDs /'>
加载图片失败
我们可以在 tiny mce 中使用链接资源和备用视图吗?
如何加载邮件正文中的图片?
您真正需要回答的问题是 "what is the best way to insert an image in an email"。这是一个非常广泛的话题,已经回答了很多次 - 稍微研究一下应该会引导您找到最常见的方法及其 pros/cons:
https://sendgrid.com/blog/embedding-images-emails-facts/
https://www.campaignmonitor.com/blog/how-to/2008/08/embedding-images-in-email/
https://www.quora.com/Whats-the-best-practices-for-embedding-images-into-HTML-emails
Tiny MCE 只是一个 HTML 编辑器,而不是可用于创建电子邮件备用视图的工具。
此外,所有电子邮件客户端都不支持内联图像(数据 URL)。
备用视图是确保所有电子邮件客户端能够以预期方式显示您的内容的唯一方法。
创建链接资源字典:
Dictionary<string, byte[]> linkedResources = new Dictionary<string, byte[]>();
linkedResources.Add("img1", byte[]);
创建发送电子邮件的常用方法:
public bool SendEmail(Dictionary<string, byte[]> linkedResources)
{
using (SmtpClient mailSender = new SmtpClient("SmtpHost", 22))
{
MailMessage emailMessage = new MailMessage()
{
Subject = "Subject",
SubjectEncoding = Encoding.ASCII,
IsBodyHtml = true,
Body = "Message",
BodyEncoding = Encoding.ASCII,
From = new MailAddress("Sender@domain.com")
};
emailMessage.BodyEncoding = Encoding.ASCII;
emailMessage.IsBodyHtml = true;
AlternateView av = AlternateView.CreateAlternateViewFromString(emailMessage.Body, null, MediaTypeNames.Text.Html);
foreach (var item in linkedResources)
{
MemoryStream streamBitmap = new MemoryStream(item.Value);
var linkedResource = new LinkedResource(streamBitmap, MediaTypeNames.Image.Jpeg);
linkedResource.ContentId = item.Key;
av.LinkedResources.Add(linkedResource);
}
emailMessage.AlternateViews.Add(av);
mailSender.Send(emailMessage);
return true;
}
}
对此没有最佳解决方案,您可以嵌入图像或将它们作为文件附加,或者只是将它们作为 links 发送。
这取决于您的要求。它实际上使图像标签和 link 它们到我的服务器以获得更多分析,就像用户通过加载图像打开电子邮件一样抛出一个处理程序,当用户打开电子邮件时处理程序接收日志,我可以知道有多少用户打开了该电子邮件等等。
发送网格非常适合发送电子邮件并从中获取分析,因为它几乎跟踪与您的电子邮件相关的所有内容,您应该使用发送网格来避免垃圾邮件过滤器
根据我的经验,解决此问题的唯一方法是将该图像存储在可公开访问的服务器上,然后将 img 标签的 src 属性指向该 url。您必须了解电子邮件中使用的 HTML 严格限制为常规 HTML.
我正在处理 windows 电子邮件发送应用程序。 对于文本格式,我将 tinymce 编辑器用于电子邮件正文。
使用 tinymce 插入图像功能在电子邮件正文中添加图像,但是当电子邮件发送给用户时。图片不会出现在用户电子邮件正文中。
然后我尝试如下手动添加base64图像:
<img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOYAAABLCAYAAABk6PuLAAAACXBIWXMAASdHAAEnRwEEDs /'>
加载图片失败
我们可以在 tiny mce 中使用链接资源和备用视图吗?
如何加载邮件正文中的图片?
您真正需要回答的问题是 "what is the best way to insert an image in an email"。这是一个非常广泛的话题,已经回答了很多次 - 稍微研究一下应该会引导您找到最常见的方法及其 pros/cons:
https://sendgrid.com/blog/embedding-images-emails-facts/ https://www.campaignmonitor.com/blog/how-to/2008/08/embedding-images-in-email/ https://www.quora.com/Whats-the-best-practices-for-embedding-images-into-HTML-emails
Tiny MCE 只是一个 HTML 编辑器,而不是可用于创建电子邮件备用视图的工具。
此外,所有电子邮件客户端都不支持内联图像(数据 URL)。
备用视图是确保所有电子邮件客户端能够以预期方式显示您的内容的唯一方法。
创建链接资源字典:
Dictionary<string, byte[]> linkedResources = new Dictionary<string, byte[]>();
linkedResources.Add("img1", byte[]);
创建发送电子邮件的常用方法:
public bool SendEmail(Dictionary<string, byte[]> linkedResources)
{
using (SmtpClient mailSender = new SmtpClient("SmtpHost", 22))
{
MailMessage emailMessage = new MailMessage()
{
Subject = "Subject",
SubjectEncoding = Encoding.ASCII,
IsBodyHtml = true,
Body = "Message",
BodyEncoding = Encoding.ASCII,
From = new MailAddress("Sender@domain.com")
};
emailMessage.BodyEncoding = Encoding.ASCII;
emailMessage.IsBodyHtml = true;
AlternateView av = AlternateView.CreateAlternateViewFromString(emailMessage.Body, null, MediaTypeNames.Text.Html);
foreach (var item in linkedResources)
{
MemoryStream streamBitmap = new MemoryStream(item.Value);
var linkedResource = new LinkedResource(streamBitmap, MediaTypeNames.Image.Jpeg);
linkedResource.ContentId = item.Key;
av.LinkedResources.Add(linkedResource);
}
emailMessage.AlternateViews.Add(av);
mailSender.Send(emailMessage);
return true;
}
}
对此没有最佳解决方案,您可以嵌入图像或将它们作为文件附加,或者只是将它们作为 links 发送。
这取决于您的要求。它实际上使图像标签和 link 它们到我的服务器以获得更多分析,就像用户通过加载图像打开电子邮件一样抛出一个处理程序,当用户打开电子邮件时处理程序接收日志,我可以知道有多少用户打开了该电子邮件等等。
发送网格非常适合发送电子邮件并从中获取分析,因为它几乎跟踪与您的电子邮件相关的所有内容,您应该使用发送网格来避免垃圾邮件过滤器
根据我的经验,解决此问题的唯一方法是将该图像存储在可公开访问的服务器上,然后将 img 标签的 src 属性指向该 url。您必须了解电子邮件中使用的 HTML 严格限制为常规 HTML.