JavaMail 發送郵件的實例

JavaMail是提供給開發者處理電子郵件相關的編程接口。它是Sun發佈的用來處理email的API。今天學習了一下JavaMail,javamail發送郵件確實是一個比較麻煩的問題。爲了之後使用方便,本身寫了段代碼,打成jar包,以方便之後使用。呵呵 


如下三段代碼是個人所有代碼,朋友們若是想用,直接複製便可。

第一個類:MailSenderInfo.javahtml

/** 
* 發送郵件須要使用的基本信息 
*/ 
import java.util.Properties; 
public class MailSenderInfo { 
	// 發送郵件的服務器的IP和端口 
	private String mailServerHost; 
	private String mailServerPort = "25"; 
	// 郵件發送者的地址 
	private String fromAddress; 
	// 郵件接收者的地址 
	private String toAddress; 
	// 登錄郵件發送服務器的用戶名和密碼 
	private String userName; 
	private String password; 
	// 是否須要身份驗證 
	private boolean validate = false; 
	// 郵件主題 
	private String subject; 
	// 郵件的文本內容 
	private String content; 
	// 郵件附件的文件名 
	private String[] attachFileNames; 	
	/** 
	  * 得到郵件會話屬性 
	  */ 
	public Properties getProperties(){ 
	  Properties p = new Properties(); 
	  p.put("mail.smtp.host", this.mailServerHost); 
	  p.put("mail.smtp.port", this.mailServerPort); 
	  p.put("mail.smtp.auth", validate ? "true" : "false"); 
	  return p; 
	} 
	public String getMailServerHost() { 
	  return mailServerHost; 
	} 
	public void setMailServerHost(String mailServerHost) { 
	  this.mailServerHost = mailServerHost; 
	}
	public String getMailServerPort() { 
	  return mailServerPort; 
	}
	public void setMailServerPort(String mailServerPort) { 
	  this.mailServerPort = mailServerPort; 
	}
	public boolean isValidate() { 
	  return validate; 
	}
	public void setValidate(boolean validate) { 
	  this.validate = validate; 
	}
	public String[] getAttachFileNames() { 
	  return attachFileNames; 
	}
	public void setAttachFileNames(String[] fileNames) { 
	  this.attachFileNames = fileNames; 
	}
	public String getFromAddress() { 
	  return fromAddress; 
	} 
	public void setFromAddress(String fromAddress) { 
	  this.fromAddress = fromAddress; 
	}
	public String getPassword() { 
	  return password; 
	}
	public void setPassword(String password) { 
	  this.password = password; 
	}
	public String getToAddress() { 
	  return toAddress; 
	} 
	public void setToAddress(String toAddress) { 
	  this.toAddress = toAddress; 
	} 
	public String getUserName() { 
	  return userName; 
	}
	public void setUserName(String userName) { 
	  this.userName = userName; 
	}
	public String getSubject() { 
	  return subject; 
	}
	public void setSubject(String subject) { 
	  this.subject = subject; 
	}
	public String getContent() { 
	  return content; 
	}
	public void setContent(String textContent) { 
	  this.content = textContent; 
	} 
} 

第二個類:SimpleMailSender.java

import java.util.Date; 
import java.util.Properties;
import javax.mail.Address; 
import javax.mail.BodyPart; 
import javax.mail.Message; 
import javax.mail.MessagingException; 
import javax.mail.Multipart; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeBodyPart; 
import javax.mail.internet.MimeMessage; 
import javax.mail.internet.MimeMultipart; 

