首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用服务器发送邮件的时间过长

使用服务器发送邮件的时间过长
EN

Stack Overflow用户
提问于 2015-02-10 15:28:14
回答 1查看 1.2K关注 0票数 1

大家好,谢谢你的帮助

我使用javamail发送邮件office365 SMTP服务器( smtp.office365.com),但出于某种原因,它可以保持60-80秒的时间发送邮件。

代码语言:javascript
运行
复制
stringaHost = "mail.smtp.host";
stringaUser = "mail.smtp.user";

Security.setProperty("ssl.SocketFactory.provider","com.ibm.jsse2.SSLSocketFactoryImpl");
 Security.setProperty("ssl.ServerSocketFactory.provider","com.ibm.jsse2.SSLServerSocketFactoryImpl");

InitialContext initialContext = null;
initialContext = new InitialContext();

session = (Session)initialContext.lookup(nomeJndi);

session.getProperties().put("mail.smtp.auth", "true");
session.getProperties().put("mail.smtp.socketFactory.port", 465);
            session.getProperties().put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

MimeMessage MsgEmail = new MimeMessage( session );
com.sun.mail.smtp.SMTPTransport t    =(com.sun.mail.smtp.SMTPTransport)session.getTransport("smtp");      

t.setStartTLS(true);
t.connect( smtp.office365.com,myUser,myPassword);
t.sendMessage( MsgEmail, MsgEmail.getAllRecipients());
t.close();

java花费超过60秒来评估指令:t.connect(.)。

任何关于可能发生的事情以及如何缩短这个时间间隔的线索都可以吗?

我试图在没有参数的情况下使用t.connect(),根据系统技术说明,该指令使用来自操作系统的SMTP传输协议,而不使用Office365服务器传输协议。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2015-02-10 21:02:50

首先,你不应该需要所有的套接字工厂属性

如果延迟发生在连接呼叫中,则可能出现以下情况:

  1. 您的名称服务在查找服务器主机名的IP地址方面比较慢。
  2. SSL协商很慢,可能是由于客户端或服务器上的证书管理。
  3. 服务器正在缓慢地验证您的身份。

您可以通过查看InetAddress查找服务器主机名所用的时间来测试#1。

您可以通过查看SSLSocket连接到服务器的时间来测试#2。

您可以通过实时查看JavaMail调试输出以查看延迟的位置,或者从JavaMail获得时间戳日志消息来测试#3。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28435443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档