使用SMTP发送电子邮件

时间:2011-08-31 20:35:28

标签: java smtp

嗨我写了这段代码来连接SMTP它对smtp.gmail.com工作正常,但对于我的客户端没有用于端口号为25的IP 10.5.128.146。

这里的代码是.....你可以建议我任何解决方案。

 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("xyz@mydomain.com"));
        message.setRecipients(Message.RecipientType.TO,
                InternetAddress.parse("abc@otherdomain.com"));
        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

3 个答案:

答案 0 :(得分:2)

您似乎修改了GMail连接代码段。 GMail需要SSL,但传统的“端口25”SMTP服务器不需要,因此握手不能正常工作。

我建议删除mail.smtp.socketFactory.class和mail.smtp.auth属性。

答案 1 :(得分:1)

超时表明端口25是防火墙的,防火墙只是丢弃数据包,而不是拒绝连接回复。

答案 2 :(得分:0)

检查您是否能够在端口25上为您的IP进行远程登录...如果您能够远程登录,这意味着该端口没有防火墙并且存在连接问题....如果它被阻止通过防火墙,您需要应用规则来允许此连接!!!