今天写代码监控商用的服务器的数据库连接池状态,想实现当连接池被用光后,就发邮件通知。
实验后,发现126的smtp服务器貌似有点限制,不能频繁发邮件。
然后改用了gmail。
然后同样的代码却报错:
javax.mail.MessagingException: 530 5.7.0 Must issue a STARTTLS command first. 36sm443504yxh.67
failure!
at com.sun.mail.smtp.SMTPTransport.issueCommand(SMTPTransport.java:1020)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:716)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:388)
at SendMail.executeMailSend(SendMail.java:59)
at SendMail.run(SendMail.java:25)
at SendMail.main(SendMail.java:70)
解决方法:
在配置smtp服务器的代码中,加上一下代码:
props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.smtp.socketFactory.fallback", "false");
props.setProperty("mail.smtp.port", "465");
props.setProperty("mail.smtp.socketFactory.port", "465");
问题解决。