2011-08-31 172 views
0

發送電子郵件hi我寫了這個代碼連接SMTP,它正在罰款smtp.gmail.com但不適合我的客戶端IP 10.5.128.146與端口號25使用SMTP

這裏的代碼。 ....你可以建議我任何解決方案。

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 SendMailSSL { 
public static void main(String[] args) { 
    Properties props = new Properties(); 
    props.put("mail.smtp.host", "10.5.128.146"); 
    props.put("mail.smtp.socketFactory.port", "25"); 
    props.put("mail.smtp.socketFactory.class", 
      "javax.net.ssl.SSLSocketFactory"); 
    props.put("mail.smtp.auth", "true"); 
    props.put("mail.smtp.port", "25"); 

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

    try { 

     Message message = new MimeMessage(session); 
     message.setFrom(new InternetAddress("[email protected]")); 
     message.setRecipients(Message.RecipientType.TO, 
       InternetAddress.parse("[email protected]")); 
     message.setSubject("Testing Subject"); 
     message.setText("Dear Mail Crawler," + 
       "\n\n No spam to my email, please!"); 

     Transport.send(message); 

     System.out.println("Done"); 

    } catch (MessagingException e) { 
     throw new RuntimeException(e); 
    } 
} 

}

它顯示連接超時錯誤。 任何人都可以告訴我這是一個真正的編程問題或服務器端問題。如果服務器端,我可以建議他們做什麼。

Thnaks在Adance

+1

是不是smtps通常端口465(而不是25)? –

+0

在smtp日誌中是否有任何輸出?過去我遇到過很多麻煩,主要歸結於(在企業網絡的情況下)我的服務器IP地址不允許發送電子郵件,還有防火牆或類似的東西。檢查smtp日誌,看看有沒有什麼用處。如果甚至沒有連接記錄,請查看是否可以從服務器ping通smtp服務器。 – Ali

+0

我有從我的服務器ping到那裏,但答覆來請求超時 – Atul

回答

1

超時表明,25端口防火牆和防火牆只是丟棄數據包,而不是回答了連接被拒絕。

0

檢查您是否能夠通過端口25遠程登錄到您的IP地址......如果您能夠遠程登錄,這意味着該端口沒有防火牆,並且存在連接問題....如果是被防火牆阻止,您需要應用規則以允許此連接!

+0

什麼樣的規則? – Atul

+0

像允許數據包在該端口(25)發送.. –

2

您似乎已經修改了GMail連接代碼片段。 GMail需要SSL,但傳統的「端口25」SMTP服務器不支持,因此握手無法正常工作。

我會建議刪除mail.smtp.socketFactory.class和mail.smtp.auth屬性。

+0

如果我刪除smtp.auth.properties,那麼我將能夠chk的用戶名和passwd? – Atul

+0

如果你刪除了屬性'mail.smtp.socketFactory.class',它將使用默認的(非SSL)SocketFactory,當你連接到端口25時,它應該沒問題。如果您想要執行SSL,則需要使用SSL SMTP端口(如465) –