一、流程
1.首先,需要创建一个邮件会话对象,用于与邮件服务器进行通信。可以使用JavaMail API中的Session类来实现。
2.接下来,需要创建一个MimeMessage对象,用于表示邮件内容。可以设置发件人、收件人、主题、正文等信息。
3.然后,需要设置邮件服务器的地址和端口号,以及发件人的邮箱账号和密码。可以使用JavaMail API中的Transport类来实现。
4.接着,将MimeMessage对象传递给Transport类的send()方法,发送邮件。
5.最后,关闭邮件会话对象,释放资源。
这就是发送邮件的基本流程。需要注意的是,发送邮件时需要确保邮件服务器地址、端口号、邮箱账号、密码等信息的正确性,以及网络连接的稳定性。
二、开启邮箱权限
邮箱的使用权限
网易邮箱–>设置–>QQ邮箱–>邮箱设置–>账户–>POP3/SMTP/IMAP
开启POP3/SMTP服务,然后获取16位授权码
三、代码编写
创建连接类
package com.example.demo;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
public final class JavaMailUntil {
private JavaMailUntil() {}
public static Session createSession() {
// 账号信息
String username = "@163.com";// 邮箱发送账号
String password = "";// 邮箱授权码
// 创建一个配置文件,并保存
Properties props = new Properties();
// SMTP服务器连接信息
// 126——smtp.126.com
// 163——smtp.163.com
// qqsmtp.qq.com"
props.put("mail.smtp.host", "smtp.163.com");// SMTP主机名
// 126——25
// 163——645
props.put("mail.smtp.port", "25");// 主机端口号
props.put("mail.smtp.auth", "true");// 是否需要用户认证
props.put("mail.smtp.starttls.enale", "true");// 启用TlS加密
Session session = Session.getInstance(props,new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username,password);
}
});
// 控制台打印调试信息
session.setDebug(true);
return session;
}
}
基础文本发送
try {
//1.创建Session对象
Session session = JavaMailUntil.createSession();
//2.创建MimeMessage邮件对象
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress("")); //发件人
message.setSubject("邮件标题"); //邮件标题
message.setText("文本信息");
message.setRecipient(RecipientType.TO, new InternetAddress("")); //收件人
//多人抄送使用new InternetAddress[] {}
message.setRecipients(RecipientType.CC, new InternetAddress[] {new InternetAddress("抄送人邮箱"),new InternetAddress("抄送人邮箱")});
Transport.send(message);
带附件邮件
try {
// 创建会话
Session session = JavaMailUntil.createSession();
// 创建邮件
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(""));
message.setRecipient(RecipientType.TO, new InternetAddress(""));
//message.setRecipients(RecipientType.CC, new InternetAddress[] {new InternetAddress("抄送人邮箱"),new InternetAddress("抄送人邮箱")});
message.setSubject("主题");
// 邮件主体
BodyPart textPart = new MimeBodyPart();
textPart.setContent("文件内容","text/html;charset=utf-8");
// 邮件附件
String fileName="你好.jpg";
String encodedFileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
//保证中文不乱码
BodyPart filePart = new MimeBodyPart();
filePart.setFileName(encodedFileName);
// 提交附件文件
filePart.setDataHandler(new DataHandler(new ByteArrayDataSource(Files.readAllBytes(Paths.get("文件路径地址")));
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(textPart);
multipart.addBodyPart(filePart);
// 将邮件装入信封
message.setContent(multipart);
Transport.send(message);
} catch (AddressException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}