荐读
JavaMail邮件发送不成功的那些坑人情况及分析说明
javax.mail.AuthenticationFailedException异常的处理
QQ邮箱如何开启POP3/SMTP服务
发送说明
在idea中要配置好JavaEE,不然就没法玩耍,我用的是JavaEE6,自动下载的。
不然就是爆java.lang.NoClassDefFounfError: javax/activation/DataSource
其他几个包也要导进去:
不装好JavaEE,或者只装好JavaEE没导入单独的包,就会报错。
使用QQ邮箱会可能出现:javax.mail.AuthenticationFailedException 这个异常,请查阅上面的荐读文章来了解这个问题,与QQ邮箱本身有关。
一定要注意下面的代码中第26行的“开通pop3/smtp服务时的验证码”是怎么来的,不要以为是自己的Email-Password呀!
完整代码
import java.util.Properties;import javax.mail.Address;import javax.mail.Authenticator;import javax.mail.Message;import javax.mail.PasswordAuthentication;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;public class EMailSender {public static void main(String[] args) throws Exception {// 创建邮件的发送过程中用到的主机和端口号的属性文件Properties properties = new Properties();// 设置邮件发送方的主机地址,qq邮箱为properties.put("mail.smtp.host", "");// 设置发送邮件端口号properties.put("mail.smtp.port", "25");// 设置邮件发送需要认证properties.put("mail.smtp.auth", "true");// 创建邮件验证信息,即发送邮件的用户名和密码Authenticator authenticator = new Authenticator() {@Overrideprotected PasswordAuthentication getPasswordAuthentication() {// 重写验证方法,填写用户名,密码return new PasswordAuthentication("sender_email_address", "开通pop3/smtp服务时的验证码");}};// 根据邮件会话 构建一个邮件的sessionSession sendMailSession = Session.getDefaultInstance(properties, authenticator);// 创建一个邮件消息Message message = new MimeMessage(sendMailSession);// 创建邮件发送者地址Address senderAddress = new InternetAddress("sender_email_address");// 将原地址设置到消息的信息中message.setFrom(senderAddress);// 创建邮件的接收者地址Address receiverAddress = new InternetAddress("receiver_email_address");// 将接收者的地址设置到消息的信息中message.setRecipient(Message.RecipientType.TO, receiverAddress);// 设置邮件的主题message.setSubject("日常聊天");// 设置邮件的发送内容message.setText("Hello, BlankSpace");Transport.send(message);}}