JavaMail发送邮件简单实现

实现JavaMail发送邮件功能 ,这里共有三个类去实现。示例用的是企业版163邮箱。

一、邮件VO,代码如下:

public class MailVO {

	// 发送邮件的服务器地址
	private String mailServerHost;

	// 发送邮件的服务器端口
	private String mailServerPort;

	// 登录发送邮件服务器的用户名
	private String userName;

	// 登录发送邮件服务器的密码
	private String password;

	// 邮件发送者地址
	private String fromAddress;

	// 邮件接收者地址
	private String[] mailTo;

	// 邮件抄送地址
	private String[] mailCC;

	// 邮件密送地址
	private String[] mailBCC;

	// 是否需要安全验证
	private boolean validation = true;

	// 邮件主题
	private String subject;

	// 邮件内容
	private String content;

	// 邮件附件的文件名
	private String[] attachFileNames;

	/**
	 * 获得邮件会话属性
	 * 
	 * @return
	 */
	public Properties getSessionProperties() {
		Properties properties = new Properties();
		properties.put("mail.smtp.host", this.mailServerHost);
		properties.put("mail.smtp.port", this.mailServerPort);
		properties.put("mail.smtp.auth", this.validation ? "true" : "false");
		return properties;
	}

	/** 以下为getter和setter,这里省略 */

}


二、邮件密码验证器,继承自javax.mail.Authenticator,并重写getPasswordAuthentication()方法,代码如下:

public class MyAuthenticator extends Authenticator {

	private String userName = null;

	private String password = null;

	public RainbowAuthenticator() {
	}

	public RainbowAuthenticator(String userName, String password) {
		this.userName = userName;
		this.password = password;
	}

	protected PasswordAuthentication getPasswordAuthentication() {
		return new PasswordAuthentication(this.userName, this.password);
	}

}


三、发送邮件

public class MailSender {

	public boolean sendMail(MailVO mailVO) {
		System.out.println("====================开始发送====================");
		if (null == mailVO) {
			return false;
		}
		boolean flag = true;
		// 邮件会话
		Session mailSession = null;
		if (mailVO.isValidation()) {
			MyAuthenticator authenticator = new MyAuthenticator(
					mailVO.getUserName(), mailVO.getPassword());
			mailSession = Session.getDefaultInstance(
					mailVO.getSessionProperties(), authenticator);
		} else {
			mailSession = Session.getDefaultInstance(mailVO
					.getSessionProperties());
		}
		try {
			// 邮件消息器
			Message message = new MimeMessage(mailSession);
			// 邮件发送地址
			Address from = new InternetAddress(mailVO.getFromAddress());
			message.setFrom(from);
			// 邮件收件人地址
			if (null != mailVO.getMailTo()) {
				for (String to : mailVO.getMailTo()) {
					Address address = new InternetAddress(to);
					message.addRecipient(Message.RecipientType.TO, address);
				}
			}
			// 邮件抄送人地址
			if (null != mailVO.getMailCC()) {
				for (String to : mailVO.getMailCC()) {
					Address address = new InternetAddress(to);
					message.addRecipient(Message.RecipientType.CC, address);
				}
			}
			// 邮件密送人地址
			if (null != mailVO.getMailBCC()) {
				for (String to : mailVO.getMailBCC()) {
					Address address = new InternetAddress(to);
					message.addRecipient(Message.RecipientType.BCC, address);
				}
			}
			// 邮件主题
			message.setSubject(mailVO.getSubject());
			// 邮件发送时间
			message.setSentDate(new Date());
			// 设置自动解析html格式的内容
			message.setContent(mailVO.getContent(), "text/html;charset=utf-8");
			// 发送邮件
			Transport.send(message);
		} catch (Exception e) {
			e.printStackTrace();
			flag = false;
		}
		System.out.println("====================结束发送====================");
		return flag;
	}
}


四、测试类。这里用的是企业版163邮箱,邮件发送服务器地址为:smtp.qiye.163.com,端口号:25,代码如下:

public class Test {

	public static void main(String[] args) {
		MailVO mailVO = new MailVO();
		mailVO.setMailServerHost("smtp.qiye.163.com");
		mailVO.setMailServerPort("25");
		mailVO.setUserName("[email protected]");
		mailVO.setPassword("******");
		mailVO.setFromAddress("[email protected]");
		mailVO.setMailTo(new String[] { "[email protected]" });
		mailVO.setSubject("测试邮件标题");
		mailVO.setContent("<p>这是一封测试邮件,百度地址为:<a href=\"www.baidu.com\">www.baidu.com</a></p>");
		MailSender sender = new MailSender();
		System.out.println(sender.sendMail(mailVO));
	}
}


发布了26 篇原创文章 · 获赞 40 · 访问量 6万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章