邮件发送

发布时间 2023-03-29 13:23:11作者: 数星观月

邮件发送图示

 

 创建一个java模块,建一个lib目录,导入mail.jar(https://repo1.maven.org/maven2/javax/mail/mail/1.4.7/mail-1.4.7.jar)和activation.jar(https://repo1.maven.org/maven2/javax/activation/activation/1.1.1/activation-1.1.1.jar) 两个依赖。

向自己的QQ邮箱发送邮件,需要在QQ邮箱设置下的账户开启POP3/SMTP服务,得到授权码。

具体代码如下

<p>

//发送一封简单邮件
public class MailDemo01 {
public static void main(String[] args) throws Exception {
Properties prop = new Properties();
prop.setProperty("mail.host","smtp.qq.com");//设置QQ邮件服务器
prop.setProperty("mail.transport.protocol","smtp");//邮件发送协议
prop.setProperty("mail.smtp.auth","true");//需要验证用户名和密码
//关于QQ邮箱,还要设置SSL加密
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
prop.put("mail.smtp.ssl.enable","true");
prop.put("mail.smtp.ssl.socketFactory",sf);
//使用JavaMail发送邮件的5个步骤
//1、创建定义整个应用程序所需的环境信息的Session对象
Session session = Session.getDefaultInstance(prop, new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("QQ账号","授权码");
}
});
//2、通过session得到transport对象
Transport ts = session.getTransport();
//3、使用邮箱的用户名和授权码连上邮件服务器
ts.connect("smtp.qq.com","QQ账号","授权码");
//4、创建邮件
MimeMessage message = new MimeMessage(session);
//指明邮件的发件人
message.setFrom(new InternetAddress("QQ账号"));
//指明邮件的收件人
message.setRecipient(Message.RecipientType.TO,new InternetAddress("QQ账号"));
//邮件的标题
message.setSubject("简单文本邮件");
//邮件的内容
message.setContent("你好","text/html;charset=UTF-8");
//5、发送邮件
ts.sendMessage(message,message.getAllRecipients());
//6、关闭连接
ts.close();
}
}

</p>

这里可能会出现一个问题,我使用的jdk17有个协议被禁止了,需要修改(具体修改参考问题中的Exception in thread "main" javax.mail.MessagingException: Could not connect to SMTP host: smtp.qq.com, port: 465;)。