java免費發送郵件實現
現在項目上線一段時間了,希望能夠在項目中出現異常後郵件通知給相關開發人員。我從網上找了大量的第三方介面(需要花錢)和發送郵件demo。最後選擇了一個只需要引入一個jar包和一個工具類的實現,不需要設定檔,具體的工具類代碼如下:
package com.evan.mail;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.AddressException;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;public class SendMail { public static void main(String[] args) { MessageVo mv = new MessageVo(); mv.setSubject("很遺憾,您的程式出bug了"+new Date()); mv.setText("bug的具體內容為:"+"null 指標異常"); mv.setToMailAddress("[email protected]"); sendMail(mv); } public static void sendMail(MessageVo mv ){ final String username = "[email protected]"; final String password = "evan0202"; boolean isSSL = true; String host = "smtp.163.com"; int port = 465; boolean isAuth = true; String from = "[email protected]"; Properties props = new Properties(); props.put("mail.smtp.ssl.enable", isSSL); props.put("mail.smtp.host", host); props.put("mail.smtp.port", port); props.put("mail.smtp.auth", isAuth); Session session = Session.getDefaultInstance(props, new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }); try { Message message = new MimeMessage(session); message.setFrom(new InternetAddress(from)); message.setSubject(mv.getSubject()); message.setText(mv.getText()); message.addRecipient(Message.RecipientType.TO, new InternetAddress(mv.getToMailAddress())); Transport.send(message); } catch (AddressException e) { e.printStackTrace(); } catch (MessagingException e) { e.printStackTrace(); } System.out.println("發送完畢!"); }}
需要注意的是:
1、寄件者郵箱沒有開通pop3/SMTP協議需要開通
2、寄件者163郵件發送次數多了,163會提示說帳號有安全威脅之類,需要你在163郵箱設定授權
3、項目中需要用到的jar是mail-1.4.5.jar
直接將項目匯入eclipse,運行main方法即可完成發送郵件
完整項目(免積分):http://download.csdn.net/download/zl544434558/9393226