大家好,谢谢你的帮助
我使用javamail发送邮件office365 SMTP服务器( smtp.office365.com),但出于某种原因,它可以保持60-80秒的时间发送邮件。
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服务器传输协议。
谢谢
发布于 2015-02-10 21:02:50
首先,你不应该需要所有的套接字工厂属性。
如果延迟发生在连接呼叫中,则可能出现以下情况:
您可以通过查看InetAddress查找服务器主机名所用的时间来测试#1。
您可以通过查看SSLSocket连接到服务器的时间来测试#2。
您可以通过实时查看JavaMail调试输出以查看延迟的位置,或者从JavaMail获得时间戳日志消息来测试#3。
https://stackoverflow.com/questions/28435443
复制相似问题