2017-07-25 4 views
0

J'essaie d'envoyer email en utilisant java. Mais je fais face à l'erreur comme ci-dessousErreur lors de l'envoi de courrier dans java/servlet

javax.mail.AuthenticationFailedException: échec de connexion, aucun mot de passe spécifié

Pourquoi ai-je cette erreur quand je suis passé le bon email-id et mot de passe pour l'authentification ?

C'est mon code

import java.io.IOException; 
import java.net.PasswordAuthentication; 
import java.util.Properties; 

import javax.mail.Authenticator; 
import javax.mail.Message; 
import javax.mail.MessagingException; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeMessage; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

/** 
* Servlet implementation class TestMail 
*/ 
@WebServlet("/TestMail") 
public class TestMail extends HttpServlet { 
    private static final long serialVersionUID = 1L; 


    public TestMail() { 
     super(); 

    } 

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     todo(request,response); 

    } 


    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     todo(request,response); 

    } 

    private void todo(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
     request.setCharacterEncoding("utf8"); 
     response.setCharacterEncoding("utf8"); 

     Properties props = new Properties(); 
     props.put("mail.smtp.auth", "true"); 
     props.put("mail.smtp.starttls.enable","true"); 
     props.put("mail.smtp.host","smtp.gmail.com"); 
     props.put("mail.smtp.post","587"); 



     Session session = Session.getDefaultInstance(props, 
       new Authenticator() { 
        protected PasswordAuthentication getPasswordAuthentication() { 
        return new PasswordAuthentication(
           "[email protected]", "testing123"); 
          } 
       }); 

     Message message=new MimeMessage(session); 
     try { 
      message.setFrom(new InternetAddress("[email protected]","hello")); 

     message.setRecipients(Message.RecipientType.TO,InternetAddress.parse("[email protected]")); 
     message.setSubject("Testing Email"); 
     message.setText("hello this is testing mail \n \n Congrets"); 
     Transport.send(message); 
     System.out.println("Mail Sent Successfully"); 
     } catch (MessagingException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

    } 

} 

my error image

+0

C'est une erreur courante, comme décrit dans la [FAQ de JavaMail] (https://javaee.github.io/javamail/FAQ#commonmistakes). –

+0

okk c'est du travail maintenant merci @Bill Shannon –

Répondre

0

Le JavaMail Authenticator se trouve dans le package javax.mail et est différent de la classe java.net du même nom. Les deux ne partagent pas le même Authenticator que l'API JavaMail fonctionne avec Java 1.1, qui n'avait pas la variété java.net.

Référez ceci: http://www.rgagnon.com/javadetails/java-0538.html

0

1) S'il vous plaît utiliser les fichiers jar appropriés pour les emails POP3:

import java.util.Properties; 
    import javax.activation.*; 
    import javax.mail.*; 

2) Et puis construire votre message:

Properties props = new Properties(); 

    props.put("mail.smtp.host",     <mail_server>); 
    props.put("mail.smtp.port",     <port>); 
    props.put("mail.smtp.user",     <user>); 
    props.put("mail.smtp.password",    <pw>); 
    props.put("mail.smtp.auth",     <logon>); 
    props.put("mail.from",      <from>); 

    Session session = Session.getInstance(props, null); 

    try { 
     MimeMessage msg = new MimeMessage(session); 
     msg.setFrom(); 
     msg.setRecipients(Message.RecipientType.TO, <email_to>); 
     msg.setRecipients(Message.RecipientType.CC, <email_cc>); 
     msg.setRecipients(Message.RecipientType.BCC, <email_bcc>); 
     msg.setSubject(x_subject, Globals.q_UNICODE_MAIL); 
     msg.setSentDate(new Date()); 
     msg.setHeader("Disposition-Notification-To", x_from); 
    // 
    //<build your Multipart message> 
    // 

3) Enfin, connecter et envoyer:

 Transport transport = session.getTransport("smtp"); 
     if (<logon_required>) { 
      transport.connect(<mail_server>, <user>, <pw>); 
     } 
     transport.sendMessage(msg, msg.getAllRecipients());