C# 如何在电子邮件中嵌入图像而不是外部文件?
所以我知道这是一个被广泛讨论的话题,尽管如此,在我读过的所有帖子中,我还没有找到解决方案,因此有了新的话题 所以基本上我有一个c winform应用程序来创建团队活动的报告 当然我想邮寄这些报告 问题是我读过/尝试过的所有讨论嵌入外部文件bmp、gif、jpeg中的图像的线程 我一直试图做的是嵌入运行时图形图表组件中的图像 例如,我可以做的是将图表捕获到bmp,并将其流式传输到windows剪贴板,然后粘贴到邮件正文中 当然,目标是自动实现这一点,但我找不到任何地方如何在邮件正文中包含我的运行时图表 我遇到的主要问题是,每当我尝试向链接的资源项添加流时,我都会遇到令人沮丧的GDI++错误 这是我的最新测试:C# 如何在电子邮件中嵌入图像而不是外部文件?,c#,image,email,embed,attachment,C#,Image,Email,Embed,Attachment,所以我知道这是一个被广泛讨论的话题,尽管如此,在我读过的所有帖子中,我还没有找到解决方案,因此有了新的话题 所以基本上我有一个c winform应用程序来创建团队活动的报告 当然我想邮寄这些报告 问题是我读过/尝试过的所有讨论嵌入外部文件bmp、gif、jpeg中的图像的线程 我一直试图做的是嵌入运行时图形图表组件中的图像 例如,我可以做的是将图表捕获到bmp,并将其流式传输到windows剪贴板,然后粘贴到邮件正文中 当然,目标是自动实现这一点,但我找不到任何地方如何在邮件正文中包含我的运行时
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);
谢谢大家的帮助
疯狂的据我所知,在电子邮件中嵌入图像的唯一方法是Base64编码。-它还链接到其他资源
这是针对php的,但也可能有帮助。请看下面的答案: