2011-11-22 133 views
2

我在Windows上有相同的代碼,它運作良好。當我將代碼移動到centos時,它會給出例外: javax.mail.MessagingException:無法連接到SMTP主機:stmp.gmail.com,port:587; 嵌套的例外是: java.net.ConnectException:連接被拒絕java郵件給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

'連接被拒絕' 意味着兩件事情之一。您指定的主機:端口不正確,或者中間的防火牆未打球。

相關問題