在GAE中发送带有图像的html电子邮件

问题描述:

当我从GAE中发送电子邮件时,我会收到带有quoted-printable的Content-Transfer-Encoding的电子邮件。我期待着将其设置为base64。除了当我收到电子邮件时不显示图像时,将会查找quoted-printable。因为它是现在我的HTML看起来像这样:在GAE中发送带有图像的html电子邮件

String base64StringImg = Base64.encode(my byte array); 

StringBuilder htmlBody = new StringBuilder(); 
htmlBody.append("<html>"); 
htmlBody.append("<body>"); 
htmlBody.append("<img src='data:image/png;base64,"); 
htmlBody.append(base64StringImg); 
htmlBody.append("'/>"); 
htmlBody.append("<br/><br/>"); 
htmlBody.append("Hello " + name); 
htmlBody.append("</body>"); 
htmlBody.append("</html>"); 


MimeMessage message = new MimeMessage(session); 
message.setFrom(new InternetAddress(fromUser)); 
message.addRecipient(Message.RecipientType.TO, new InternetAddress(recipient)); 
message.setSubject(subject); 
Multipart mp = new MimeMultipart(); 

BodyPart htmlPart = new MimeBodyPart(); 
htmlPart.setContent(htmlBody.toString(), "text/html; charset=UTF-8"); 
mp.addBodyPart(htmlPart); 
message.setContent(mp); 
Transport.send(message); 

我如何可以发送HTML格式的电子邮件,在GAE的图像?我已阅读了以下两个错误/功能请求,这些错误/功能请求清楚地说明了存在限制。

http://code.google.com/p/googleappengine/issues/detail?id=198 http://code.google.com/p/googleappengine/issues/detail?id=965

+0

您是否在电子邮件客户端中检查收到的电子邮件的来源? AFAIK,大多数电子邮件客户端不支持HTML嵌入式图像。 – 2012-03-22 13:33:32

+0

是的,我检查了源代码,一切看起来很好,除了= 3D出现无处不在。我没有意识到大多数电子邮件客户端不会支持HTML嵌入图像.... – 2012-03-22 13:38:42

+0

= 3D是来自引用打印的编码,没关系。看起来,HTML嵌入式图像在各种电子邮件客户端中得不到很好的支持:http://www.campaignmonitor.com/blog/post/1761/embedding-images-in-email/ – 2012-03-22 14:36:19

HTML嵌入图像似乎在电子邮件客户端可以支持不佳:http://www.campaignmonitor.com/blog/post/1761/embedding-images-in-email/

是什么支持HTML图像附加到电子邮件:http://www.campaignmonitor.com/blog/post/1759/embedding-images-revisited/

但是,正如您注意到链接到issue,第二个选项在GAE中得不到支持。您可以尝试的是手动创建第二个链接中显示的邮件内容。