public final class MailUtils {
/** 发件人称号,同邮箱地址 */
private static final String USER = "*********@163.com";
/** 如果是qq邮箱可以使户端授权码,或者登录密码 */
private static final String PASSWORD = "ACWIFIYRISJPZIPM";
/** 附件添加的组件 */
private static Multipart mp;
/**
* 发送验证信息的邮件
* @param to 收件人邮箱
* @param cc 抄送人邮箱
* @param text 邮件正文
* @param title 标题
*/
public static boolean sendMail(String to, String cc, String text, String title){
try {
final Properties props = new Properties();
// 需要验证用户名密码
props.put("mail.smtp.auth", "true");
// 邮件发送协议
props.put("mail.transport.protocol", "smtp");
// 邮件服务器
props.put("mail.smtp.host", "smtp.163.com");
// 发件人的账号
props.put("mail.user", USER);
// 发件人的密码
props.put("mail.password", PASSWORD);
// 构建授权信息,用于进行SMTP进行身份验证
Authenticator authenticator = new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
// 用户名、密码
String userName = props.getProperty("mail.user");
String password = props.getProperty("mail.password");
return new PasswordAuthentication(userName, password);
}
};
// 环境属性使用和授权信息,创建邮件会话
Session mailSession = Session.getInstance(props, authenticator);
// 开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
// mailSession.setDebug(true);
// 创建邮件消息
MimeMessage message = new MimeMessage(mailSession);
// 设置发件人
String username = props.getProperty("mail.user");
Address form = new InternetAddress(username);
message.setFrom(form);
// 设置收件人
Address toAddress = new InternetAddress(to);
message.setRecipient(Message.RecipientType.TO, toAddress);
// 设置抄送人
if (cc != null) {
Address ccAddress = new InternetAddress(cc);
message.setRecipient(Message.RecipientType.TO, ccAddress);
}
// 设置邮件标题
message.setSubject(title);
// 内容组件
mp = new MimeMultipart();
// 设置邮件的内容体
BodyPart bp = new MimeBodyPart();
bp.setContent("<meta http-equiv=Content-Type content=text/html; charset=UTF-8>" + text, "text/html;charset=UTF-8");
mp.addBodyPart(bp);
// 添加附件
addFileAffix("C:\\Users\\dell\\Desktop\\新建文本文档.txt)
message.setContent(mp);
message.saveChanges();
// 发送邮件
Transport.send(message);
return true;
}catch (Exception e){
e.printStackTrace();
}
return false;
}
/**
* 增加发送附件
*
* @param filename 邮件附件的地址,只能是本机地址而不能是网络地址,否则抛出异常
*/
public static boolean addFileAffix(String filename) {
try {
BodyPart bp = new MimeBodyPart();
FileDataSource file = new FileDataSource(filename);
bp.setDataHandler(new DataHandler(file));
// 解决附件名称乱码
bp.setFileName(MimeUtility.encodeText(file.getName(), "utf-8", null));
// 添加附件
mp.addBodyPart(bp);
} catch (Exception e) {
System.err.println("增加邮件附件:" + filename + "发生错误!" + e);
return false;
}
return true;
}
public static void main(String[] args) throws Exception { // 做测试用
MailUtils.sendMail("********@qq.com", null,"你好,这是一封测试邮件,无需回复。","测试邮件");
System.out.println("发送成功");
}
}
评论区