今天写代码监控商用的服务器的数据库连接池状态,想实现当连接池被用光后,就发邮件通知。
实验后,发现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");
问题解决。