2011-11-22 17 views
2

私はWindows上で同じコードを持っており、うまくいきます。コードをcentosに移動すると、例外が発生します。 javax.mail.MessagingException:SMTPホストに接続できませんでした:stmp.gmail.com、port:587; ネストされた例外は次のとおりです。 java.net.ConnectException:接続がjava mail give java.net.connectexception:接続が拒否されました

を拒否した誰も私にこの例外に関するいくつかの提案をお願いできますか?

ありがとうございました。

+0

これに似ているhttp://stackoverflow.com/questions/3649014/send-email-using-java – Jasonw

+0

'telnet stmp.gmail.com 587'を実行しましたか? –

答えて

4

あなたはスペルミスをしました! "smtp .gmail.com"でなく、stmp .gmail.com "である必要があります。

+0

申し訳ありませんが、私は入力したばかりのエラーです。私はstmp.gmail.comを使って接続しました。 –

0

Javaを使用してメールを送信する方法を学習している場合は、次の方法を試してください。メールプロバイダのSMTPサーバーに設定する必要があります。このSMTPサーバーは、このコードではそうではありません。

注:コードはJava Servletで記述されています。


public class MailClient extends HttpServlet 
{ 
    private class SMTPAuthenticator extends Authenticator 
    { 
     private PasswordAuthentication authentication; 

     public SMTPAuthenticator(String login, String password) 
     { 
      authentication = new PasswordAuthentication(login, password); 
     } 

     @Override 
     protected PasswordAuthentication getPasswordAuthentication() 
     { 
      return authentication; 
     } 
    } 

    protected void processRequest(HttpServletRequest request, 
    HttpServletResponse response) throws ServletException, IOException 
    { 
     response.setContentType("text/html;charset=UTF-8"); 
     PrintWriter out = response.getWriter(); 
     try 
     { 
      String from = "xyz.com"; 
      String to = "abc.com"; 
      String subject = "Your Subject."; 
      String message = "Message Text."; 
      String login = "xyz.com"; 
      String password = "password"; 

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

      Authenticator auth = new SMTPAuthenticator(login, password); 

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

      MimeMessage msg = new MimeMessage(session); 

      try 
      { 
       msg.setText(message); 
       msg.setSubject(subject); 
       msg.setFrom(new InternetAddress(from)); 
       msg.addRecipient(Message.RecipientType.TO, 
       new InternetAddress(to)); 
       Transport.send(msg); 
      } 
      catch (MessagingException ex) 
      { 
       Logger.getLogger(MailClient.class.getName()). 
       log(Level.SEVERE, null, ex); 
      } 
     } 
     finally 
     { 
      out.close(); 
     } 
    } 

    @Override 
    protected void doGet(HttpServletRequest request, 
    HttpServletResponse response) throws ServletException, IOException 
    { 
     processRequest(request, response); 
    } 

    @Override 
    protected void doPost(HttpServletRequest request, 
    HttpServletResponse response) throws ServletException, IOException 
    { 
     processRequest(request, response); 
    } 

    @Override 
    public String getServletInfo() 
    { 
     return "Short description"; 
    } 

} 
+1

どのようにしてConnectionExceptionが解決されますか? – EJP

1

の2つのいずれかを意味し '接続が拒否されました'。指定したホスト:ポートが間違っているか、介入中のファイアウォールがボールを再生していません。

関連する問題