Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Email 通过SMTP发送带有附件、纯文本和文本/hml的电子邮件_Email_Smtp_Jakarta Mail_Html Email_Email Attachments - Fatal编程技术网

Email 通过SMTP发送带有附件、纯文本和文本/hml的电子邮件

Email 通过SMTP发送带有附件、纯文本和文本/hml的电子邮件,email,smtp,jakarta-mail,html-email,email-attachments,Email,Smtp,Jakarta Mail,Html Email,Email Attachments,我的目标:通过SMTP发送带有纯文本、文本/html和附件的事务性电子邮件 我的代码:用JavaMail实现 我的问题:它在hotmail或outlook上看起来不错。但是,在gmail上,如果是带有.txt附件的电子邮件,则无法正确显示邮件正文(如果附件是图像,则可以正常工作) 任何帮助都将不胜感激 以下是我的原始SMTP输出: Subject: ALTERNATIVE | TXT | HTML |ATT.ATTACHMENT | Thu Jun 13 17:48:04 EDT 2013 M

我的目标:通过SMTP发送带有纯文本、文本/html和附件的事务性电子邮件

我的代码:用JavaMail实现

我的问题:它在hotmail或outlook上看起来不错。但是,在gmail上,如果是带有.txt附件的电子邮件,则无法正确显示邮件正文(如果附件是图像,则可以正常工作)

任何帮助都将不胜感激

以下是我的原始SMTP输出:

Subject: ALTERNATIVE | TXT | HTML |ATT.ATTACHMENT | Thu Jun 13 17:48:04 EDT
 2013
MIME-Version: 1.0
Content-Type: multipart/alternative; 
    boundary="----=_Part_0_21791733.1371160084561"

------=_Part_0_21791733.1371160084561
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Body message in text format!
------=_Part_0_21791733.1371160084561
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit

Body message in <b>html</b> format! Sent on Thu Jun 13 17:48:04 EDT 2013<br> to: me@gmail.com<br> to: me@mijo.com<br> cc: me@hotmail.com<br> cc: rafael.santos.test@hotmail.com
------=_Part_0_21791733.1371160084561
Content-Type: text/plain; charset=us-ascii; name=email_attachment.txt
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename=email_attachment.txt

This is a text attachment file!
------=_Part_0_21791733.1371160084561--
.
250 Delivery in progress
QUIT

你的信息结构是错误的。您需要嵌套的多部分来获得正确的结构,如下所示:

  multipart/mixed
    multipart/alternative (holding the two forms of the body part)
      text/plain
      text/html
    text/plain or image/gif (the attachment)

这是正确的。实际上,在看到您的答案之前,我实现了这个问题的解决方案。非常感谢。如果一些附件实际上是图片,嵌入到文本/html部分,该怎么办?那么,正确的结构是什么样的呢?我可以简单地将“混合”替换为“相关”吗?或者我必须对具有内联处置的“相关”附件使用不同的子部分,而对其余附件使用“混合”子部分吗?我很困惑…:(保持混合。这里给出的答案对文本和二进制文件非常有效。如果文本/html部分使用“cid:”引用图像:引用,它们都应该在一个multipart/related中。不要替换上面示例中的multipart/mixed。相反,用一个multipart/related替换text/html,该multipart/related包含它引用的text/html和image/jpg。如果不清楚,请告诉我。
multipart mp=new MimeMultipart();Multiaprt mpa=new MimeMultipart(“可选”);MimeBodyPart mbp=新的MimeBodyPart();mbp.setContent(mpa);mp.addBodyPart(mbp);
  multipart/mixed
    multipart/alternative (holding the two forms of the body part)
      text/plain
      text/html
    text/plain or image/gif (the attachment)