JavaMail学习笔记(三)、使用SMTP协议发送电子邮件(全)(一)

2014-11-24 08:17:23 · 作者: · 浏览: 0

[java]
package org.yangxin.study.jm;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
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;
import javax.mail.internet.MimeUtility;

/**
* 使用SMTP协议发送电子邮件
*/
public class SendMailTest {

// 邮件发送协议
private final static String PROTOCOL = "smtp";

// SMTP邮件服务器
private final static String HOST = "smtp.sina.com";

// SMTP邮件服务器默认端口
private final static String PORT = "25";

// 是否要求身份认证
private final static String IS_AUTH = "true";

// 是否启用调试模式(启用调试模式可打印客户端与服务器交互过程时一问一答的响应消息)
private final static String IS_ENABLED_DEBUG_MOD = "true";

// 发件人
private static String from = "xyang0917@sina.com";

// 收件人
private static String to = "xyang0917@163.com";

// 初始化连接邮件服务器的会话信息
private static Properties props = null;


static {
props = new Properties();
props.setProperty("mail.transport.protocol", PROTOCOL);
props.setProperty("mail.smtp.host", HOST);
props.setProperty("mail.smtp.port", PORT);
props.setProperty("mail.smtp.auth", IS_AUTH);
props.setProperty("mail.debug",IS_ENABLED_DEBUG_MOD);
}

public static void main(String[] args) throws Exception {
// 发送文本邮件
sendTextEmail();

// 发送简单的html邮件
sendHtmlEmail();

// 发送带内嵌图片的HTML邮件
sendHtmlWithInnerImageEmail();

// 发送混合组合邮件
sendMultipleEmail();

// 发送已经生成的eml邮件
//sendMailForEml();
}

/**
* 发送简单的文本邮件
*/
public static void sendTextEmail() throws Exception {
// 创建Session实例对象
Session session = Session.getDefaultInstance(props);

// 创建MimeMessage实例对象
MimeMessage message = new MimeMessage(session);
// 设置发件人
message.setFrom(new InternetAddress(from));
// 设置邮件主题
message.setSubject("使用javamail发送简单文本邮件");
// 设置收件人
message.setRecipient(RecipientType.TO, new InternetAddress(to));
// 设置发送时间
message.setSentDate(new Date());
// 设置纯文本内容为邮件正文
message.setText("使用POP3协议发送文本邮件测试!!!");
// 保存并生成最终的邮件内容
message.saveChanges();

// 获得Transport实例对象
Transport transport = session.getTransport();
// 打开连接
transport.connect("xyang0917", "123456abc");
// 将message对象传递给transport对象,将邮件发送出去
transport.sendMessage(message, message.getAllRecipients());
// 关闭连接