所需jar包:链接:https://pan.baidu.com/s/1DSI5KuspG80_FaVjtKiwkg 提取码:z67j
本人学生党,事情发生在做java毕业设计时,当时想着在注册模块中加个验证,但是网上的那些短信验证码发送大多数是要收费的,怎么办呢?于是就把目光投向了免费的邮箱,我先在网上找了一个工具类,测试验证码发送成功。
既然能发送了,就想要搞特殊一点,例如发送成html代码美化一下、加些图片之类的。经测试,那个工具类无法完成,当时就放弃了这个想法,因为在实习,时间不是很充裕。
既然现在有时间了,当然要看一下怎么实现更多的功能,于是又在网上找些代码学习,写出了如下代码:
package com.geecke.tools.mail;
import java.io.Serializable;
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message.RecipientType;
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;
/**
* 邮件发送器
*
* JavaMail 版本: 1.6.0
* JDK 版本: JDK 1.8
*
* @author iu_chang
* @version 3.2
*
*/
public class MailTransmitter implements Serializable {
private static final long serialVersionUID = 1L;
/** 发件人账号 */
private String account;
/** 发件人名称 */
private String name;
/** 发件人密码或授权码 */
private String password;
/** SMTP服务器地址 */
private String host;
/** 邮件编码 */
private String encoding;
/**
* 创建一个编码为UTF-8的邮件发送器
*
* @param account
* 用来发送邮件的账号
* @param name
* 用来发送邮件的账号的名称
* @param password
* 账号对应的密码<br>
* 如果该邮箱服务商规定第三方需要使用授权码,则此处应填写授权码
* @param host
* 邮箱的smtp服务器地址<br>
* 一般格式是smtp.xxx.com,例如网易163的是:smtp.163.com<br>
* <br>
* 注:需手动开启POP3/SMTP/IMAP服务
*/
public MailTransmitter(String account, String name, String password, String host) {
this.account = account;
this.name = name;
this.password = password;
this.host = host;
this.encoding = "UTF-8";
}
/**
* 创建一个邮件发送器
*
* @param account
* 用来发送邮件的账号
* @param name
* 用来发送邮件的账号的名称
* @param password
* 账号对应的密码<br>
* 如果该邮箱服务商规定第三方需要使用授权码,则此处应填写授权码
* @param host
* 邮箱的smtp