J'essaie de m'envoyer un email en utilisant l'API javamail. J'ai suivi le code correctement que j'ai trouvé en ligne mais je n'arrive pas à le faire fonctionner. L'erreur que j'obtiens est:Problème d'envoi de courrier avec javamail
Exception in thread "main" javax.mail.AuthenticationFailedException: No authentication mechansims supported by both server and client
Cela signifie-t-il que mon ordinateur ne prend pas en charge l'authentification?
public class Emails
{
public static void main(String[] args) throws MessagingException
{
Emails e = new Emails();
e.sendMail();
}
public void sendMail() throws MessagingException
{
boolean debug = false;
String subject = "Testing";
String message = "Testing Message";
String from = "[email protected]";
String[] recipients = {"[email protected]"};
// create some properties and get the default Session
Session session = getSession();
session.setDebug(debug);
// create a message
Message msg = new MimeMessage(session);
// set the from and to address
InternetAddress addressFrom = new InternetAddress(from);
msg.setFrom(addressFrom);
InternetAddress[] addressTo = new InternetAddress[recipients.length];
for (int i = 0; i < recipients.length; i++)
{
addressTo[i] = new InternetAddress(recipients[i]);
}
msg.setRecipients(Message.RecipientType.TO, addressTo);
// Optional : You can also set your custom headers in the Email if you Want
msg.addHeader("MyHeaderName", "myHeaderValue");
// Setting the Subject and Content Type
msg.setSubject(subject);
msg.setContent(message, "text/plain");
Transport.send(msg);
}
private Session getSession()
{
Authenticator authenticator = new Authenticator();
Properties properties = new Properties();
properties.setProperty("mail.smtp.submitter", authenticator.getPasswordAuthentication().getUserName());
properties.setProperty("mail.smtp.auth", "true");
properties.setProperty("mail.smtp.host", "smtp.examplehost.com");
properties.setProperty("mail.smtp.port", "25");
return Session.getInstance(properties, authenticator);
}
private class Authenticator extends javax.mail.Authenticator
{
private PasswordAuthentication authentication;
public Authenticator()
{
String username = "myusername";
String password = "mypassword";
authentication = new PasswordAuthentication(username, password);
}
protected PasswordAuthentication getPasswordAuthentication()
{
return authentication;
}
}
}
Quand j'envoyer des e-mails de ce serveur, ce que je dois faire est, connectez-vous via ssh sur le serveur (login.server.com etc.), je peux envoyer des e-mails à partir du serveur de messagerie (smtp.server .com etc.). Je dois imiter ce en java
RÉSOLU: Utilisez l'envoyer en fait la classe email SMTPSSLTransport
Pourriez-vous montrer votre code pour la résolution? –
Je ne suis pas sûr de savoir ce que "SMTPSSLTransport a résolu le problème" signifie. Comment spécifiez-vous cette classe (par opposition aux autres classes)? Nous avons le même problème, et cela fonctionne quand nous nous connectons à Gmail avec SSL; mais se connecter au serveur MS Exchange, ce n'est pas le cas. – fool4jesus
@JPC Je viens de trouver cela via une recherche Google pour la même erreur que vous receviez à l'origine. Vous devriez vraiment fournir plus de détails lorsque vous trouvez une solution.Si vous pouvez demander de l'aide, vous devez également être prêt à fournir de l'aide. – Greg