/** 
* 簡單郵件(不帶附件的郵件)發送器 
*/ 
public class SimpleMailSender  { 
/** 
  * 以文本格式發送郵件 
  * @param mailInfo 待發送的郵件的信息 
  */ 
	public boolean sendTextMail(MailSenderInfo mailInfo) { 
	  // 判斷是否須要身份認證 
	  MyAuthenticator authenticator = null; 
	  Properties pro = mailInfo.getProperties();
	  if (mailInfo.isValidate()) { 
	  // 若是須要身份認證,則建立一個密碼驗證器 
		authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword()); 
	  }
	  // 根據郵件會話屬性和密碼驗證器構造一個發送郵件的session 
	  Session sendMailSession = Session.getDefaultInstance(pro,authenticator); 
	  try { 
	  // 根據session建立一個郵件消息 
	  Message mailMessage = new MimeMessage(sendMailSession); 
	  // 建立郵件發送者地址 
	  Address from = new InternetAddress(mailInfo.getFromAddress()); 
	  // 設置郵件消息的發送者 
	  mailMessage.setFrom(from); 
	  // 建立郵件的接收者地址,並設置到郵件消息中 
	  Address to = new InternetAddress(mailInfo.getToAddress()); 
	  mailMessage.setRecipient(Message.RecipientType.TO,to); 
	  // 設置郵件消息的主題 
	  mailMessage.setSubject(mailInfo.getSubject()); 
	  // 設置郵件消息發送的時間 
	  mailMessage.setSentDate(new Date()); 
	  // 設置郵件消息的主要內容 
	  String mailContent = mailInfo.getContent(); 
	  mailMessage.setText(mailContent); 
	  // 發送郵件 
	  Transport.send(mailMessage);
	  return true; 
	  } catch (MessagingException ex) { 
		  ex.printStackTrace(); 
	  } 
	  return false; 
	} 
	
	/** 
	  * 以HTML格式發送郵件 
	  * @param mailInfo 待發送的郵件信息 
	  */ 
	public static boolean sendHtmlMail(MailSenderInfo mailInfo){ 
	  // 判斷是否須要身份認證 
	  MyAuthenticator authenticator = null;
	  Properties pro = mailInfo.getProperties();
	  //若是須要身份認證,則建立一個密碼驗證器  
	  if (mailInfo.isValidate()) { 
		authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
	  } 
	  // 根據郵件會話屬性和密碼驗證器構造一個發送郵件的session 
	  Session sendMailSession = Session.getDefaultInstance(pro,authenticator); 
	  try { 
	  // 根據session建立一個郵件消息 
	  Message mailMessage = new MimeMessage(sendMailSession); 
	  // 建立郵件發送者地址 
	  Address from = new InternetAddress(mailInfo.getFromAddress()); 
	  // 設置郵件消息的發送者 
	  mailMessage.setFrom(from); 
	  // 建立郵件的接收者地址,並設置到郵件消息中 
	  Address to = new InternetAddress(mailInfo.getToAddress()); 
	  // Message.RecipientType.TO屬性表示接收者的類型爲TO 
	  mailMessage.setRecipient(Message.RecipientType.TO,to); 
	  // 設置郵件消息的主題 
	  mailMessage.setSubject(mailInfo.getSubject()); 
	  // 設置郵件消息發送的時間 
	  mailMessage.setSentDate(new Date()); 
	  // MiniMultipart類是一個容器類,包含MimeBodyPart類型的對象 
	  Multipart mainPart = new MimeMultipart(); 
	  // 建立一個包含HTML內容的MimeBodyPart 
	  BodyPart html = new MimeBodyPart(); 
	  // 設置HTML內容 
	  html.setContent(mailInfo.getContent(), "text/html; charset=utf-8"); 
	  mainPart.addBodyPart(html); 
	  // 將MiniMultipart對象設置爲郵件內容 
	  mailMessage.setContent(mainPart); 
	  // 發送郵件 
	  Transport.send(mailMessage); 
	  return true; 
	  } catch (MessagingException ex) { 
		  ex.printStackTrace(); 
	  } 
	  return false; 
	} 
} 


第三個類:MyAuthenticator.java

import javax.mail.*;
  
public class MyAuthenticator extends Authenticator{
	String userName=null;
	String password=null;
	 
	public MyAuthenticator(){
	}
	public MyAuthenticator(String username, String password) { 
		this.userName = username; 
		this.password = password; 
	} 
	protected PasswordAuthentication getPasswordAuthentication(){
		return new PasswordAuthentication(userName, password);
	}
}
 


下面給出使用上面三個類的代碼:
java

注:這段不是轉載的,本身試過確實好用~~編程

public class test {
	public static void main(String[] args){
        //這個類主要是設置郵件
	  MailSenderInfo mailInfo = new MailSenderInfo(); 
	  mailInfo.setMailServerHost("smtp.163.com"); 
	  mailInfo.setMailServerPort("25"); 
	  mailInfo.setValidate(true); 
	  mailInfo.setUserName("07gdg"); 
	  mailInfo.setPassword("xxx");//郵箱密碼 ,此處省略
	  mailInfo.setFromAddress("07gdg@163.com");//發送郵箱,拿咱們系的公共郵箱試一試~
	  mailInfo.setToAddress("leixiaohua1020@126.com"); //接收郵箱
	  mailInfo.setSubject("2013年存儲展望:大數據、雲依然是主旋律"); 
	  mailInfo.setContent("又到了年末,對於存儲領域來講,這一年發生了太多的事,大數據迅速崛起成爲IT熱詞,而與大數據相關的大數據衍生行業也獲得了繁榮發展。2012年大數據從天而降,迅速佔領科技報端,混合雲存儲初現端倪,NAS存儲重現勝景,閃存技術和融合式基礎架構也躋身主流,能夠說2012年存儲市場繁榮異常。"); 
        //這個類主要來發送郵件
	  SimpleMailSender sms = new SimpleMailSender();
         sms.sendTextMail(mailInfo);//發送文體格式 
         sms.sendHtmlMail(mailInfo);//發送html格式
	}

}
相關文章
相關標籤/搜索