您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
14-注册功能_邮件激活_发送邮件(主要是使用java发邮件)
发布时间:2022-10-16 20:29:40编辑:雪饮阅读()
首先maven项目则发邮件的依赖坐标为:
<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
<version>1.5.6</version>
</dependency>
需要用到的单元测试依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>compile</scope>
</dependency>
我们这里要用qq邮箱给163邮箱发送邮件,所以你要分别有这两个邮箱,并且我觉得要确保你的stmp协议双方都是开启的,我没有仔细排查过,但是毕竟这里用的就是stmp协议,qq邮箱这里做为发件箱,所以需要设置下客户端授权码
然后具体的发送邮件的实现如:
package cn.itcast.travel.util;
import javax.mail.*;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
public class MyMail {
public void function1(){
try {
//这里竟然自己创建属性,而不是从属性文件中获取
final Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.host", "smtp.qq.com");
// 发件人的账号
props.put("mail.user","1509272975@qq.com");
/*发件人的密码(客户端授权码,在发件人处设置,例如qq邮箱的设置路径“
设置=》账户=》POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务=》‘在第三方登录QQ邮箱,可能存在邮件泄露风险,甚至危害Apple ID安全,建议使用QQ邮箱手机版登录。
继续获取授权码登录第三方客户端邮箱 。 生成授权码’”),qq邮箱生成的客户端授权码有空格,则要去除空格
*/
props.put("mail.password","fxtjjseumslybagf");
// 构建授权信息,用于进行SMTP进行身份验证
Authenticator authenticator = new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
// 用户名、密码
String userName = props.getProperty("mail.user");
String password = props.getProperty("mail.password");
return new PasswordAuthentication(userName, password);
}
};
// 使用环境属性和授权信息,创建邮件会话
Session mailSession = Session.getInstance(props, authenticator);
// 创建邮件消息
MimeMessage message = new MimeMessage(mailSession);
// 设置发件人
String username = props.getProperty("mail.user");
InternetAddress form = new InternetAddress(username);
message.setFrom(form);
// 设置收件人
InternetAddress toAddress = new InternetAddress("m13916354914@163.com");
message.setRecipient(Message.RecipientType.TO, toAddress);
// 设置邮件标题
message.setSubject("测试标题");
// 设置邮件的内容体
message.setContent("测试内容", "text/html;charset=UTF-8");
// 发送邮件
Transport.send(message);
}
catch (Exception e) {
e.printStackTrace();
}
}
}
我们要为这个实现类做一个单元测试,则在java这边很简单直接选中类名右键generate…=>Test…接下来在Create Test的弹窗中Testing library中选择Junit3,毕竟这里上面我们使用的junit的依赖坐标的版本就是3系列的。
然后在Generate test methods for下面勾选你刚才要单元测试的这个类中的方法即可创建单元测试类如:
package cn.itcast.travel.util;
import junit.framework.TestCase;
public class MyMailTest extends TestCase {
public void testFunction1() {
new MyMail().function1();
}
}
然后执行单元测试若没有报错,则邮件发送成功
关键字词:发送邮件,java,发邮件
相关文章
- 11-java项目编写代码并运行
- 10-Idea创建Java项目-使用骨架
- 09-Idea创建Java项目-不使用骨架(自动创建初始化pom.x
- 14_JSON_解析器Jackson_json转Java对象
- 13_JSON_解析器Jackson_java对象转json_List&Map(Hash
- 12_JSON_解析器Jackson_java对象转json_注解(JsonIgno
- 11_JSON_解析器Jackson_java对象转json
- 12_JSP_概念(嵌入式java脚本控制台与页面同时输出)
- 15_JavaScript_对象_Function(一句话动态创建方法并执
- 12_JDBCTemplate_执行DQL语句