如何在电子邮件中嵌入图像而不是外部文件?

时间:2013-12-25 14:59:32

标签: c# image email embed attachment

所以我知道这是一个被广泛讨论的主题,尽管如此,在我读过的所有主题中,我还没有找到解决方案,因此新主题

所以基本上我有一个c#winform应用程序来创建我团队活动的报告 当然我想通过邮件发送这些报告

事情是我阅读/试过的所有线程讨论从外部文件嵌入图像(bmp,gif,jpeg)

我一直试图做的是从运行时图形图表组件中嵌入图像

例如我可以做的是将图表捕获到bmp并将其流式传输到Windows剪贴板然后粘贴到邮件正文中

当然,目标是自动获取,但我无法在任何地方找到如何将我的运行时图表包含在邮件正文中。

我遇到的主要问题是每次我尝试将流添加到链接的资源项时我都会遇到令人沮丧的GDI ++错误

这是我最新的测试:

           string htmlBody = "<html><body><p>report</p>";

            AlternateView view = AlternateView.CreateAlternateViewFromString(htmlBody, null, MediaTypeNames.Image.Jpeg);

            foreach (ChartModuleModel item in _checkedListBox.CheckedItems)

            {

                string itemStr = item.ToString();

                MemoryStream ms = new MemoryStream();

                item.Chart().SaveImage(ms, ChartImageFormat.Jpeg);

                LinkedResource res =

                    new LinkedResource(ms, MediaTypeNames.Image.Jpeg);

                res.ContentId = itemStr;

                view.LinkedResources.Add(res);

                htmlBody += "<p>chart : " + itemStr + "</p>";

                htmlBody += "<img src=\"cid:" + itemStr + "\">";

            }



            htmlBody += "</body></html>";

            MailMessage mail = new MailMessage();

            mail.AlternateViews.Add(view);

            mail.From = new MailAddress(_mailToTextBox.Text);

            mail.To.Add(new MailAddress(_mailToTextBox.Text));

            mail.Subject = _mailSubjectTextBox.Text;



            SmtpClient client = new SmtpClient();

            client.Port = 25;

            client.Host = "smtp-goss.int.world.socgen";

            client.Send(mail);  

感谢大家的帮助,

疯狂

1 个答案:

答案 0 :(得分:0)

据我所知,在电子邮件中嵌入图像的唯一方法是使用Base64编码。 This post will get you started - 它还链接到其他资源。

这个SO thread适用于php,但也可以提供帮助。