java發動郵件其實很簡單,這是使用Javamail來實現,使用maven管理
1.導包:這兩個包缺一不可
<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
<version>1.5.6</version>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.5.6</version>
</dependency>
2.如果不想用現成的郵箱,比如163,139等,可以自己搭建smtp郵件服務器。但是這裏使用163郵箱來實現,但163郵箱要開啓smtp(登陸郵箱設置就可以)
3.源代碼:需要的參數是:發送地址,開啓smtp的時候設置的密碼,smtp端口,目的地址,郵件的主題,郵件內容,附件的地址
public static void sendMsg(String fromAddress,String fromAddresspwd,String host,
String toAddress,String subject,String content,String filepath) throws Exception{
// 用於連接郵件服務器的參數配置
Properties props = new Properties();
//發送郵件的服務器地址
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", "true");
props.put("mail.transport.protocol","smtp");
props.put("mail.debug", "true");
//創建Session對象
Session session =Session.getInstance(props);
//創建出MimeMessage,郵件的消息對象
MimeMessage message = new MimeMessage(session);
//設置發件人
Address fromAddr = new InternetAddress(fromAddress,"每日執法信息導出小助手");
message.setFrom(fromAddr);
//設置收件人
Address toAddr=new InternetAddress(toAddress,"無敵小神童");
message.setRecipient(RecipientType.TO, toAddr);
//設置郵件的主題
message.setSubject(subject,"UTF-8");
//設置文本節點
MimeBodyPart text=new MimeBodyPart();
text.setContent(content,"text/html;charset=UTF-8");
//創建附件節點
MimeBodyPart attachment=new MimeBodyPart();
DataHandler dataHandler=new DataHandler(new FileDataSource(filepath));// 讀取本地文件
attachment.setDataHandler(dataHandler);// 將附件數據添加到“節點”
attachment.setFileName(MimeUtility.encodeText(dataHandler.getName()));// 設置附件的文件名(需要編碼)
//設置文本和圖片的關係
MimeMultipart mimeMultipart=new MimeMultipart();
mimeMultipart.addBodyPart(text);
mimeMultipart.addBodyPart(attachment);
mimeMultipart.setSubType("mixed");
//設置郵件的正文
message.setContent(mimeMultipart);
//用於連接郵件服務器的參數配置
message.setSentDate(new Date());
message.saveChanges();//保存更新
//根據 Session 獲取郵件傳輸對象
Transport transport = session.getTransport("smtp");
transport.connect(host,fromAddress,fromAddresspwd); //設置了郵件的發射地址
//發送郵件到收件地址
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
4.在程序入口調用即可。本代碼可以用作工具方法