import java.util.Properties;html
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 = "1342158501@qq.com";
// 郵件發送者
private String to = "1342158501@qq.com";
// 郵件接收者
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 對象
* @throws MessagingException
* @throws AddressException
*/
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;
}
}