1 准备

Jar包下载地址:

链接: https://pan.baidu.com/s/1kFZgWRR8yZaQH_baf6tzAg 提取码: x2e8

邮箱:授权码

2.案例:

通过QQ邮箱服务器

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.util.Properties; public class SendQQMailUtil { static String FROM = ""; // 发件人地址
static String AFFIX = ""; // 附件地址
static String AFFIXNAME = ""; // 附件名称
static String USER = ""; // 用户名
static String PWD = ""; // QQ的授权码
static String SUBJECT = ""; // 邮件标题
static String[] TOS = new String[]{""}; // 收件人地址
static String context = ""; //邮件正文 public static void main(String[] args) {
Properties properties = new Properties();
properties.put("mail.transport.protocol", "smtp");// 连接协议
properties.put("mail.smtp.host", "smtp.qq.com");// 主机名
properties.put("mail.smtp.port", 465);// 端口号
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.ssl.enable", "true");// 设置是否使用ssl安全连接 ---一般都使用
properties.put("mail.debug", "true");// 设置是否显示debug信息 true 会在控制台显示相关信息
// 得到回话对象
Session session = Session.getInstance(properties);
// 获取邮件对象
Message message = new MimeMessage(session);
try {
// 设置发件人邮箱地址
message.setFrom(new InternetAddress(FROM));
// 设置收件人邮箱地址
InternetAddress[] sendTo = new InternetAddress[TOS.length]; // 加载收件人地址
for (int i = 0; i < TOS.length; i++) {
sendTo[i] = new InternetAddress(TOS[i]);
}
message.setRecipients(Message.RecipientType.TO, sendTo);
// 设置邮件标题
message.setSubject(SUBJECT); Multipart multipart = new MimeMultipart();//向multipart对象中添加邮件的各个部分内容,包括文本内容和附件
// 设置邮件内容
BodyPart contentPart = new MimeBodyPart();//设置邮件的文本内容
contentPart.setText(context);
multipart.addBodyPart(contentPart);
BodyPart messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(AFFIX);
messageBodyPart.setDataHandler(new DataHandler(source));//添加附件的内容
sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();//添加附件的标题
messageBodyPart.setFileName("=?GBK?B?"+ enc.encode(AFFIXNAME.getBytes()) + "?=");
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);//将multipart对象放到message中 // 得到邮箱对象
Transport transport = session.getTransport();
// 连接自己的邮箱账户
transport.connect(USER, PWD);// 密码为QQ邮箱开通的stmp服务后得到的客户端授权码 // 发送邮件
transport.sendMessage(message, message.getAllRecipients());
transport.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}

通过163邮箱服务器

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.util.Properties; public class Send163MailUtil {
static String FROM = ""; // 发件人地址
static String AFFIX = ""; // 附件地址
static String AFFIXNAME = ""; // 附件名称
static String USER = ""; // 用户名
static String PWD = ""; // 163的授权码
static String SUBJECT = ""; // 邮件标题
static String[] TOS = new String[]{""}; // 收件人地址
static String context = ""; //邮件正文 public static void main(String[] args) {
Properties props = new Properties(); //smtp服务器
props.put("mail.smtp.host", "smtp.163.com");//设置发送邮件的邮件服务器的属性(这里使用网易的smtp服务器)
props.put("mail.smtp.auth", "true"); //需要经过授权,也就是有户名和密码的校验,这样才能通过验证(一定要有这一条)
props.put("mail.smtp.ssl.enable", "true");// 设置是否使用ssl安全连接 ---一般都使用
props.put("mail.debug", "true");// 设置是否显示debug信息 true 会在控制台显示相关信息
props.put("mail.smtp.port", 465);// 端口号 Session session = Session.getDefaultInstance(props);//用props对象构建一个session
MimeMessage message = new MimeMessage(session);//用session为参数定义消息对象
try {
message.setFrom(new InternetAddress(FROM));// 加载发件人地址
InternetAddress[] sendTo = new InternetAddress[TOS.length]; // 加载收件人地址
for (int i = 0; i < TOS.length; i++) {
sendTo[i] = new InternetAddress(TOS[i]);
}
message.addRecipients(Message.RecipientType.TO,sendTo);
message.addRecipients(MimeMessage.RecipientType.CC, InternetAddress.parse(FROM));//设置在发送给收信人之前给自己(发送方)抄送一份,不然会被当成垃圾邮件,报554错
message.setSubject(SUBJECT);//加载标题
Multipart multipart = new MimeMultipart();//向multipart对象中添加邮件的各个部分内容,包括文本内容和附件
BodyPart contentPart = new MimeBodyPart();//设置邮件的文本内容
contentPart.setText(context);
multipart.addBodyPart(contentPart);
if(!AFFIX.isEmpty()){//添加附件
BodyPart messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(AFFIX);
messageBodyPart.setDataHandler(new DataHandler(source));//添加附件的内容
sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();//添加附件的标题
messageBodyPart.setFileName("=?GBK?B?"+ enc.encode(AFFIXNAME.getBytes()) + "?=");
multipart.addBodyPart(messageBodyPart);
}
message.setContent(multipart);//将multipart对象放到message中
message.saveChanges(); //保存邮件
Transport transport = session.getTransport("smtp");//发送邮件
transport.connect(USER, PWD);//连接服务器的邮箱
transport.sendMessage(message, message.getAllRecipients());//把邮件发送出去
transport.close();//关闭连接
} catch (Exception e) {
e.printStackTrace();
}
}
}

