Java 使用SMTP发送电子邮件

Java 使用SMTP发送电子邮件,java,smtp,Java,Smtp,您好,我已经编写了此代码来连接SMTP。对于SMTP.gmail.com,它工作正常,但对于IP 10.5.128.146(端口号25)的客户端,它不工作 这里的代码是。。。。。你能给我提个解决办法吗 import java.util.Properties; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import j

您好,我已经编写了此代码来连接SMTP。对于SMTP.gmail.com,它工作正常,但对于IP 10.5.128.146(端口号25)的客户端,它不工作

这里的代码是。。。。。你能给我提个解决办法吗

 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 in Adance

超时表示端口25已安装防火墙,防火墙只是在丢弃数据包,而不是在拒绝连接的情况下应答。

超时表示端口25已安装防火墙,防火墙只是在丢弃数据包,而不是用拒绝的连接进行回复。

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

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

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


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

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


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

smtps通常不是端口465(而不是25)?smtp日志中是否有任何输出?我过去遇到过很多麻烦,主要是因为(在公司网络的情况下)我的服务器ip地址不允许发送电子邮件,有防火墙或类似的东西。检查smtp日志,看看里面是否有任何有用的东西。如果连连接记录都没有,请查看是否可以从服务器ping smtp服务器。我有从服务器ping到服务器的ping,但回复请求超时smtps不是通常端口465(而不是25)吗?smtp日志中是否有任何输出?我过去遇到过很多麻烦,主要是因为(在公司网络的情况下)我的服务器ip地址不允许发送电子邮件,有防火墙或类似的东西。检查smtp日志,看看里面是否有任何有用的东西。如果没有连接记录,请查看是否可以从服务器ping smtp服务器。我已从服务器ping到那里,但答复请求超时。如果我删除smtp.auth.properties,那么我是否可以chk用户名和密码?如果删除属性
mail.smtp.socketFactory.class
,它将使用默认值(非SSL)SocketFactory,当您连接到端口25时,应该可以。如果您想进行SSL,则需要使用SSL SMTP端口(如465)。如果我删除SMTP.auth.properties,那么我是否能够chk用户名和密码?如果您删除属性
mail.SMTP.SocketFactory.class
,则将使用默认值(非SSL)SocketFactory,当您连接到端口25时,应该可以。如果您想使用SSL,则需要使用SSL SMTP端口(如465)