我们在日常注册一个网站或者使用某个软件需要下载的时候,就需要注册功能。我们在注册时候,应用商官方就会给我们发一份email到我们的邮件,当点击邮件的时候,即激活成功,注册完成,才可以有接下来登录、下载的相关功能。因此,用java实现邮件发送还是挺重要的。本文就通过java来实现对邮箱发送邮件的功能。
具体实现 本文是以QQ邮箱作为案例,其他的邮箱也是类似的。我们在写代码之前首先要登录我们的QQ邮箱,然后对其进行一定的设置,从而获取POP3/SMTP服务,默认是关闭的需要我们手动去开启。具体步骤为:设置—>账户---->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务—>POP3/SMTP服务。具体操作过程如下:
这里需要我们通过自己的手机号按照提示的方式发送一条短信,才可以生成相应的激活码。具体操作如下:
我们用手机发送的内容如下:
短信发送成功后,然后点击 我已发送 按钮,就会生成对应的激活码,这个激活码是要填到我们代码中的,所以建议复制,不建议手写。写错了就邮箱收不到邮箱了。具体如下:
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
public final class MailUtils {
private static final String USER = "填你自己邮箱"; // 发件人称号,同邮箱地址
private static final String PASSWORD = "填写刚才获得的授权码"; // 可以使户端授权码
public static boolean sendMail(String to, String text, String title){
try {
final Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.host", "smtp.qq.com");
// 发件人的账号
props.put("mail.user", USER);
//发件人的密码
props.put("mail.password", PASSWORD);
// 构建授权信息,用于进行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(to);
message.setRecipient(Message.RecipientType.TO, toAddress);
// 设置邮件标题
message.setSubject(title);
// 设置邮件的内容体
message.setContent(text, "text/html;charset=UTF-8");
// 发送邮件
Transport.send(message);
return true;
}catch (Exception e){
e.printStackTrace();
}
return false;
}
public static void main(String[] args) throws Exception { // 做测试用
MailUtils.sendMail("填你自己邮箱","你好,这是一封测试邮件,无需回复。","测试邮件");
System.out.println("发送成功");
}
}
这里需要特别注意的是:希望读者研究一下代码,别直接粘贴过去,代码直接不可运行,会报错,需要大家特别留意。需要填写自己的邮箱以及相应的授权码。代码运行之后,IDEA效果如下:
这就意味着我们发送成功了,代码正确无误!!!我们再看看邮箱的情况,看是否收到了邮件:
看来我们成功了,收到了邮件,打开其中的一封邮箱,我们查看其中的内容,有种似曾相识的感觉:
我们有的时候在项目开发的时候或者在学习的时候会遇到一些很有意思的事情,就可以就将其记录下来,一则为了方便其他小伙伴需要的时候可以提供一些帮助,二则更是我们自己可以查看自己的文章当需要用到的时候,就相当于一个笔记本了。加油,每天努力的人会是最帅的,一定会有,加油吧,码元们!!!未来可期!!!!!!!!!!!!! 今天是2021S11英雄联盟全球总决赛,希望EDG能够突破重围,完美夺冠!!!银龙重铸之日,骑士归来之时。加油EDG,加油LPL。我立个Flag,要是EDG赢了,我就卸载英雄联,每天好好工作,注意休息!!!



