1. 程式人生 > >java web 郵件傳送

java web 郵件傳送

/*

*

*注意這裡直接是工具類不需要在spring配置

*

*/

package com.education.email;


import java.io.File;


import java.util.Properties;


import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;


import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.MailException;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;


@Service("emailService")
public class MailUtil {


private static final String HOST = "smtp.qq.com";//qq的smtp埠 其他郵箱的話可能會不一樣
private static final String SMTP = "smtp";// smtp 需要去郵箱開通,QQ賬戶是 設定-賬戶-SMTP服務開通
private static final String USERNAME = "******@qq.com";//傳送郵件的郵箱
private static final String PASSWORD = "********";//開通smtp後 他會發給你一個隨機碼 這裡就填這個隨機碼
private static final int PORT = 587;// 587/465  郵箱埠 反正我用的是587
private static final String DEFAULTENCODING = "UTF-8";//編碼


private static JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();


private static Properties prop = new Properties();


static {
// 設定mail server
senderImpl.setHost(HOST);
senderImpl.setProtocol(SMTP);
senderImpl.setUsername(USERNAME);
senderImpl.setPassword(PASSWORD);
senderImpl.setPort(PORT);
senderImpl.setDefaultEncoding(DEFAULTENCODING);


// 設定properties
prop.put("mail.smtp.auth", "true");
prop.put("mail.smtp.timeout", "500000");
// 設定除錯模式可以在控制檯檢視傳送過程
prop.put("mail.debug", "true");


senderImpl.setJavaMailProperties(prop);
}


public static void main(String args[]) {
}


/**
* 傳送簡單郵件

* @param to
*            收件人郵箱
* @param subject
*            主題
* @param content
*            內容
* @return
*/
public static boolean singleMail(String to, String subject, String content) {
String[] array = new String[] { to };
return singleMail(array, subject, content);
}


/**
* 傳送簡單文字郵件

* @param to
*            收件人郵箱陣列
* @param subject
*            主題
* @param content
*            內容
* @return
*/
public static boolean singleMail(String[] to, String subject, String content) {
boolean result = true;


SimpleMailMessage mailMessage = new SimpleMailMessage();
// 設定收件人,寄件人 用陣列傳送多個郵件
mailMessage.setTo(to);
mailMessage.setFrom(USERNAME);
mailMessage.setSubject(subject);
mailMessage.setText(content);
// 傳送郵件
try {
senderImpl.send(mailMessage);
} catch (MailException e) {
e.printStackTrace();
result = false;
}
return result;
}


/**
* 傳送html郵件

* @param to
*            收件人
* @param subject
*            主題
* @param html
*            html程式碼
* @return
*/
public static boolean htmlMail(String[] to, String subject, String html) {
boolean result = true;


MimeMessage mailMessage = senderImpl.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage);


try {
// 設定收件人,寄件人 用陣列傳送多個郵件
messageHelper.setTo(to);
messageHelper.setFrom(USERNAME);
messageHelper.setSubject(subject);
// true 表示啟動HTML格式的郵件
messageHelper.setText(html, true);


// 傳送郵件
senderImpl.send(mailMessage);
} catch (MessagingException e) {
result = false;
e.printStackTrace();
}
return result;
}


/**
* 傳送內嵌圖片的郵件 (cid:資源名)

* @param to
*            收件人郵箱
* @param subject
*            主題
* @param html
*            html程式碼
* @param imgPath
*            圖片路徑
* @return
*/
public static boolean inlineFileMail(String[] to, String subject, String html, String filePath) {
boolean result = true;


MimeMessage mailMessage = senderImpl.createMimeMessage();
try {
// 設定true開啟嵌入圖片的功能
MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage, true);
// 設定收件人,寄件人 用陣列傳送多個郵件
messageHelper.setTo(to);
messageHelper.setFrom(USERNAME);
messageHelper.setSubject(subject);
// true 表示啟動HTML格式的郵件
messageHelper.setText(html, true);


FileSystemResource file = new FileSystemResource(new File(filePath));
messageHelper.addInline(file.getFilename(), file);


// 傳送郵件
senderImpl.send(mailMessage);
} catch (MessagingException e) {
result = false;
e.printStackTrace();
}
return result;
}


/**
* 傳送帶附件的郵件

* @param to
* @param subject
* @param html
* @param filePath
* @return
*/
public static boolean attachedFileMail(String[] to, String subject, String html, String filePath) {
boolean result = true;


MimeMessage mailMessage = senderImpl.createMimeMessage();


try {
// multipart模式 為true時傳送附件 可以設定html格式
MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage, true, "utf-8");
// 設定收件人,寄件人 用陣列傳送多個郵件
messageHelper.setTo(to);
messageHelper.setFrom(USERNAME);
messageHelper.setSubject(subject);
// true 表示啟動HTML格式的郵件
messageHelper.setText(html, true);


FileSystemResource file = new FileSystemResource(new File(filePath));
// 這裡的方法呼叫和插入圖片是不同的。
messageHelper.addAttachment(file.getFilename(), file);


// 傳送郵件
senderImpl.send(mailMessage);
} catch (MessagingException e) {
result = false;
e.printStackTrace();
}
return result;
}


}