什么是JavaMail?
JavaMail是Java平台上的一个API,用于实现电子邮件相关的功能。 它提供了发送、接收和处理电子邮件的能力,可以用于构建邮件客户端或邮件服务器应用程序。JavaMail API支持多种邮件协议,包括SMTP、POP3和IMAP,并且可以与不同的邮件服务器进行交互。
(1)向单个用户发送邮箱
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import com.apesource.util.JavaMailUtils;
// 发送普通文本内容的邮件
public class Main {
public static void main(String[] args) {
try {
// 1.创建Session会话
Session session = JavaMailUtils.createSession();
// 2.创建邮件对象
MimeMessage message = new MimeMessage(session);
message.setSubject("这是一封测试邮件,别害怕!"); // 设置邮件标题
message.setText("爱你孤身走暗巷,爱你走得很安详!"); // 设置邮件正文
message.setFrom(new InternetAddress("billgogoogooo@126.com")); // 发件人
message.setRecipient(RecipientType.TO, new InternetAddress("55094839@qq.com")); // 收件人
// 3.发送
Transport.send(message);
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
(2)向多个用户发送邮箱
import java.net.InetAddress;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import com.apesource.util.JavaMailUtils;
// 抄送多个邮箱地址
// 邮件内容包含HTML标签
public class Main {
public static void main(String[] args) {
try {
// 1.创建Session会话
Session session = JavaMailUtils.createSession();
// 2.创建MimeMessage邮件对象
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress("billgogoogooo@126.com")); // 发件人
message.setRecipient(RecipientType.TO, new InternetAddress("55094839@qq.com")); // 收件人
message.setRecipients(RecipientType.CC, new InternetAddress[] {new InternetAddress("55094839@qq.com"),new InternetAddress("1423161910@qq.com")}); // 群发(抄送多人)
message.setSubject("测试邮件");
// 邮件正文中包含html标签
message.setText("你被<b>太阳</b>照耀的时候,也温暖着自己!","utf-8","html");
// 3.发送邮件
Transport.send(message);
} catch (AddressException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
(3)邮件中既包含正文,又包含附件
import javax.mail.Session;
import javax.mail.Transport;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import javax.activation.DataHandler;
import javax.mail.BodyPart;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.util.ByteArrayDataSource;
import com.apesource.util.JavaMailUtils;
// 发送带有"附件"的邮件
public class Main {
public static void main(String[] args) {
try {
// 1.创建Session会话
Session session = JavaMailUtils.createSession();
// 2.创建MimeMessage邮件对象
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress("billgogoogooo@126.com")); // 发件人
message.setRecipient(RecipientType.TO, new InternetAddress("55094839@qq.com")); // 收件人
message.setRecipients(RecipientType.CC, new InternetAddress[] {new InternetAddress("55094839@qq.com"),new InternetAddress("1423161910@qq.com")}); // 群发(抄送多人)
message.setSubject("鸡汤邮件"); // 邮件标题
// 邮件仅包含正文
// message.setText("用脑子干事算是工作,不用脑子的只能算是动作!");
// 邮件中既包含正文,又包含附件
// 正文
BodyPart textPart = new MimeBodyPart();
textPart.setContent("用<b>脑子</b>干事算是工作,不用<b>脑子</b>的只能算是动作!", "text/html;charset=utf-8");
// 附件
BodyPart filePart = new MimeBodyPart();
filePart.setFileName("李云龙阁下"); // 附件文件显示名称
// 上传附件文件
filePart.setDataHandler(
new DataHandler(
new ByteArrayDataSource(
Files.readAllBytes(Paths.get("C:\\Users\\APESOURCE\\Pictures\\douban\\p900419027.jpg")),
"application/octet-stream")));
// 将正文+附件组装成Multipart对象
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(textPart);
multipart.addBodyPart(filePart);
// 将Multipart对象放入邮件
message.setContent(multipart);
// 3.发送邮件
Transport.send(message);
} catch (AddressException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
(4)邮件中正文显示图片
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import javax.activation.DataHandler;
import javax.mail.BodyPart;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.Message.RecipientType;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.util.ByteArrayDataSource;
public class Main {
public static void main(String[] args) {
try {
//1.创建会话
Session session = JavaMailUtils.createSession();
//2.创建邮件对象
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress("1710311450@qq.com"));//发件人
message.setRecipient(RecipientType.TO, new InternetAddress("18691295798@163.com"));//主收件人
message.setRecipients(RecipientType.CC, new InternetAddress[] { new InternetAddress("3377025096@qq.com") });//抄送
//邮件正文
//正文
BodyPart textPart = new MimeBodyPart();
StringBuilder sb = new StringBuilder();
sb.append("<h1>hognzhu<h1>");
sb.append("<h1>猪猪侠<h1>");
sb.append("<img src\"cid:hz\"/>");//添加图片
//将StringBuilder放入textPart
textPart.setContent(sb.toString(),"text/html;charset=utf-8");
//上传图片
BodyPart img = new MimeBodyPart();
img.setDataHandler(new DataHandler(
new ByteArrayDataSource(
Files.readAllBytes(Paths.get("/Users/liyangyang/Downloads/1.jpg"))
,"application/octet-stream")));
//图片内容的ID
img.setHeader("Content-ID", "hz");
//将正文封装在Multiparty对象
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(textPart);
//将multiparty对象放入邮箱
message.setContent(multipart);
//发送邮件
Transport.send(message);
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}