2016-06-21 13 views
1

이메일을 보낼 수있는 웹 앱을 만들고 있습니다.이 코드에서는 보내려는 야후 메일을 사용했습니다. javax.mail.AuthenticationFailedException : java로 메일을 보낼 때 연결에 실패 했습니까?

나는 몇 가지 솔루션을 시도하지만 그들은 많은 날이 없었 : 여기

  1. Getting the "javax.mail.AuthenticationFailedException: failed to connect" Error
  2. javax.mail.AuthenticationFailedException: failed to connect, no password specified? 내 코드입니다 :

    try { 
    
         Properties props = new Properties(); 
         props.put("mail.smtp.host", "smtp.mail.yahoo.com"); // for gmail use smtp.gmail.com 
         props.put("mail.smtp.auth", "true"); 
         props.put("mail.debug", "true"); 
         props.put("mail.smtp.starttls.enable", "true"); 
         props.put("mail.smtp.port", "465"); 
         props.put("mail.smtp.socketFactory.port", "465"); 
         props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
         props.put("mail.smtp.socketFactory.fallback", "false"); 
    
         Session mailSession = Session.getInstance(props, new javax.mail.Authenticator() { 
    
          protected PasswordAuthentication getPasswordAuthentication() { 
           return new PasswordAuthentication("[email protected]", "my_pwd"); 
          } 
         }); 
    
         mailSession.setDebug(true); // Enable the debug mode 
    
         Message msg = new MimeMessage(mailSession); 
    
         //--[ Set the FROM, TO, DATE and SUBJECT fields 
         msg.setFrom(new InternetAddress("[email protected]")); 
         msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse("[email protected]")); 
         msg.setSentDate(new Date()); 
         msg.setSubject("Hello World!"); 
    
         //--[ Create the body of the mail 
         msg.setText("Hello from my first e-mail sent with JavaMail"); 
    
         //--[ Ask the Transport class to send our mail message 
         Transport.send(msg); 
         return true; 
    
        } catch (Exception E) { 
         System.out.println("Oops something has gone pearshaped!"); 
         System.out.println(E); 
         return false; 
        } 
    

    그리고 여기 디버그입니다 코드 :

    DEBUG: JavaMail version 1.4.2 
    DEBUG: successfully loaded resource: /META-INF/javamail.default.providers 
    DEBUG: Tables of loaded providers 
    DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc]} 
    DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]} 
    DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map 
    DEBUG: setDebug: JavaMail version 1.4.2 
    DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc] 
    DEBUG SMTP: useEhlo true, useAuth true 
    DEBUG SMTP: useEhlo true, useAuth true 
    DEBUG SMTP: trying to connect to host "smtp.mail.yahoo.com", port 465, isSSL false 
    220 smtp.mail.yahoo.com ESMTP ready 
    DEBUG SMTP: connected to host "smtp.mail.yahoo.com", port: 465 
    
    EHLO DESKTOP-132ABCD 
    250-smtp.mail.yahoo.com 
    250-PIPELINING 
    250-SIZE 41697280 
    250-8 BITMIME 
    250 AUTH PLAIN LOGIN XOAUTH2 XYMCOOKIE 
    DEBUG SMTP: Found extension "PIPELINING", arg "" 
    DEBUG SMTP: Found extension "SIZE", arg "41697280" 
    DEBUG SMTP: Found extension "8", arg "BITMIME" 
    DEBUG SMTP: Found extension "AUTH", arg "PLAIN LOGIN XOAUTH2 XYMCOOKIE" 
    DEBUG SMTP: Attempt to authenticate 
    DEBUG SMTP: check mechanisms: LOGIN PLAIN DIGEST-MD5 
    AUTH LOGIN 
    //some code 
    535 5.7.0 (#MBR1240) Please verify your account by going to https://login.yahoo.com 
    Oops something has gone pearshaped! 
    javax.mail.AuthenticationFailedException: failed to connect 
    

    감사합니다. 정말 고마워요.

+0

사용중인 계정이 확인 되었습니까? –

+0

예, 계정이 유효하며 보낸 사람과받는 사람 모두 사용하고 있습니다! – iamatsundere181

답변

5

자바 코드를 사용하여 전자 메일을 보내고 대신 내 Gmail 계정을 사용했습니다. 처음 시도했을 때 "javax.mail.AuthenticationFailedException : 534-5.7.14"도 나타났습니다.

Google은 보안이 취약한 앱에 대한 액세스를 차단하므로이 예외가 발생합니다. 그 후 나는이 link에 갔다.

보안 수준이 낮은 앱의 안내에 따라 메일을 보낼 수있었습니다.

야후 메일을 사용하고 있으므로 덜 안전한 로그인을 사용하는 앱 허용 옵션을 사용하여 덜 안전한 앱에 대한 액세스를 사용하려면 link을 사용해보세요.

+0

정말 고마워요. – iamatsundere181

2

몇 주 전에 Gmail과 동일한 문제가 발생했습니다. GMail은 Gmail의 계정 보안 옵션에서 활성화하지 않는 한 "보안 수준이 낮은"앱으로 이메일을 보낼 수 없습니다.
Yahoo! 따라서 동일한 보안 표준을 사용하는 경우 https://login.yahoo.com/account/security에 액세스하고 Java 앱에서 해당 계정을 사용하기 전에 "덜 안전한 로그인을 사용하는 앱 허용"을 사용하도록 설정합니다.