1.1. 添加依赖
<dependency> <groupId>javax.activation</groupId> <artifactId>activation</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.6.2</version> </dependency>
如果不是maven项目,则直接导入javax.mail.jar和activation.jar两个jar文件即可。
1.2. 示例代码
package com.wanmait.mavendemo.util;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.*;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.Properties;
public class MailUtil0 {
//subject主题 content内容,to 邮件的接收方
public static void sendMail(String to,String subject,String content) {
// 发件人的 邮箱 和 密码
// 某些邮箱服务器为了增加邮箱本身密码的安全性,给 SMTP 客户端设置了独立密码(称为“授权码”),
//对于开启了独立密码的邮箱, 这里的邮箱密码必需使用这个独立密码(授权码)。
String account = "你的邮箱1025205118@qq.com";
String password = "这里是你的授权码";
// 发件人邮箱的 SMTP 服务器地址, 不同邮件服务器地址不同
// 网易163邮箱的 SMTP 服务器地址为: smtp.163.com
String emailSMTPHost = "smtp.qq.com";
// 1.创建连接对象,链接到邮箱服务器
Properties props = new Properties();// 参数配置
props.setProperty("mail.transport.protocol", "smtp");// 使用的协议(JavaMail规范要求)
props.setProperty("mail.smtp.host", emailSMTPHost);// 发件人的邮箱的 SMTP
// 服务器地址
props.setProperty("mail.smtp.auth", "true");// 需要请求认证
// 2.根据配置创建会话对象, 用于和邮件服务器交互
Session session = Session.getInstance(props, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(account, password);
}
});
try {
// 3.创建邮件对象
Message message = new MimeMessage(session);
// 3.1设置发件人
message.setFrom(new InternetAddress(account));
// 3.2设置收件人
message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(to));
//设置抄送
//message.setRecipients(MimeMessage.RecipientType.CC,new Address[]{new InternetAddress("itworker2006@126.com")});
message.setRecipient(MimeMessage.RecipientType.CC,new InternetAddress("qingsoft@126.com"));
//设置密送
//message.setRecipient(MimeMessage.RecipientType.BCC,new InternetAddress("6476003@qq.com"));
// 3.3设置邮件的主题
message.setSubject(subject);
// 3.4设置邮件的正文
//不带附件直接设置内容
message.setContent(content, "text/html;charset=UTF-8");
// 4.发送邮件
Transport.send(message);
} catch (MessagingException e) {
e.printStackTrace();
}
}
//subject主题 content内容,to 邮件的接收方,attachements附件
public static void sendMail(String to,String subject,String content,List<File> attachments) {
// 发件人的 邮箱 和 密码
// 某些邮箱服务器为了增加邮箱本身密码的安全性,给 SMTP 客户端设置了独立密码(称为“授权码”),
//对于开启了独立密码的邮箱, 这里的邮箱密码必需使用这个独立密码(授权码)。
String account = "自己的qq邮箱";
String password = "申请的授权码";
// 发件人邮箱的 SMTP 服务器地址, 不同邮件服务器地址不同
// 网易163邮箱的 SMTP 服务器地址为: smtp.163.com
String emailSMTPHost = "smtp.qq.com";
// 1.创建连接对象,链接到邮箱服务器
Properties props = new Properties();// 参数配置
props.setProperty("mail.transport.protocol", "smtp");// 使用的协议(JavaMail规范要求)
props.setProperty("mail.smtp.host", emailSMTPHost);// 发件人的邮箱的 SMTP
// 服务器地址
props.setProperty("mail.smtp.auth", "true");// 需要请求认证
// 2.根据配置创建会话对象, 用于和邮件服务器交互
Session session = Session.getInstance(props, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(account, password);
}
});
try {
// 3.创建邮件对象
Message message = new MimeMessage(session);
// 3.1设置发件人
message.setFrom(new InternetAddress(account));
// 3.2设置收件人
message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(to));
//设置抄送
//message.setRecipients(MimeMessage.RecipientType.CC,new Address[]{new InternetAddress("qingsoft@126.com")});
message.setRecipient(MimeMessage.RecipientType.CC,new InternetAddress("62999860@qq.com"));
//设置密送
//message.setRecipient(MimeMessage.RecipientType.BCC,new InternetAddress("6476003@qq.com"));
// 3.3设置邮件的主题
message.setSubject(subject);
// 3.4设置邮件的正文
//不带附件直接设置内容
// message.setContent(content, "text/html;charset=UTF-8");
//添加附件,需要特殊处理
listFile(content,attachments,message);
// 4.发送邮件
Transport.send(message);
} catch (MessagingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void listFile(String content, List<File> attachments, Message message) throws MessagingException, IOException {
Multipart multipart = new MimeMultipart();
//邮件正文
BodyPart contentPart = new MimeBodyPart();
contentPart.setContent(content, "text/html;charset=utf-8");
multipart.addBodyPart(contentPart);
//邮件附件
if (attachments != null) {
for (File attachment : attachments) {
BodyPart attachmentPart = new MimeBodyPart();
DataSource source = new FileDataSource(attachment);
attachmentPart.setDataHandler(new DataHandler(source));
//避免中文乱码的处理
attachmentPart.setFileName(MimeUtility.encodeWord(attachment.getName()));
multipart.addBodyPart(attachmentPart);
}
}
message.setContent(multipart);
//保存邮件
message.saveChanges();
}
public static void main(String[] args) {
MailUtil0 mailUtil = new MailUtil0();
String subject="来自万码学堂的邮件";
String code="23df";
String content ="<h1>来自万码云课的激活邮件,您的验证码是:</h1><h3><a href='http://www.wanmait.com/JavaMail/active?code="
+ code + "'>http://www.wanmait.com/JavaMail/active?code=" +code + "</h3>";
//mailUtil.sendMail("wangrf@qingsoft.net", subject,content);
mailUtil.sendMail("sunm@qingsoft.net", subject,content,Arrays.asList(new File("d:\\log.txt")));
}
}

0条评论
点击登录参与评论