1. 安装jdk,配置好环境变量
2. 安装 JavaMail API 和 Java Activation Framework(JAF)
3. QQ设置,生成授权码
4. 程序完整代码
- SendQQEmail.java
- 使用第三方邮件服务器——QQ的SMTP服务器
import java.security.GeneralSecurityException;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import com.sun.mail.util.MailSSLSocketFactory;
public class SendQQEmail
{
public static void main(String [] args) throws GeneralSecurityException
{
String to = "[email protected]";
String from = "[email protected]";
String host = "smtp.qq.com";
Properties properties = System.getProperties();
properties.setProperty("mail.smtp.host", host);
properties.put("mail.smtp.auth", "true");
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
properties.put("mail.smtp.ssl.enable", "true");
properties.put("mail.smtp.ssl.socketFactory", sf);
Session session = Session.getDefaultInstance(properties, new Authenticator(){
public PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication("[email protected]", "xxxxxxxxxxxxx");
}
});
try{
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject("This is the Subject Line!");
message.setText("This is actual message");
Transport.send(message);
System.out.println("Sent message successfully");
}catch (MessagingException mex) {
mex.printStackTrace();
}
}
}
- 编译执行
- 说明
- 如果收件箱不存在,则QQ邮箱收到退回邮件
- 如果收件箱存在,QQ邮箱发送成功,但是只有收件箱查得到邮件
- 亲测,163邮箱、Gmail邮箱都能收到QQ邮箱发送的邮件