系统相关
首页 > 系统相关> > c# – 如何在Windows应用程序中将多个图像附加到电子邮件正文中?

c# – 如何在Windows应用程序中将多个图像附加到电子邮件正文中?

作者:互联网

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

使用了tinymce插入图像功能,用于在电子邮件正文中添加图像,但是当电子邮件发送给用户时.图像不会出现在用户电子邮件正文中.

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

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

哪个无法加载图片.

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

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

解决方法:

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

标签:c,image,email-attachments
来源: https://codeday.me/bug/20190722/1500442.html