我如何从包含图形的c#发送电子邮件作为dygraph js?

时间:2016-05-10 15:26:01

标签: c# email-client razorengine

我需要从c#代码发送电子邮件报告。此电子邮件包含图像之类的图形。有没有办法在c#中做到这一点? dygraph graphic must be included in the email

2 个答案:

答案 0 :(得分:1)

您可以使用MailMessage类构建电子邮件,使用SmtpClient类来发送邮件。您需要适当地设置SmtpClient *。

要嵌入图片,您需要将电子邮件设置为HTML,并包含带嵌入图片的备用视图:

var mail = new MailMessage();
mail.IsBodyHtml = true;

var inline = new LinkedResource(@"C:\path\to\your\image.png");
inline.ContentId = Guid.NewGuid().ToString();
var htmlBody = @"<img src='cid:" + inline.ContentId + @"'/>"; // Include whatever other content in the html body here.
var alternateView = AlternateView.CreateAlternateViewFromString(htmlBody, null, MediaTypeNames.Text.Html);
alternateView.LinkedResources.Add(inline);

mail.AlternateViews.Add(alternateView);

然后设置to / from / subject字段并使用SmtpClient.Send Method(或SendAsync)发送电子邮件。

*来自MSDN文档:

要使用SmtpClient构造和发送电子邮件,您必须指定以下信息:

  • 用于发送电子邮件的SMTP主机服务器。请参阅主机和端口属性。

  • 如果SMTP服务器需要,则进行身份验证凭据。请参阅凭据属性。

  • 发件人的电子邮件地址。请参阅带有from参数的Send和SendAsync方法。另请参阅MailMessage.From属性。

  • 收件人的电子邮件地址。请参阅采用收件人参数的Send和SendAsync方法。另请参阅MailMessage.To属性。

  • 消息内容。请参阅带有body参数的Send和SendAsync方法。另请参阅MailMessage.Body属性。

答案 1 :(得分:0)

Dotnet包含MailMessage类,其IsBodyHtml属性。您可以使用文本字符串构建电子邮件。在文本字符串中,使用指向图形的<img ..>标记编写HTML。

您可以使用data: URI scheme将图像的数据流直接插入到图像标记中,标记不指向外部图像。看起来像这样。

img src="data:image/png;base64,iVBORw0KG==" />

您可以按照此处的建议执行此操作。 Converting image into data:image/png;base64 for web page disaplay