java发送邮件功能,以发送qq邮件为例
时间:2022-04-29
本文章向大家介绍java发送邮件功能,以发送qq邮件为例,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
问题①: java发送qq邮件出现如下错误的解决方法:
503 Error: need EHLO and AUTH first !
pop.put("mail.smtp.auth", "true");//注意value值不能不设置,并且不能是Boolean类型,应为字符串,否则会报如上所示错误
问题②: Could not connect to SMTP host: smtp.qq.com, port: 465, response: -1
原因:
465端口是为SMTPS(SMTP-over-SSL)协议服务开放的,这是SMTP协议基于SSL安全协议之上的一种变种协议.
解决方法:
配置文件需要加上如下代码即可解决.
pop.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
附上所有的代码:
配置文件:
mail:
mailhost: smtp.qq.com
mailport: 465
user: 邮箱用户名
password: 密码(qq为授权码)
mailFrom: xxx@foxmail.com
mailTo: xxx@qq.com,xxx@qq.com,xxx@foxmail.com
properties:
mail:
smtp:
auth: true
mailtimeout: 1000
mailssl: javax.net.ssl.SSLSocketFactory
starttls:
enable: true
required: true
java代码:
@Value("${mailhost}")
private String host;
@Value("${mailport}")
private Integer port;
@Value("${user}")
private String username;
@Value("${password}")
private String password;
@Value("${mailFrom}")
private String from;
@Value("${mailTo}")
private String [] to;
@Value("${auth}")
private String auth;
@Value("${enable}")
private Boolean enable;
@Value("${required}")
private Boolean required;
@Value("${mailtimeout}")
private Integer timeout;
@Value("${mailssl}")
private String ssl;
public void onApplicationEvent(ApplicationEvent event) {
System.out.println("email cfg....");
System.out.println("print:"+this.toString());
//创建一个发送者对象
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost(this.host);
mailSender.setPort(this.port);
mailSender.setUsername(this.username);
mailSender.setPassword(this.password);
// 加认证机制
Properties pop = new Properties();
pop.put("mail.smtp.host", this.host);
// pop.put("mail.smtp.port", this.port);//已经在上面加过
pop.put("mail.smtp.auth", this.auth);//必须是字符串而不能是boolean否则报错
pop.put("mail.smtp.starttls.enable", this.enable);
pop.put("mail.smtp.timeout", this.timeout);
pop.put("mail.smtp.socketFactory.class", this.ssl);
mailSender.setJavaMailProperties(pop);
//组织邮件参数并执行发送
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(this.from);
message.setTo(this.to);
message.setSubject("主题:测试,spring boot发送邮件.");
message.setText("测 试n 邮件为程序发送,是否收到?请回答");
mailSender.send(message);
System.out.println("send end....");
}
@Override
public String toString() {
return "EmailConfiguration [host=" + host + ", port=" + port + ", username=" + username
+ ", password=" + password + ", from=" + from + ", to=" + to + ", auth=" + auth
+ ", enable=" + enable + ", required=" + required + ", timeout=" + timeout + "]";
}
- 常用rsync命令操作梳理
- 无人驾驶系列——深度学习笔记:Tensorflow基本概念
- Android Fragment应用实战
- c#4.0中的不变(invariant)、协变(covariant)、逆变(contravariant)小记
- 用于.NET的可移植HTTP客户端
- 我是如何利用CSRF Get DedeCms Shell的
- asp.net webform中submit按钮使用不当很容易犯的一个错误
- 使用代码为textview设置drawableLeft
- 使用 ASP.NET Web API 构建超媒体 Web API
- Robert Xiao:下一个触点在哪里?
- 使用脚本操作UpdatePanel中控件的问题
- Gerrit上分支操作记录(创建分支、删除分支)
- flash 显示 qq客服状态
- android获得ImageView图片的等级
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 省略号——中英文以及数字1旁边的差异
- 两有序数组间相加的TOPK问题
- 关于url传值的问题—encodeURIComponent
- Markdown 调整图片位置与大小
- 展开与折叠菜单动画
- Vue 中使用Pug
- curl在raw.githubusercontent.com下载文件时出现无法链接问题
- linux查看端口进程信息—lsof工具
- vscode配置:双击选中连字符
- 实现简单登陆注册功能流程分析
- centos系统中yum安装应用出现doesn't have enough cached
- Mac os上显示与隐藏文件
- windows启动tomcat闪退,乱码问题解决
- Homebrew的安装
- 小程序轮播中嵌入视频-关于swiper、video组件与block标签