2011-08-31 176 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) –