JavaMail avec MS Exchange: Aucune authentification n'mechansims prise en charge par le serveur et le client
J'ai essayé pendant des jours maintenant pour envoyer du courrier à partir de Grain de l'application et en vain. Je suis à l'aide d':
- graal 1.3.7
- mail 1.0 du plugin
- printemps-sécurité-core 1.2.6 plugin
- tomcat 7.0.23
Specifficaly je vais essayer d'envoyer un mail avec Exchange à partir d'une application déployée sur le serveur Tomcat trought le port 25 sans authentification, pas de SSL.
J'ai essayé d'envoyer un message avec telnet à partir de la machine virtuelle VMWare sur lesquels l'application est déployée et il a obtenu auge.
C'est ma classe pour l'envoi de mails:
public boolean sendMessage(String to, String msgSubject, String msgText)
{
String host = "mail.mydomain.com";
String username = "[email protected]"; //your authsmtp username
String password = "mypassword" //your authsmtp password
String from = "[email protected]";
Properties props = System.getProperties();
props.put("mail.smtp.host", host);
props.put("mail.smtp.user", username);
props.put("mail.smtp.password", password);
props.put("mail.smtp.port", "25"); //thish is the port recommended by authsmtp
props.put("mail.smtp.auth", "false");
Session session = Session.getDefaultInstance(props, null);
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
InternetAddress to_address = new InternetAddress(to);
message.addRecipient(Message.RecipientType.TO, to_address);
message.setSubject(msgSubject);
message.setText(msgText);
Transport transport = session.getTransport("smtp");
transport.connect(host, username, password);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
return true;
}
Il s'agit d'erreur de trace de pile:
javax.mail.AuthenticationFailedException: No authentication mechansims supported by both server and client
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:590)
at javax.mail.Service.connect(Service.java:291)
at javax.mail.Service.connect(Service.java:172)
at javax.mail.Service$connect.call(Unknown Source)
at org.helpdesk.MymailService.sendMessage(MymailService.groovy:37)
at org.helpdesk.MymailService$sendMessage.call(Unknown Source)
at org.helpdesk.RequestController$_closure13.doCall(RequestController.groovy:247)
at org.helpdesk.RequestController$_closure13.doCall(RequestController.groovy)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
J'ai lu quelques dizaines de postes compte tenu des problèmes comme ça, mais je n'ai toujours pas résolu le problème. Toute aide est appréciée.
*EDIT:*Est-il possible qu'il y ait quelques problèmes d'envoi de mails à l'aide de javaMail avec Exchange server SMTP lorsqu'il n'y a pas d'authentification?
Config.groovy
Mais comment dire à ma méthode SendMessage de prendre des options de configuration de messagerie de Config.groovy?
Dois-je configurer Tomcat pour permettre à l'emailing?
Le courrier plugin prend automatiquement les paramètres de Config.groovy. Vous n'avez pas besoin de faire une configuration de Tomcat. Avez-vous lu les docs pour le courrier plugin?
Oui. J'ai lu les documents mais je ne peux pas le faire fonctionner. Peut-être que j'ai oublié quelque chose compte tenu de configuration du serveur Exchange. J'ai réussi à envoyer un mail à l'aide de Gmail sans trop de mal. Mais l'utilisation de serveur Exchange de l'entreprise pas de chance à tous. J'ai donc été à chasser ma queue pendant un certain temps maintenant.
OriginalL'auteur drago | 2011-12-23
Vous devez vous connecter pour publier un commentaire.
Si vous essayez de vous connecter à votre serveur de messagerie sans l'authentification, l'appel de la méthode connect qui n'est pas prendre un nom d'utilisateur et mot de passe. Si vous passez un nom d'utilisateur et le mot de passe, il pense que vous vraiment voulez authentifier, et depuis il ne peut pas trouver un mécanisme d'authentification que le serveur prend en charge, il échoue.
Merci, cela me sauver beaucoup, j'ai été aux prises avec ce pour une semaine maintenant. Enfin!!!
Merci. Il a travaillé pour moi. Mais il est très stupide bien que mail.smtps.auth=false, pourquoi il essaie de se connecter nom d'utilisateur et le mot de passe?
Pourquoi êtes-vous en passant un nom d'utilisateur et le mot de passe si vous ne voulez pas JavaMail pour les utiliser? 🙂
OriginalL'auteur Bill Shannon
dans mon cas, j'ai dû mettre de la propriété
à
"false"
(en plus de l'ajout de la définition de la propriété
"mail.smtp.auth"
à"false"
, qui, cependant, semble être la valeur par défaut selon ce lien)Avant de
"mail.smtp.ehlo"
à"false"
j'ai vu la suite de la sortie de débogage (activé par le paramètre de la propriété"mail.debug"
à"true"
):et l'obtention de la même
javax.mail.AuthenticationFailedException
.(dans ce cas, le serveur SMTP a été un de Microsoft)
"true"
est différente detrue
! (La cité des formes semblent fonctionner!).mail.smtp.ehlo=false (pas besoin de guillemets) a travaillé pour moi pour StreamSets
OriginalL'auteur Andre Holzner
Eh bien, il semble que j'ai eu quelques problèmes. Au premier abord, l'Échange n'est pas configuré correctement. Et puis il semble que j'ai essayé toutes les configurations possibles, mais celui de droite. Cela fonctionne:
L'indice final est le projet de Loi de Shannon post. Merci Bill!
OriginalL'auteur drago
Vérifier si le serveur vous sont frapper les mandats d'authentification ou
pas. plus sur cela dans le code.
Faire mettre un mail.débogage dans l'
propriétés de savoir ce qui se passe exactement entre votre code et l'
mailserver. plus sur cela dans le code.
Voici un code simple qui fonctionne bien pour moi avec mon entreprise de serveur de messagerie:
OriginalL'auteur Sadique Khan
Voici ma solution, c'est peut-être pas la meilleure façon, mais cela fonctionne pour moi...
dans le mail-config.xml:
et voici la configuration:
et enfin, le code:
OriginalL'auteur Ethan CF Chen
Si vous voulez que votre application pour vous connecter au serveur SMTP (Puisque vous fournir les informations d'authentification). Il suffit de changer
à
OriginalL'auteur Rohin