如何使用JavaMail获取SMTP服务器响应?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何使用JavaMail获取SMTP服务器响应?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2105字,纯文字阅读大概需要4分钟。
内容图文
![如何使用JavaMail获取SMTP服务器响应?](/upload/InfoBanner/zyjiaocheng/793/dde20c39a28e4a9d879a40707e1b3547.jpg)
我正在使用JavaMail 1.5发送邮件,并从我的测试中看到邮件已成功发送.
我使用SMTPTransport获取最后一次服务器响应,但它是空的,与代码相同. getReportSuccess()返回false.
SMTPTransport t = (SMTPTransport)session.getTransport("smtps");
t.send(message);
String response = t.getLastServerResponse();
boolean s = t.getReportSuccess();
int code = t.getLastReturnCode();
return response;
尽管消息发送成功,但获得此类响应的原因是什么?
有没有办法获得正确的SMTP响应?
解决方法:
我不确定它是否完全覆盖了这个问题,但是当我浏览SMTPTransport.java时,getReportSuccess()的描述说:
/**
* Should we report even successful sends by throwing an exception?
* If so, a <code>SendFailedException</code> will always be thrown and
* an {@link com.sun.mail.smtp.SMTPAddressSucceededException
* SMTPAddressSucceededException} will be included in the exception
* chain for each successful address, along with the usual
* {@link com.sun.mail.smtp.SMTPAddressFailedException
* SMTPAddressFailedException} for each unsuccessful address.
*
* @return true if an exception will be thrown on successful sends.
*
* @since JavaMail 1.3.2
*/
public synchronized boolean getReportSuccess() {
return reportSuccess;
}
所以,在我的代码中,为了确保发送过程已成功完成,我调用了setReportSuccess(true);在发送之前,然后处理异常com.sun.mail.smtp.SMTPAddressSucceededException.以下代码片段对我很有用:
public synchronized void sendMail(String subject, String body, String user, String oauthToken, String recipients, String attachment)
{
try {
SMTPTransport smtpTransport = connectToSmtp("smtp.gmail.com", 587, user, oauthToken, true);
MimeMessage message = new MimeMessage(session);
/*Set whether successful sends should be reported by throwing
**an exception.
*/
smtpTransport.setReportSuccess(true);
/**
***All actions to got the formated message
**/
/*Send message*/
smtpTransport.sendMessage(message, message.getAllRecipients());
} catch(android.os.NetworkOnMainThreadException e){
Log.d("MY_LOG","NetworkOnMainThreadException");
}
catch(com.sun.mail.smtp.SMTPAddressSucceededException e){
/**
***Message has been sent. Do what you need.
**/
}
catch (Exception e) {
Log.d("MY_LOG", e.getMessage());
}
}
内容总结
以上是互联网集市为您收集整理的如何使用JavaMail获取SMTP服务器响应?全部内容,希望文章能够帮你解决如何使用JavaMail获取SMTP服务器响应?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。