天天看點

郵件開發(一) 發送郵件

 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;

上一篇: 伺服器配置
下一篇: Windows伺服器