一、利用JavaMail發送郵件案例:
1、maven項目結構:
2、先在pom.xml里邊加入Javamail依賴,系統會根據坐標自動下載mail包(前提是配置好了maven):
3、配置email.properties屬性文件,主要是為了不更改代碼的前提下,該改變發送郵件的一些基本信息:
4、實現發送郵件的主體類SendMailUtils,代碼下:
package top.hzelin.util; import java.io.IOException; import java.io.InputStream; import java.util.Properties; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; public class SendMailUtils { private static String from = ""; private static String user = ""; private static String password = ""; /* * 讀取屬性文件的內容,並為上面上個屬性賦初始值 */ static { Properties prop = new Properties(); InputStream is = SendMailUtils.class.getClassLoader().getResourceAsStream("email.properties"); try { prop.load(is); from = prop.getProperty("from"); user=prop.getProperty("username"); password=prop.getProperty("password"); } catch (IOException e) { e.printStackTrace(); } } public static void sendMail(String to,String text,String title) { Properties props = new Properties(); props.setProperty("mail.smtp.host", "smtp.163.com");//設置郵件服務器主機名 props.put("mail.smtp.host", "smtp.163.com"); props.put("mail.smtp.auth", "true");//發送服務器需要身份驗證 Session session = Session.getDefaultInstance(props);//設置環境信息 session.setDebug(true); MimeMessage message = new MimeMessage(session); Multipart multipart = null; BodyPart contentPart = null; Transport transport = null; try { message.setFrom(from);//設置發件人 message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); message.setSubject(title); multipart = new MimeMultipart();//設置附件 contentPart = new MimeBodyPart(); contentPart.setContent(text, "text/html;charset=utf-8"); multipart.addBodyPart(contentPart); message.setContent(multipart); message.saveChanges(); transport = session.getTransport("smtp"); transport.connect("smtp.163.com", user, password); transport.sendMessage(message, message.getAllRecipients()); } catch (MessagingException e) { e.printStackTrace(); }finally { try { transport.close(); } catch (MessagingException e) { e.printStackTrace(); } } } }
5、測試發送郵件功能是否可用SendEmailTest:
注意:email.properties配置文件中的密碼應該是客戶端授權碼,不是登錄密碼,設置位置如下: