關於使用Java傳送簡單文字郵件
阿新 • • 發佈:2022-03-17
實現功能的前提是需要javax.mail.jar,下載地址在https://github.com/javaee/javamail/releases
我這裡以163郵箱為例,郵箱授權碼如何獲取可以自行百度。
package utils; import javax.mail.MessagingException; import javax.mail.NoSuchProviderException; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; importjavax.mail.internet.MimeMessage; import java.util.Date; import java.util.Properties; public class SendMail { // 發件人的郵箱賬號如:[email protected] public static String sendEmailAccount = "[email protected]"; // 發件人的郵箱的授權碼(自己在郵箱伺服器中開啟並設定) public static String sendEmailPassword = "xxxxxx"; // 發件人郵箱的SMTP伺服器地址,如:smtp.163.compublic static String sendEmailSMTPHost = "smtp.163.com"; // 收件人的郵箱賬號 public static String receiveMailAccount = ""; // 把傳送郵件封裝為函式,引數為收件人的郵箱賬號和要傳送的內容 public void sendMail(String receiveMailAccount, String mailContent) { // 建立用於連線郵件伺服器的引數配置 Properties props = new Properties();// 設定使用SMTP協議 props.setProperty("mail.transport.protocol", "smtp"); // 設定發件人的SMTP伺服器地址 props.setProperty("mail.smtp.host", sendEmailSMTPHost); // 設定需要驗證 props.setProperty("mail.smtp.auth", "true"); //Linux埠25沒有開放,放棄25埠,使用ssl加密並改用465埠--此舉可以兼顧window和Linux //使用ssl加密 props.setProperty("mail.smtp.ssl.enable", "true"); //設定埠 props.setProperty("mail.smtp.port", "465"); // 根據配置建立會話物件, 用於和郵件伺服器互動 Session session = Session.getInstance(props); // 設定debug模式,便於檢視傳送過程所產生的日誌 session.setDebug(true); try { // 建立一封郵件 MimeMessage message = createMimeMessage(session, sendEmailAccount, receiveMailAccount, mailContent); // 根據 Session 獲取郵件傳輸物件 Transport transport = session.getTransport(); transport.connect(sendEmailAccount, sendEmailPassword); // 傳送郵件, 發到所有的收件地址, 通過message.getAllRecipients() 可以獲取到在建立郵件物件時新增的所有收件人 transport.sendMessage(message, message.getAllRecipients()); // 關閉連線 transport.close(); } catch (NoSuchProviderException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (MessagingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * * @param session * 和伺服器互動的會話 * @param sendMail * 發件人郵箱 * @param receiveMail * 收件人郵箱 * @return * @throws Exception */ public static MimeMessage createMimeMessage(Session session, String sendMail, String receiveMail, String mailContent) throws Exception { // 建立一封郵件 MimeMessage message = new MimeMessage(session); // 設定發件人姓名和編碼格式 message.setFrom(new InternetAddress(sendMail, "xxxxx", "UTF-8")); // 收件人 message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(receiveMail, "尊敬的使用者", "UTF-8")); // 設定郵件主題 message.setSubject("重要提醒!", "UTF-8"); // 設定郵件正文 message.setContent(mailContent, "text/html;charset=UTF-8"); // 設定發件時間 message.setSentDate(new Date()); // 儲存設定 message.saveChanges(); return message; } }
搜尋
複製