2015-12-15 4 views
0

Я пытаюсь отправить почту с помощью mail.smtp.yahoo.com в JavaОтправить почту с помощью javax.mail через Yahoo в Java

Вот мой код для отправки почты:

final String Username = "*****************"; 
    final String Password = "*****************"; 
    String to = "*****************"; 
    String host = "smtp.mail.yahoo.com"; 
    Properties properties = System.getProperties(); 
    // Setup mail server 
    properties.put("mail.smtp.starttls.enable", "true"); 
    properties.put("mail.smtp.host", host); 
    properties.put("mail.smtp.user", Username); 
    properties.put("mail.smtp.password", Password); 
    properties.put("mail.smtp.port", "587"); 
    properties.put("mail.smtp.auth", "true"); 
    properties.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory"); 

    // Get the default Session object. 
    Session session = Session.getDefaultInstance(properties); 

    try { 
     // Create a default MimeMessage object. 
     MimeMessage message = new MimeMessage(session); 

     // Set From: header field of the header. 
     message.setFrom(new InternetAddress(Username)); 

     // Set To: header field of the header. 
     message.addRecipient(Message.RecipientType.TO, new InternetAddress(
       to)); 

     // Set Subject: header field 
     message.setSubject("This is the Subject Line!"); 

     // Now set the actual message 
     message.setText("This is actual message"); 

     // Send message 
     Transport transport = session.getTransport("smtp"); 
     transport.connect(host, Username, Password); 
     transport.sendMessage(message, message.getAllRecipients()); 
     transport.close(); 
     System.out.println("Sent message successfully...."); 
    } catch (MessagingException mex) { 
     mex.printStackTrace(); 
    } 

Я получаю эту ошибку:

avax.mail.MessagingException: Could not connect to SMTP host: smtp.mail.yahoo.com, port: 587; 
    nested exception is: 
    javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? 
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1706) 
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:525) 
    at javax.mail.Service.connect(Service.java:291) 
    at javax.mail.Service.connect(Service.java:172) 
    at MailHelper.main(MailHelper.java:51) 
Caused by: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? 
    at sun.security.ssl.InputRecord.handleUnknownRecord(Unknown Source) 
    at sun.security.ssl.InputRecord.read(Unknown Source) 
    at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source) 
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source) 
    at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source) 
    at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source) 
    at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:503) 
    at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:234) 
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1672) 
    ... 4 more 

Я попытался отправить его с помощью порта 25,465 также, но безрезультатно. Я также попытался отправить его с помощью smtp.gmail.com и gmail userid и пройти, но получить разные ошибки.

Пожалуйста, помогите

+0

Я думаю, что вам не хватает 'properties.put (" java.net.preferIPv4Stack "," true "); ' –

+0

Пробовал это. Но получаю такую ​​же ошибку. Я создал приложение Java и запускаю это приложение локально. DO Мне нужно добавить любую конфигурацию для этого? @HelpingHands –

+0

У вас есть какой-либо брандмауэр или что-то установленное? –

ответ

0

попробуйте добавить ниже собственности:

properties.put("mail.smtp.ssl.enable","true"); 
0

Используйте эти настройки

SMTP SERVER : smtp.mail.yahoo.com 
PORT Number : 465 
+0

с портом 465 Ниже придет ошибка: com.sun.mail.smtp.SMTPSendFailedException: 553 Из адреса не подтвержденного - см. http: // help.yahoo.com/l/us/yahoo/mail/original/manage/sendfrom-07.html \t в com.sun.mail.smtp.SMTPTransport.issueSendCommand (SMTPTransport.java:1829) \t на ком. sun.mail.smtp.SMTPTransport.mailFrom (SMTPTransport.java:1368) \t на com.sun.mail.smtp.SMTPTransport.sendMessage (SMTPTransport.java:886) \t в MailHelper.main (MailHelper.java:53) @Ankit Pandey –

+0

host = "smtp.mail.yahoo.com"; port = "587"; emailid = "[email protected]"; имя пользователя = "a"; password = "pwd"; emailSettings(); createSession(); sendMessage («[email protected]», «[email protected]», «Тест», «тестовая почта»); –

0

Используйте этот код:

общественного класса SendMail {

String host, port, emailid,username, password; 
Properties props = System.getProperties(); 
Session l_session = null; 

public SendMail() { 
    host = "smtp.mail.yahoo.com"; 
    port = "587"; 
    emailid = "[email protected]"; 
    username = "a"; 
    password = "pwd"; 

    emailSettings(); 
    createSession(); 
    sendMessage("[email protected]", "[email protected]","Test","test Mail"); 
} 

public void emailSettings() { 
    props.put("mail.smtp.host", host); 
    props.put("mail.smtp.auth", "true"); 
    props.put("mail.debug", "false"); 
    props.put("mail.smtp.port", port); 
} 

public void createSession() { 

    l_session = Session.getInstance(props, 
      new javax.mail.Authenticator() { 
       protected PasswordAuthentication getPasswordAuthentication() { 
        return new PasswordAuthentication(username, password); 
       } 
      }); 



} 

public boolean sendMessage(String emailFromUser, String toEmail, String subject, String msg) { 
    //System.out.println("Inside sendMessage 2 :: >> "); 
    try { 

     MimeMessage message = new MimeMessage(l_session); 
     emailid = emailFromUser; 


     message.setFrom(new InternetAddress(this.emailid)); 

     message.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmail)); 
     message.addRecipient(Message.RecipientType.BCC, new InternetAddress(AppConstants.fromEmail)); 
     message.setSubject(subject); 
     message.setContent(msg, "text/html"); 


     Transport.send(message); 
     System.out.println("Message Sent"); 
    } catch (MessagingException mex) { 
     mex.printStackTrace(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    }//end catch block 
    return true; 
} 

}

+0

все еще не работает. Такая же ошибка: 553 Из адреса не подтвержденного - см. Help.yahoo.com/l/us/yahoo/mail/original/manage/sendfrom-07.html –

0

Попробуйте добавить этот properties.put("mail.smtp.socketFactory.port", "465"); Вы используете 587 как номер порта, который используется для подключения TLS.

+0

попробовал еще не работать. Та же ошибка: 553 От адреса не подтвержденного - см. Http://help.yahoo.com/l/us/yahoo/mail/original/manage/sendfrom-07.html –

+0

Вы пытались изменить оба порта? я имею в виду сделать «mail.smtp.socketFactory.port» и «mail.smtp.port» до 465 – Shettyh

Смежные вопросы