公司自身邮箱服务器

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.util.Properties; public class MailUtil { static String FROM = ""; // 发件人地址
static String AFFIX = ""; // 附件地址
static String AFFIXNAME = ""; // 附件名称
static String USER = ""; // 用户名
static String PWD = ""; // 密码
static String SUBJECT = ""; // 邮件标题
static String[] TOS = new String[]{""}; // 收件人地址
static String context = ""; //邮件正文 public static void main(String[] args) {
Properties props = new Properties(); //smtp服务器
props.put("mail.smtp.host", "");//设置发送邮件的邮件服务器的属性(这里使用网易的smtp服务器)
props.put("mail.smtp.auth", "true"); //需要经过授权,也就是有户名和密码的校验,这样才能通过验证(一定要有这一条)
props.put("mail.debug", "true");// 设置是否显示debug信息 true 会在控制台显示相关信息 Session session = Session.getDefaultInstance(props);//用props对象构建一个session
MimeMessage message = new MimeMessage(session);//用session为参数定义消息对象
try {
message.setFrom(new InternetAddress(FROM));// 加载发件人地址
InternetAddress[] sendTo = new InternetAddress[TOS.length]; // 加载收件人地址
for (int i = 0; i < TOS.length; i++) {
sendTo[i] = new InternetAddress(TOS[i]);
}
message.addRecipients(Message.RecipientType.TO,sendTo);
message.addRecipients(MimeMessage.RecipientType.CC, InternetAddress.parse(FROM));//设置在发送给收信人之前给自己(发送方)抄送一份,不然会被当成垃圾邮件,报554错
message.setSubject(SUBJECT);//加载标题
Multipart multipart = new MimeMultipart();//向multipart对象中添加邮件的各个部分内容,包括文本内容和附件
BodyPart contentPart = new MimeBodyPart();//设置邮件的文本内容
contentPart.setText(context);
multipart.addBodyPart(contentPart);
if(!AFFIX.isEmpty()){//添加附件
BodyPart messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(AFFIX);
messageBodyPart.setDataHandler(new DataHandler(source));//添加附件的内容
sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();//添加附件的标题
messageBodyPart.setFileName("=?GBK?B?"+ enc.encode(AFFIXNAME.getBytes()) + "?=");
multipart.addBodyPart(messageBodyPart);
}
message.setContent(multipart);//将multipart对象放到message中
message.saveChanges(); //保存邮件
Transport transport = session.getTransport("smtp");//发送邮件
transport.connect(USER, PWD);//连接服务器的邮箱
transport.sendMessage(message, message.getAllRecipients());//把邮件发送出去
transport.close();//关闭连接
} catch (Exception e) {
e.printStackTrace();
}
}
}

测试邮箱是否可以正常发送:

参考:

https://www.cnblogs.com/moris5013/p/9729422.html

https://www.cnblogs.com/xmqa/p/8458300.html

最新文章

  1. MS SQL统计信息浅析下篇
  2. Arctext.js - 基于 CSS3 &amp; jQuery 的文本弯曲效果
  3. 騰訊RTX的API開發,給RTX開個天窗
  4. selenium 使用笔记
  5. c#中用DirectShow实现媒体播放器的核心(1) DirectShow简介
  6. Ubuntu snappy is lame
  7. lesson - 9 课程笔记
  8. Android屏幕设置只允许上下旋转
  9. Python简单基础小程序
  10. vue-i18n和ElementUI国际化使用
  11. MAC上截图,编辑图片与恢复图片
  12. CentOS 7创建自定义KVM模板(现有KVM迁移到另外一台机)
  13. [ 9.26 ]CF每日一题系列—— 771B递推问题
  14. dialog 菜单
  15. 顺利编译 binutiles-gcc-glibc
  16. rabbitmq的安装和使用
  17. UNP学习总结(二)
  18. PKU 2002 Squares(二维点哈希+平方求余法+链地址法)
  19. 005——VUE中的v-text与v-html的使用
  20. 160823、ionic上拉/下拉更新数据

热门文章

  1. 隐藏input输入框的增减按钮
  2. python容器类型列表的操作
  3. Acquistion Location Confidence for accurate object detection
  4. 2019-10-24:伪静态,VULHUB搭建靶场,宽字节sql注入,笔记
  5. day 27 网路编程 面向对象多继承
  6. css三大特效之优先级
  7. Spring Boot通过ImportBeanDefinitionRegistrar动态注入Bean
  8. 【Android - 控件】之MD - RecyclerView的使用
  9. Android ListView的header footer设置visibility gone不起作用
  10. 用 python 分析基金!让赚钱赢在起跑线!