C#使用CDOSYS发送包含嵌入图像的电子邮件

时间:2017-11-17 14:30:55

标签: c# email html-agility-pack smtpclient

我正在尝试发送包含嵌入图片的电子邮件。这就是我正在做的......

我有一个tinymce文本编辑器,用户可以选择带有文本的图像。电子邮件发送成功(使用CDOSYS - 电子邮件提供商是zohomail),但电子邮件中没有显示任何图像。

任何人都能告诉我在电子邮件中显示图像需要做什么?

我用来将图像标签转换为链接资源的关键功能如下(使用敏捷包 - Install-Package HtmlAgilityPack -Version 1.6.5):

public string ConvertToHtmlDocument(string originalText)
    {
        HtmlDocument document = new HtmlDocument();
        document.LoadHtml(originalText);

        document.DocumentNode.Descendants("img").ToList();

        foreach(var d in document.DocumentNode.Descendants("img").ToList())
        {
            string base64String = "";
            string currentSrcValue = d.GetAttributeValue("src", null);
            string mimeType = MimeMapping.GetMimeMapping(Server.MapPath(currentSrcValue));

            using (Image image = Image.FromFile(Server.MapPath(currentSrcValue)))
            {
                using (MemoryStream m = new MemoryStream())
                {
                    image.Save(m, image.RawFormat);
                    byte[] imageBytes = m.ToArray();

                    // Convert byte[] to Base64 String
                    base64String = Convert.ToBase64String(imageBytes);
                }
            }

            //currentSrcValue = currentSrcValue.Split(',')[1];//Base64 part of string
            byte[] imageData = Convert.FromBase64String(base64String);
            string contentId = Guid.NewGuid().ToString();
            LinkedResource inline = new LinkedResource(new MemoryStream(imageData), mimeType);
            inline.ContentId = contentId;
            inline.TransferEncoding = TransferEncoding.Base64;

            d.SetAttributeValue("src", "cid:" + inline.ContentId);
        }

        return document.DocumentNode.OuterHtml;
    }

[Inspect Element] [No Image]

0 个答案:

没有答案