2015-12-11 5 views
0

Я использую JavaMail – GMail по ссылке TLS по ссылке ниже, чтобы отправить письмо из приложения java.Отправка сообщения электронной почты от java

, когда я пытаюсь сделать это, я получаю исключение ниже, так что кто-то скажет мне, что мне нужно сделать для успешного подключения, чтобы отправить электронное письмо.

JavaMail-апи-отправка-почту-через-Gmail-Smtp-например link

Exception in thread "main" java.lang.RuntimeException: javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 905, response: -1 
    at com.pr.SendMailTLS.main(SendMailTLS.java:48) 
Caused by: javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 905, response: -1 
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1215) 
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:322) 
    at javax.mail.Service.connect(Service.java:258) 
    at javax.mail.Service.connect(Service.java:137) 
    at javax.mail.Service.connect(Service.java:86) 
    at javax.mail.Transport.send0(Transport.java:150) 
    at javax.mail.Transport.send(Transport.java:80) 
    at com.pr.SendMailTLS.main(SendMailTLS.java:43) 
+1

порт 905? попробуйте 587 – slipperyseal

+0

Как @SlipperySeal см. gmail предоставить порт для TLS 587 см. на странице https://support.google.com/mail/answer/13287?hl=ru – developerbhuwan

+0

Посмотрите http://stackoverflow.com/questions/26087018/ send-emails-through-java-javax-mail-messagingexception-could-not-connect-t/26092701 # 26092701 – Anptk

ответ

0

Mailer.java

enter code here 
import java.util.Properties; 
    import javax.mail.Message; 
    import javax.mail.MessagingException; 
    import javax.mail.PasswordAuthentication; 
    import javax.mail.Session; 
    import javax.mail.Transport; 
    import javax.mail.internet.InternetAddress; 
    import javax.mail.internet.MimeMessage; 


    public class Mailer { 
    public static void send(String to,String sub,String msg) 
    { 
     String host="smtp.gmail.com"; 
     final String user="[email protected]"; 
     final String pass="123456"; 

     Properties props=new Properties(); 
     props.put("mail.smtp.host", host); 
     props.put("mail.smtp.socketFactory.port", "465"); 
     props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
     props.put("mail.smtp.auth","true"); 
     props.put("mail.smtp.port","465"); 

     Session session = Session.getDefaultInstance(props, 
       new javax.mail.Authenticator() { 
        protected PasswordAuthentication getPasswordAuthentication() { 
        return new PasswordAuthentication(user,pass); 
        } 
       }); 

     try { 
      MimeMessage message = new MimeMessage(session); 
      message.setFrom(new InternetAddress(user)); 
      message.addRecipient(Message.RecipientType.TO,new InternetAddress(to)); 
      message.setSubject(sub); 
      message.setText(msg); 


      Transport.send(message); 
      System.out.println("done"); 

     } catch (MessagingException e) 
     { 
      e.printStackTrace(); 
     } 
    } 
    } 
0

SendMail.java

import java.io.IOException; 
import java.io.PrintWriter; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 


public class SendMail extends HttpServlet 
{ 
@Override 
protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
     throws ServletException, IOException 

     { 
    resp.setContentType("text/html"); 
    PrintWriter out=resp.getWriter(); 


    String to=req.getParameter("to"); 
    String subject=req.getParameter("sub"); 
    String message=req.getParameter("msg"); 

    Mailer.send(to,subject,message); 

    out.print("message has been send successfully"); 

    out.close(); 
     } 
} 
+0

Пожалуйста, объясните свой код относительно того, что он делает и в чем проблема с кодом, написанным OP. Также подумайте о том, чтобы обновить один и тот же ответ, а не публиковать другой ответ. –

+0

Здесь у нас есть mail.jar и activation.jar. –

+0

Здесь у нас есть класс mail.jar и activation.jar. Свойство свойства используется для размещения всех свойств для протокола smtp. и установить заводский порт socket 465. создать объект Session для аутентификации пароля. используйте объект MIME для отправки сообщения через транспортный уровень. –

2

вам нужно сделайте следующее:

Outgoing Mail (SMTP) Server 
requires TLS or SSL: smtp.gmail.com (use authentication) 
Use Authentication: Yes 
Port for TLS/STARTTLS: 587 
Port for SSL: 465 

С вашей помощью TLS, используйте порт - 587.

в коде Java:

final String username = "[email protected]"; 
    final String password = "yorupasswors"; 

    //set the following configs as follows 

    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.port", "587"); 

Также перейти к этому настроек Gmail link.:

  • под "Пароль", отключить до двухэтапной аутентификации.
  • Под «разрешение счета», включить «Доступ для менее защищенных приложений»
Смежные вопросы