gpt4 book ai didi

Javamail/电子邮件公共(public)资源 : empty message gives strange error

转载 作者:行者123 更新时间:2023-12-02 06:16:05 25 4
gpt4 key购买 nike

我正在尝试通过 GMail(实际上是 Google Apps)发送电子邮件。这对于普通消息来说非常有效,但当然我必须测试极端情况。

现在我正在尝试发送没有正文的消息,但收到一条奇怪的错误消息。由于我想消除代码中的错误,因此我想知道我是否做错了什么,或者我正在使用的库中有错误。

HtmlEmail currentMessage = new HtmlEmail();
currentMessage.setSSL(true);
currentMessage.setSslSmtpPort(465);
currentMessage.setHostName("smtp.gmail.com");
currentMessage.setAuthentication("abc@gmail.com", "secret");

/** rs is a ResultSet from database **/

if(rs.getString("mailFrom") != null && !rs.getString("mailFrom").isEmpty())
currentMessage.setFrom(rs.getString("mailFrom"));
else
currentMessage.setFrom("abc@gmail.com");
currentMessage.setTo(this.convertRecipientStringToArray(rs.getString("mailTo")));
currentMessage.setCc(this.convertRecipientStringToArray(rs.getString("mailCC")));
currentMessage.setBcc(this.convertRecipientStringToArray(rs.getString("mailBC")));
currentMessage.setSubject(rs.getString("mailSubject"));
if(rs.getString("mailBody") != null && !rs.getString("mailBody").isEmpty())
currentMessage.setTextMsg(rs.getString("mailBody"));
if(rs.getString("mailHtmlBody") != null && !rs.getString("mailHtmlBody").isEmpty())
currentMessage.setHtmlMsg(rs.getString("mailHtmlBody"));
if(rs.getString("mailReplyTo") != null && !rs.getString("mailReplyTo").isEmpty())
currentMessage.addReplyTo(rs.getString("mailReplyTo"));
else
currentMessage.addReplyTo("def@gmail.com");
currentMessage.send();

此代码适用于“普通”电子邮件:具有有效的正文、主题、收件人等。

mailBody mailHtmlBody在数据库中均为NULL或为空时,我收到以下错误:

Sending the email to the following server failed : smtp.gmail.com:25

完整错误日志(自己的日志格式)/堆栈跟踪:

[CRITICAL] 2012-12-19 17:08:00 [CET] - Exception occurred in function com.mypackage.mymailobject.outgoing_sendMails: Sending the email to the following server failed : smtp.gmail.com:25

Stack trace:
org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.gmail.com:25
at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1242)
at org.apache.commons.mail.Email.send(Email.java:1267)
at com.mypackage.mymailobject.outgoing_sendMails(mymailobject.java:85)
at com.mypackage.mymailobject.outgoing_do(mymailobject.java:69)
at com.mypackage.Mailer.main(Mailer.java:132)
Caused by: javax.mail.MessagingException: IOException while sending message;
nested exception is:
java.io.IOException: javax.mail.MessagingException: Empty multipart: multipart/mixed;
boundary="----=_Part_0_916488860.1355933279096"
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1141)
at javax.mail.Transport.send0(Transport.java:195)
at javax.mail.Transport.send(Transport.java:124)
at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1232)
... 4 more
Caused by: java.io.IOException: javax.mail.MessagingException: Empty multipart: multipart/mixed;
boundary="----=_Part_0_916488860.1355933279096"
at com.sun.mail.handlers.multipart_mixed.writeTo(multipart_mixed.java:105)
at javax.activation.ObjectDataContentHandler.writeTo(Unknown Source)
at javax.activation.DataHandler.writeTo(Unknown Source)
at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1476)
at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1772)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1099)
... 7 more

我现在有两个问题:

  1. 是否可以发送没有正文的电子邮件?这是允许的吗?
  2. 为什么错误消息端口号是 25 而不是 465?

最佳答案

MIME 规范不允许没有正文部分的多部分内容。 JavaMail API (我认为从版本 1.5 开始),允许您将系统属性 mail.mime.multipart.allowempty 设置为 true 来解决此问题。

关于Javamail/电子邮件公共(public)资源 : empty message gives strange error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13951322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com