一、首先在項目中導入jar包,我用的是mail-1.4.jar
html
二、一下是個人代碼:java
public class SendMailUtil {服務器
private static final Logger logger = Logger.getLogger(SendMailUtil.class);session
// 定義發件人、收件人、主題等測試
private String to = null;// 收件人郵箱地址ui
private String from = null;// 發件人郵箱地址this
private String password = null;//發件人密碼spa
private String host = null;//郵件服務器htm
private String filename = null;對象
// 用於保存發送附件的文件路徑名的集合
private Vector<String> fileList = new Vector<String>();
/*
* 能夠傳發件人等參數的構造
*/
public SendMailUtil(String to, String from, String password,
String smtpServer) {
// 初始化發件人、收件人、主題等
this.to = to;
this.from = from;
this.password = password;
this.host = smtpServer;
}
/*
* 該方法用於收集附件名
*/
public void attachfile(String fname) {
fileList.addElement(fname);
}
/*
* 開始發送信件的方法
*/
public boolean startSend(String emailTitle, String emailContent) {
if (StringUtils.isBlank(emailContent)) {
logger.error("郵件內容不能爲空!");
return false;
}
try {
if (StringUtils.isBlank(emailContent)) {
throw new NullPointerException("發送的內容不能爲空!");
}
// 建立Properties對象
Properties props = System.getProperties();
// 建立信件服務器
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.host", host);
props.put("mail.smtp.password", "0");
// 獲得默認的對話對象
Session session = Session.getInstance(props,
new PopupAuthenticator(this.from, this.password));
// 建立一個消息,並初始化該消息的各項元素
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address = { new InternetAddress(to) };
msg.setRecipients(Message.RecipientType.TO, address);
// getBytes("ISO-8859-1")
// String title=new String(emailTitle.getBytes("ISO-8859-1"),"GBK");
msg.setSubject(emailTitle);
// 後面的BodyPart將加入到此處建立的Multipart中
Multipart mp = new MimeMultipart("subtype");
// 添加HTML正文
BodyPart htmlBody = new MimeBodyPart();
MimeMultipart htmlContent = new MimeMultipart("related");
BodyPart msgContent = new MimeBodyPart();
htmlContent.addBodyPart(msgContent);
msgContent.setContent(emailContent, "text/html;charset=utf-8");
htmlBody.setContent(htmlContent);
mp.addBodyPart(htmlBody);
// 利用枚舉器方便的遍歷集合
Enumeration efile = fileList.elements();
// 檢查序列中是否還有更多的對象
while (efile.hasMoreElements()) {
MimeBodyPart mbp = new MimeBodyPart();
// 選擇出每個附件名
filename = efile.nextElement().toString();
// 獲得數據源
FileDataSource fds = new FileDataSource(filename);
// 獲得附件自己並至入BodyPart
mbp.setDataHandler(new DataHandler(fds));
// 獲得文件名一樣至入BodyPart
mbp.setFileName(fds.getName());
mp.addBodyPart(mbp);
}
// 移走集合中的全部元素
fileList.removeAllElements();
// Multipart加入到信件
msg.setContent(mp);
// 設置信件頭的發送日期
msg.setSentDate(new Date());
// 發送信件
Transport.send(msg);
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
// 認證類
class PopupAuthenticator extends Authenticator {
private String username ;
private String password ;
public PopupAuthenticator(String user, String pass) {
this.username = user;
this.password = pass;
}
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
}
//測試
public static void main(String[] args) {
SendMailUtil mail = new SendMailUtil("qinkui_java@163.com",
"test@163.com","123456", "smtp.163.com");
mail.attachfile("C:\\Users\\awen\\Desktop\\a.txt");
mail.startSend("交接文檔","收到請回復");
System.out.println("郵件發送完成...");
}
三、測試成功,你們能夠試一下。