Utilisez Java pour implémenter une démo d'envoi d'e-mails (à l'aide de la boîte aux lettres QQ), mais l'envoi échoue toujours. Le service Smtp dans la boîte aux lettres QQ est également activé et le mot de passe est le code d'autorisation obtenu
.public static void main(String[] args) {
// 收件人电子邮箱
String to = "123@qq.com";
// 发件人电子邮箱
String from = "456@qq.com";
// 指定发送邮件的主机为 smtp.qq.com
String host = "smtp.qq.com"; //QQ 邮件服务器
// 获取系统属性
Properties properties = System.getProperties();
// 设置邮件服务器
properties.setProperty("mail.smtp.host", host);
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.port", "465");
properties.put("mail.smtp.socketFactory.port", "465");
properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
properties.put("mail.smtp.starttls.enable", "true");
properties.put("mail.smtp.socketFactory.fallback", "false");
properties.put("mail.smtp.starttls.enable", "true");
properties.put("mail.smtp.ssl.trust", "smtp.qq.com");
// 获取默认session对象
Session session = Session.getDefaultInstance(properties,new Authenticator(){
public PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication("456@qq.com", "123123"); //发件人邮件用户名、密码
}
});
session.setDebug(true);
try{
// 创建默认的 MimeMessage 对象
MimeMessage message = new MimeMessage(session);
// Set From: 头部头字段
message.setFrom(new InternetAddress(from));
// Set To: 头部头字段
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(to));
// Set Subject: 头部头字段
message.setSubject("This is the Subject Line!");
// 设置消息体
message.setText("This is actual message");
// 发送消息
Transport.send(message);
System.out.println("Sent message successfully....from w3cschool.cc");
}catch (MessagingException mex) {
mex.printStackTrace();
}
}
Message d'erreur
DEBUG SMTP : tentative de connexion à l'hôte "smtp.qq.com", port 465, isSSL false
javax.mail.MessagingException : impossible de se connecter à l'hôte SMTP : smtp.qq.com, port : 465 ;
L'exception imbriquée est :
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1972)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:642)
at javax.mail.Service.connect(Service.java:317)
at javax.mail.Service.connect(Service.java:176)
at javax.mail.Service.connect(Service.java:125)
at javax.mail.Transport.send0(Transport.java:194)
at javax.mail.Transport.send(Transport.java:124)
at com.syx.email.MailTest3.main(MailTest3.java:68)
Avez-vous déjà fait quelque chose de similaire ? Pouvez-vous s'il vous plaît me donner quelques conseils…^.^…
Problème de certificat numérique SSL, essayez simplement de supprimer la vérification du certificat numérique
);properties.put("mail.smtp.ssl.trust", "smtp.qq.com" // Commentez d'abord cette ligne