TLS problème lors de l'envoi à gmail via JavaMail
S'avère que JavaMail est un peu plus frustrant que j'ai pensé qu'il serait. J'ai regardé plusieurs exemples en ligne sur la façon d'envoyer un simple e-mail SMTP par les serveurs Gmail (mais pas via le protocole SSL). Après avoir essayé plusieurs exemples de code, j'ai garder de conclure le même exemple d'exception quand je l'appelle transport.connect()
. Je reçois cette trace de la pile:
Exception in thread "main" com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. l10sm302158wfk.21
at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2057)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1580)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1097)
at SendEmail.main(SendEmail.java:47)
Quelqu'un peut-il me dire ce que je doit ajouter ou faire pour résoudre ce problème?
Voici mon code:
Properties props = new Properties();
props.put("mail.transport.protocol", "smtp");
props.put("mail.host", "smtp.gmail.com");
props.put("mail.user", "[email protected]");
props.put("mail.password", "blah");
props.put("mail.port", "587");
Session mailSession = Session.getDefaultInstance(props, null);
Transport transport = mailSession.getTransport();
MimeMessage message = new MimeMessage(mailSession);
message.setSubject("This is a test");
message.setContent("This is a test", "text/plain");
message.addRecipient(Message.RecipientType.TO, new InternetAddress("[email protected]"));
transport.connect();
transport.sendMessage(message, message.getRecipients(Message.RecipientType.TO));
transport.close();
OriginalL'auteur Brian | 2011-06-28
Vous devez vous connecter pour publier un commentaire.
Vous devez activer
STARTTLS
. Ajouter un plus à votre configuration:Gah, oui, vous aurez également besoin de définir la
mail.smtp.auth
propriététrue
.Merci encore! Nooooooow j'obtiens cette erreur... "impossible de se connecter, pas de mot de passe spécifié?"... Je sais que j'ai fourni le mot de passe comme vous pouvez le voir dans le code ci-dessus. Mais c'est le mot de passe de propriétés de la balise nommée quelque chose d'autre que je ne suis pas fournir correctement?
Ok, peut-être que vous devriez utiliser un
Authenticator
plutôt que de configurer les informations d'identification. Retirez les deuxmail.user
etmail.password
clés. Alors au lieu de passernull
comme deuxième argumentSession.getDefaultInstance
, de créer et de transmettre une mise en œuvre deAuthenticator
qui remplace lagetPasswordAuthentication
méthode - les détails de cette sont faciles.Yay tout fonctionne maintenant! Merci beaucoup!
OriginalL'auteur Rob Harrop
OriginalL'auteur pooja
Ici de Messagerie de l'Expéditeur qui utilise MSN-service SMTP
Mon hôte est smtp.live.com et port 587.
Comme indiqué dans officiel doc de Java Mail, ici, vous pouvez obtenir plus d'informations sur les meilleures Java Mail mécanisme pour envoyer et recevoir des e-mails.
Propriétés de Client de Messagerie sont:
L'envoi de mécanisme :
Remarque:
Le Code s'exécute bien sur local Indien Serveur.
Mais ce n'est pas de répondre à Azur Congo: les Deux sont des serveur Linux.
D'erreur est:
Même si le système de jeu de propriétés manuellement:
aussi @Rob Harrop et @Brian 's points sont assurées
OriginalL'auteur pkm1986