MailConnectException: impossible de se connecter à l'hôte, le port: smtp.gmail.com, 465; délai d'attente -1
J'ai besoin d'envoyer un e-mail à partir de mon application en utilisant Gmail comme serveur SMTP.
C'est mon connecteur de messagerie de classe et j'ai mis des valeurs dans un fichier de propriétés séparé
public class EmailConnector {
public static Session sessionCreate() {
final String fromEmail = ConfigurationManager.getInstance().getProperty(EmailConfig.SENDER_EMAIL.toString());
final String password = ConfigurationManager.getInstance().getProperty(EmailConfig.SENDER_PASSWORD.toString());
Properties props = new Properties();
props.put("mail.smtp.host", ConfigurationManager.getInstance().getProperty(EmailConfig.SMTP_HOST.toString()));
props.put("mail.smtp.socketFactory.port",
ConfigurationManager.getInstance().getProperty(EmailConfig.SSL_PORT.toString()));
props.put("mail.smtp.socketFactory.class",
ConfigurationManager.getInstance().getProperty(EmailConfig.SSL_FACTORY_CLASS.toString()));
props.put("mail.smtp.auth",
ConfigurationManager.getInstance().getProperty(EmailConfig.SMTP_AUTHENTICATION.toString()));
props.put("mail.smtp.port", ConfigurationManager.getInstance().getProperty(EmailConfig.SMTP_PORT.toString()));
Authenticator auth = new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(fromEmail, password);
}
};
return Session.getDefaultInstance(props, auth);
}
}
Propriétés:
#Email send configuration
SENDER_EMAIL = abcalerts@gmail.com
SENDER_PASSWORD = abcalert321
SMTP_HOST = smtp.gmail.com
SSL_PORT = 465
SMTP_AUTHENTICATION = true
SMTP_PORT = 465
SSL_FACTORY_CLASS = javax.net.ssl.SSLSocketFactory
Puis j'ai mis en place un mail de l'expéditeur de la classe, appelée "GroupEmail.class"
public class GroupEmail {
public void sendEmail() throws IOException {
String recipient = "[email protected]";
Session session = EmailConnector.sessionCreate();
/* subject of email */
String emailSubject = "ABC_Alert";
try {
MimeMessage msg = new MimeMessage(session);
msg.addHeader("Content-type", "text/HTML; charset=UTF-8");
msg.addHeader("format", "flowed");
msg.addHeader("Content-Transfer-Encoding", "8bit");
msg.setFrom(new InternetAddress("[email protected]", "ABC Alerts"));
msg.setReplyTo(InternetAddress.parse("[email protected]"));
msg.setSubject(emailSubject, "UTF-8");
msg.setSentDate(new Date());
/* buyer email address */
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipient));
/* Create the message body part */
msg.setText("A new Test-Alert from AB_Alerts");
/* Send message */
Transport.send(msg, "[email protected]", "abcalert321");
} catch (MessagingException | UnsupportedEncodingException e) {
SystemLogger.logErrorMessege(this, e);
}
}
}
Après tout, j'ai appelé le "GroupEmail.class" dans un endroit que je nécessaire pour déclencher l'e-mail soit envoyé.
GroupEmail groupEmail = new GroupEmail();
groupEmail.sendEmail();
J'ai utilisé Tomcat v8 serveur localhost lorsque l'application fonctionne, j'ai eu le dessous exception.
98656 [http-nio-8080-exec-9] ERROR it.codegen.rnd.cgalert.notification.template.email.GroupEmail - Couldn't connect to host, port: smtp.gmail.com, 465; timeout -1
com.sun.mail.util.MailConnectException: Couldn't connect to host, port: smtp.gmail.com, 465; timeout -1;
nested exception is:
java.net.SocketException: Permission denied: connect
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2100)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:699)
at javax.mail.Service.connect(Service.java:388)
at javax.mail.Service.connect(Service.java:246)
at javax.mail.Service.connect(Service.java:195)
at javax.mail.Transport.send0(Transport.java:254)
at javax.mail.Transport.send(Transport.java:124)
..more
OriginalL'auteur NmaD | 2017-04-20
Vous devez vous connecter pour publier un commentaire.
Corriger ces commune JavaMail erreurs.
Suivez les connexion de débogage conseils dans le JavaMail FAQ.
Il y a probablement un pare-feu ou anti-virus produit qui vous empêchent de vous connecter.
Si Tomcat est en cours d'exécution avec un gestionnaire de sécurité Java, le JavaMail FAQ contient des informations sur la configuration des autorisations de sécurité. Si cela ne vous aide pas, les JavaMail FAQ a également des informations sur le débogage des problèmes avec les autorisations de sécurité.
Ai-je mentionné que vous devriez lire les JavaMail FAQ? 🙂
OriginalL'auteur Bill Shannon
Je sais que c'est un très réponse tardive, mais envie de partager mon expérience quand je suis face au même problème et essayé presque
Java
postaux de base de l'api,Apache
mail api etSpring
aussi pourMimeMessage
.J'ai essayé 50 fois avec
Java
JDK 1.7.0_80 et échoué à plusieurs reprises, avec au-dessus de l'objet exception puis j'ai déménagé à JDK 1.8.0_151.Maintenant, avant illustrant le code source, j'aimerai faire partager ma configuration.
Aller à
Gmail
>Settings
>Other Google Account settings
sousAccounts and Import
>Sign-in & security
.Permettre moins des applications sécurisées: OFF (Signifie que mon application n'est pas moins sûr)
2-L'Étape De Vérification: Off
Application de mots de passe (Cliquez sur elle, et Google va générer un 16 caractères mot de passe pour vous, fait plus tard, de changer votre mot de passe gmail avec cette 16 char mot de passe long (qui est, sans aucun espace)).
Maintenant, mon code source est:
et la
Spring mail
debug mémorisations sont ci-dessous dit:Aussi s'il vous plaît vérifier votre connexion internet, les paramètres d'antivirus et de pare-feu d'accès pour être ininterrompue, espérons que cela va aider beaucoup de perdre du temps.
OriginalL'auteur ArifMustafa