此文章只是基础代码,需要自己深层次的封装,适用于初次开发工作者
1代码
private static final String from="";//163邮件的账号
private static final String host = "smtp.163.com";
private static final String password = "";//163邮箱的授权码,下面会详细描述怎么开通【注意,不是密码】
public static boolean sendMail(String to, String content){
Properties prop = new Properties();
prop.setProperty("mail.host", host);
prop.setProperty("mail.smtp.auth", "true");
prop.setProperty("mail.transport.protocol", "smtp");
/* prop.put("mail.smtp.ssl.enable", true);*/
// 开启SSL加密,否则会失败
try {
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);//这一句必须加上,不然会报错,我的博客中有提到,不知道的,可以去看 :https://blog.****.net/QinTao9961220/article/details/108917422
prop.put("mail.smtp.ssl.enable", "true");
prop.put("mail.smtp.ssl.socketFactory", sf);
Session session = Session.getInstance(prop);
/* prop.put("mail.smtp.ssl.enable", true);*/
Transport ts = session.getTransport();
// 连接邮件服务器:邮箱类型,帐号,授权码代替密码(更安全)
ts.connect(host,from, password);//后面的字符是授权码,用qq密码反正我是失败了(用自己的,别用我的,这个号是我瞎编的,为了。。。。)
// 创建邮件对象
MimeMessage message = new MimeMessage(session);
// 指明邮件的发件人
message.setFrom(new InternetAddress(from));
message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
// 邮件的标题
message.setSubject("test");
// 邮件的文本内容
/*int code=100000+(int)(899999*Math.random());
System.out.println(code);*/
message.setContent(content, "text/html;charset=UTF-8");
// 发送邮件
ts.sendMessage(message, message.getAllRecipients());
ts.close();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}解释一下方法中的参数含义:
String content:发送的内容,如果是验证码,如下图代码:
private String codeContent(int code){
return "【test】验证码是:"+code+"<br>您正在使用注册功能,该验证码仅用于注册验证,请勿泄露给他人使用。5分钟内有效!<br>";
}public static int getCode(){
return 100000+(int)(899999*Math.random());
}
2.怎么开通163邮箱发邮件功能
2.1注册163邮箱,然后登陆进去
2.2具体开通
2.2.1点击设置后,如下操作:
2.2.2开启IMAP/SMTP服务
2.2.3新增授权码【上述开通时,就会有一个默认的授权码,你可以用,一定要记住,如果没有记住,如下图操作】
到这里就完事了,把授权码复制到代码中,可以成功发送邮件,亲测有效
OK!问题解决!不会的给我私信!
觉得有帮助的可以关注一波!经常分享编程踩坑经验!