import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
/**
* 郵件發送
* @author 劉立喜
* @since 2013-3-26 16:21:30
*/
public class HTMLMessageSender {
private String from = "[email protected]"; // 郵件發送者
private String to = "[email protected]"; // 郵件接收者
private String protocol = "smtp"; // 向郵件伺服器發送時所使用的協定
* @param args
* @throws MessagingException
* @throws AddressException
*/
public static void main(String[] args) throws AddressException, MessagingException {
Session session = null;
// 定義一封郵件
MimeMessage message = null;
// 該對象由于發送郵件
Transport transport = null;
String body = "";
String subject = "";
String user = "";
String password = "";
String server = "";
HTMLMessageSender sender = new HTMLMessageSender();
body = "<h1>你好!你已成功注冊</h1>";
subject = "使用者注冊成功";
session = sender.createSession();
message = sender.createMessage(session, body, subject);
transport = session.getTransport();
user = "1342158501";
password = "05646292253";
server = "smtp.qq.com";
transport.connect(server, user, password);
// 發送郵件
transport.sendMessage(message, message.getRecipients(Message.RecipientType.TO));
transport.close();
}
* <p>生成郵件對象</p>
* <p>該郵件的郵件體包括兩個部分,一部分是html,另一部分是内嵌的一幅圖檔</p>
* @param session javax.mail.Session 對象
* @param body 郵件内容
* @return MimeMessage 對象
public MimeMessage createMessage(Session session, String body, String subject) throws AddressException, MessagingException {
// MimeMessage對象代表一封郵件
MimeMessage message = new MimeMessage(Session.getDefaultInstance(new Properties()));
// 定義發送者
message.setFrom(new InternetAddress(from));
// 定義接收者
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
// 定義郵件主題
message.setSubject(subject);
// 一封郵件可能由多個部分組成,比如有text/html部分,還有附件部分,還有可能由圖檔部分
// 下面定義的這個MimeMultiPart對象從其名字就能得出:由于我們定義了很多郵件部分,是以需要将這些部分組裝起來,
// 此對象就起着這種組裝的功能,将所有部分都加到該對象中
MimeMultipart multipart = new MimeMultipart("related");
// 這裡定義了一封郵件中text/html 部分 部分
MimeBodyPart htmlBodyPart = new MimeBodyPart();
htmlBodyPart.setContent(body, "text/html; charset=gb2312");
// 将html部分加到MimeMultiPart對象中
multipart.addBodyPart(htmlBodyPart);
// 内嵌圖檔部分
MimeBodyPart picBodyPart = new MimeBodyPart();
FileDataSource fds = new FileDataSource("E:\\郵件開發\\代碼\\JavaMail使用的附件\\logo.gif");
picBodyPart.setDataHandler(new DataHandler(fds));
picBodyPart.setContentID("company_logo");
// 将圖檔部分加到MimeMultiPart對象中
multipart.addBodyPart(picBodyPart);
// 将MimeMultiPart對象作為整封郵件的内容
message.setContent(multipart);
// 一下這句必須寫
message.saveChanges();
return message;
* 建立Session對象
* @return Session 對象
public Session createSession() {
// 建立Session對象時需要相關的參數,而參數是從Properties中擷取的,是以這裡要定義Properties對象
Properties props = new Properties();
props.setProperty("mail.transport.protocol", protocol);
props.setProperty("mail.smtp.auth", "true");
Session session = Session.getDefaultInstance(props);
// 調試模式
session.setDebug(true);
return session;