C# Mandrill Mailchimp如何在电子邮件正文中嵌入图像

C# Mandrill Mailchimp如何在电子邮件正文中嵌入图像,c#,asp.net,mandrill,C#,Asp.net,Mandrill,我想在电子邮件页脚中嵌入一个图像。我以前使用过“LinkedResources”来处理.NET邮件客户端。(mailObject.AlternateViews.Add(footerImageLinkedResource);) 但对于Mandrill api,没有其他视图 我用Mandrill尝试的示例代码如下 MailChimp.Types.Mandrill.Messages.Message message = new MailChimp.Types.Mandrill.Messages.Mess

我想在电子邮件页脚中嵌入一个图像。我以前使用过“LinkedResources”来处理.NET邮件客户端。(
mailObject.AlternateViews.Add(footerImageLinkedResource);

但对于Mandrill api,没有其他视图

我用Mandrill尝试的示例代码如下

MailChimp.Types.Mandrill.Messages.Message message = new MailChimp.Types.Mandrill.Messages.Message();    
Stream ms = new FileStream(@"C:\sam.jpg", FileMode.Open);
string src = ImageFormatter.GetImageURL(ms);
ms.Close();
message.Html = body + "<p><a href=\"" + websiteUrl + "\"><img alt=\"" + websiteUrl + "\" src=\"" + src + "\" /></a></p>";
MailChimp.Types.Mandrill.Messages.Message=新建MailChimp.Types.Mandrill.Messages.Message();
Stream ms=新文件流(@“C:\sam.jpg”,FileMode.Open);
字符串src=ImageFormatter.GetImageURL(ms);
Close女士();
message.Html=body+“

”;
我怎样才能完成这项任务?
(如果src作为URL提供,它可以正常工作,但我想嵌入图像)

您可以根据此页面使用
images
API参数:

您需要提供图像名称、base64编码图像和图像的mime类型,然后在电子邮件的HTML中按名称引用图像。使用.NET Mandrill API包装器()(未测试)时可能会出现以下情况:

列表图像=新列表();
Mandrill.image img=新的Mandrill.image();
byte[]fileData=File.ReadAllBytes(“C:\sam.jpg”)
img.content=Convert.tobase64字符串(文件数据)
img.type=“图像/jpeg”
img.name=“图像名称”
图像。添加(图像)
Email.images=images//(其中Email是Mandrill.EmailMessage)
然后在您的电子邮件中,您会有如下代码:

<img src="cid:image_name">

这将按您随电子邮件发送的ID显示图像。

在使用SMTP发送电子邮件时,“LinkedResources”方法似乎仍然适用于Mandrill

如果有人需要添加没有mandrillapi的内联图像,对我来说,它使用一些伪html创建了一个alterate视图,并将图像作为链接资源添加。以下是一个片段:

string htmlBody = String.Format("<html><body><img src=\"cid:{0}\" /></body></html>", "myContentId");
AlternateView avHtml = AlternateView.CreateAlternateViewFromString(htmlBody, null, MediaTypeNames.Text.Html);
LinkedResource inline = new LinkedResource(imageStream, "image/png");
inline.ContentId = "myContentId";
inline.ContentType.MediaType = "image/png";
avHtml.LinkedResources.Add(inline);
emailMessage.AlternateViews.Add(avHtml);

_emailSender.Send(emailMessage);
string htmlBody=string.Format(“,”myContentId”);
AlternateView avHtml=AlternateView.createAlternateView-FromString(htmlBody,null,MediaTypeNames.Text.Html);
LinkedResource inline=新的LinkedResource(imageStream,“图像/png”);
inline.ContentId=“myContentId”;
inline.ContentType.MediaType=“image/png”;
avHtml.LinkedResources.Add(内联);
emailMessage.alternativeviews.Add(avHtml);
_emailSender.Send(emailMessage);
Mandrill将忽略我提供的html正文,并将使用配置的模板。在这个Mandrill模板中,我还编写了
,它将以内联附件的形式发送图像,并设置ContentID。 我没有找到这方面的任何文档,这只是尝试和错误


_emailSender是.NET SmtpClient,emailMessage是System.NET.Mail.MailMessage。

嗨,Martin,我的html模板中包含了我的邮件,但是当我在mandrill outbound活动中检查发送的电子邮件时,我发现图像数据没有正确附加。相反,它只是在html中显示“”纯文本。有什么想法吗?提前谢谢。
string htmlBody = String.Format("<html><body><img src=\"cid:{0}\" /></body></html>", "myContentId");
AlternateView avHtml = AlternateView.CreateAlternateViewFromString(htmlBody, null, MediaTypeNames.Text.Html);
LinkedResource inline = new LinkedResource(imageStream, "image/png");
inline.ContentId = "myContentId";
inline.ContentType.MediaType = "image/png";
avHtml.LinkedResources.Add(inline);
emailMessage.AlternateViews.Add(avHtml);

_emailSender.Send(emailMessage);