电子邮件是—种用电子手段提供信息交换的通信方式,是互联网应用最广的服务。通过网络的电子邮件系统,用户可以以非常低廉的价格(不管发送到哪里,都只需负担网费)、非常快速的方式(几秒钟之内可以发送到世界上任何指定的目的地),与世界上任何一个角落的网络用户联系。
电子邮件可以是文字、图像、声音等多种形式。同时,用户可以得到大量免费的新闻、专题邮件,并轻松实现轻松的信息搜索。电子邮件的存在极大地方便了人与人之间的沟通与交流,促进了社会的发展。
<!-- https://mvnrepository.com/artifact/javax.mail/mail -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.activation/activation -->
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
static void sendSampleMail() throws GeneralSecurityException, MessagingException {
Properties prop = new Properties();
prop.setProperty("mail.host", "smtp.qq.com"); // 设置QQ邮件服务器
prop.setProperty("mail.transport.protocol", "smtp"); // 设置邮件发送协议
prop.setProperty("mail.smtp.auth", "true"); // 设置需要验证用户名和密码
// 关于QQ邮箱,还要设置SSL加密
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
prop.put("mail.smtp.ssl.enable", true);
prop.put("mail.smtp.ssl.socketFactory", sf);
// 使用JavaMail发送邮件的5个步骤
// 创建定义整个应用程序所需要的的环境信息的Session对象
Session session = Session.getDefaultInstance(prop, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("3350996729@qq.com", "123456");
}
});
// 开启Session的debug模式,这样就可以看到程序发送Email的运行状态
session.setDebug(true);
// 2、通过session得到transport对象
Transport transport = session.getTransport();
// 3、使用邮箱的用户名和授权码连上邮件服务器
transport.connect("smtp.qq.com", "3350996729@qq.com", "授权码");
// 4、创建邮件
MimeMessage message = new MimeMessage(session);
// 设置发件人
message.setFrom(new InternetAddress("3350996729@qq.com"));
// 设置收件人
message.setRecipient(Message.RecipientType.TO, new InternetAddress("1195703479@qq.com"));
// 设置邮件的标题
message.setSubject("这是一个测试邮件");
// 设置邮件的正文
message.setContent("这是一个测试邮件", "text/html;charset=UTF-8");
// 5、发送邮件
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
static void sendComplexMail() throws GeneralSecurityException, MessagingException {
Properties prop = new Properties();
prop.setProperty("mail.host", "smtp.qq.com"); // 设置QQ邮件服务器
prop.setProperty("mail.transport.protocol", "smtp"); // 设置邮件发送协议
prop.setProperty("mail.smtp.auth", "true"); // 设置需要验证用户名和密码
// 关于QQ邮箱,还要设置SSL加密
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
prop.put("mail.smtp.ssl.enable", true);
prop.put("mail.smtp.ssl.socketFactory", sf);
// 使用JavaMail发送邮件的5个步骤
// 创建定义整个应用程序所需要的的环境信息的Session对象
Session session = Session.getDefaultInstance(prop, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("3350996729@qq.com", "123456");
}
});
// 开启Session的debug模式,这样就可以看到程序发送Email的运行状态
session.setDebug(true);
// 2、通过session得到transport对象
Transport transport = session.getTransport();
// 3、使用邮箱的用户名和授权码连上邮件服务器
transport.connect("smtp.qq.com", "3350996729@qq.com", "授权码");
// 4、创建邮件
MimeMessage message = new MimeMessage(session);
// 设置发件人
message.setFrom(new InternetAddress("3350996729@qq.com"));
// 设置收件人
message.setRecipient(Message.RecipientType.TO, new InternetAddress("1195703479@qq.com"));
// 设置邮件的标题
message.setSubject("这是一个测试邮件");
// 设置邮件的正文
//message.setContent("这是一个测试邮件", "text/html;charset=UTF-8");
// 准备图片数据
MimeBodyPart image = new MimeBodyPart();
DataHandler dataHandler = new DataHandler(new FileDataSource("D:\\david\\video\\lisa.jpg"));
image.setDataHandler(dataHandler);
image.setContentID("lisa.jpg"); // 设置图片的ID
// 准备附件
MimeBodyPart zipfile = new MimeBodyPart();
zipfile.setDataHandler(new DataHandler(new FileDataSource("D:\\david\\video\\lisa.rar")));
zipfile.setFileName("lisa.rar"); // 设置附件的名字
// 准备正文
MimeBodyPart body = new MimeBodyPart();
body.setContent("带图片<img src='cid:lisa.jpg'>的邮件", "text/html;charset=UTF-8");
// 描述数据关系
MimeMultipart mimeMultipart = new MimeMultipart();
mimeMultipart.addBodyPart(body);
mimeMultipart.addBodyPart(image);
mimeMultipart.setSubType(("related")); // 内嵌资源
MimeBodyPart bodyContent = new MimeBodyPart();
bodyContent.setContent(mimeMultipart);
// 拼接附件
MimeMultipart allfile = new MimeMultipart();
allfile.addBodyPart(zipfile);
allfile.addBodyPart(bodyContent);
allfile.setSubType(("mixed")); // 附件资源
// 设置到消息中
message.setContent(allfile);
message.saveChanges();
// 5、发送邮件
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}