2013-08-28 80 views
1

我想在电子邮件页脚中嵌入图像。我以前使用过“LinkedResources”来完成.NET邮件客户端。 (mailObject.AlternateViews.Add(footerImageLinkedResource);Mandrill Mailchimp如何在电子邮件正文中嵌入图像

但是Mandrill api没有Alternate视图。我试图

示例代码与山魈如下,

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>"; 

我怎样才能实现这个任务? (如果src是作为它工作正常的URL,但我希望嵌入图像)

回答

2

可以使用images API参数按本页面:

http://help.mandrill.com/entries/25252978-Tips-for-using-images-in-Mandrill-emails

您需要提供图像名称,base64编码图像和图像的MIME类型,然后在电子邮件的HTML中通过名称引用图像。它看起来像这样使用.NET API山魈包装(https://github.com/shawnmclean/Mandrill-dotnet)(未经测试):

List<Mandrill.image> images = new List<Mandrill.image>(); 
Mandrill.image img = new Mandrill.image(); 
byte[] fileData = File.ReadAllBytes("C:\sam.jpg") 
img.content = Convert.ToBase64String(fileData) 
img.type = "image/jpeg" 
img.name = "image_name" 
images.Add(Image) 
Email.images = images //(where Email is a Mandrill.EmailMessage) 

然后在您的电子邮件,你会有这样的代码:

<img src="cid:image_name"> 

它将显示出图像通过您通过电子邮件发送的ID。

+0

嗨马丁,我包括在我的html模板,但是当我检查发送的电子邮件在mandrill出站活动,我发现图像数据没有得到正确连接。相反,它只是在html中显示''纯文本。任何想法?提前致谢。 – Junlynn

0

当使用SMTP发送电子邮件时,“LinkedResources”方法似乎仍然与Mandrill一起使用。

如果有人需要添加没有Mandrill API的内联图像,对于我来说,它使用一些虚拟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); 

Mandrill将忽略我提供的html正文,并将使用配置的模板。并且在该Mandrill模板中,我还编写了<img src="cid:myContentId" />,它将以Contentline集的形式发送图像作为内联附件。 我没有找到任何文件,这只是试错。

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

相关问题