package com.app.tools; import java.util.Date; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class SendEmail { // public static final String HOST = "mx3.qq.com"; public static final String HOST = "smtp.163.com"; public static final String PROTOCOL = "smtp"; public static final int PORT = 25; /*465 這是QQ的端口*/ public static final String FROM = "[email protected]";//發件人的email public static final String PWD = "xxxxxxx";//發件人密碼 private static Session getSession() { Properties props = new Properties(); props.put("mail.smtp.host", HOST);//設置服務器地址 props.put("mail.store.protocol" , PROTOCOL);//設置協議 props.put("mail.smtp.port", PORT);//設置端口 props.put("mail.smtp.auth" , "true"); Authenticator authenticator = new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(FROM, PWD); } }; Session session = Session.getDefaultInstance(props , authenticator); return session; } public static void send(String toEmail , String content) { Session session = getSession(); try { System.out.println("--send--"+content); // Instantiate a message Message msg = new MimeMessage(session); //Set message attributes msg.setFrom(new InternetAddress(FROM)); InternetAddress[] address = {new InternetAddress(toEmail)}; msg.setRecipients(Message.RecipientType.TO, address); msg.setSubject("賬號激活郵件"); msg.setSentDate(new Date()); msg.setContent(content,"text/html;charset=utf-8"); //Send the message Transport.send(msg); } catch (MessagingException mex) { mex.printStackTrace(); } } public static void main(String[] args) { new SendEmail().send("[email protected]","dsfsdf"); System.out.println("success"); } }
1、是否開啟了認證,QQ郵箱、163郵箱均要開啟認證
2、javax.mail.MessagingException: Could not connect to SMTP host: smtp.163.com, port: 25; //連接超時
解決參考:將這個屬性的true加上引號,請奇葩的異常! 注意:如果沒有這條屬性,可能或拋出 需要認證異常(Required Authentication) 這個異常一般是由1、2造成的
3、在設置屬性的時候,一定要注意弄清楚使用郵箱的地址和端口。 javax.mail.AuthenticationFailedException
QQ郵箱端口: mx3.qq.com 端口:465 163郵箱:smtp.163.com 端口:25 這是都是發送郵件時使用的smtp協議所用。如果是收郵件則用的是pop3協議,那又不一樣了。這個請自行查找
4、
在使用QQ郵箱發送郵件的時候,出現這個異常。 查了一下,官方說法是發送太頻繁所以被鎖定了!目前還沒有解決。明天試試看看能不能成功(未成功)
以上是幾個容易出現的異常,解決之後,其他異常可根據具體拋出的信息解決!