如何在Windows应用程序中的电子邮件正文中附加多个图像?

时间:2018-03-16 10:43:01

标签: c# image email-attachments

我正在使用Windows应用程序发送电子邮件。 对于文本格式,我使用了电子邮件正文的tinymce编辑器。

使用了tinymce插入图像功能,用于在电子邮件正文中添加图像,但是当电子邮件发送给用户时。图片未显示在用户电子邮件正文中。

然后我尝试手动添加base64图像,如下所示:

<img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOYAAABLCAYAAABk6PuLAAAACXBIWXMAASdHAAEnRwEEDs /'>

无法加载图片。

我们可以在微小的mce中使用链接资源和备用视图吗?

如何在电子邮件正文中加载图片?

4 个答案:

答案 0 :(得分:5)

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;
 }
}

答案 1 :(得分:4)

您需要回答的真正问题是“在电子邮件中插入图片的最佳方式是什么”。这是一个非常广泛的主题,已经多次回答 - 一点研究应该引导您采用最常见的方法及其优缺点:

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

答案 2 :(得分:0)

没有最佳解决方案,您可以嵌入图像或将其作为文件附加或仅将其作为链接发送。

这取决于您的要求。它实际上制作图像标签并将它们链接到我的服务器以获得更多分析,例如用户通过加载图像抛出处理程序打开电子邮件,处理程序在用户打开电子邮件时接收日志,我可以知道有多少用户打开了该电子邮件等等。

发送网格非常适合发送电子邮件并从中获取分析,因为它几乎跟踪与您的电子邮件相关的所有内容,您应该使用发送网格来避免垃圾邮件过滤器

答案 3 :(得分:0)

根据我的经验,解决此问题的唯一方法是将该图像存储在可公开访问的服务器上,然后将img标记src属性指向该URL。您必须了解,电子邮件中使用的HTML严格限制为常规HTML。