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 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 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.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;
}
}