发送邮件不是用java发送的

时间:2015-03-21 07:46:09

标签: java email

我正在尝试通过此代码在java中发送邮件。但我没有发送电子邮件

public static void main(String[] args) {
    String to = "abc@gmail.com";
    String from = "xtz@gmail.com";
    String host = "localhost";
    Properties properties = System.getProperties();
    properties.setProperty("mail.smtp.host", host);
    Session session = Session.getDefaultInstance(properties);
    try {
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress(from));
        message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
        message.setSubject("This is Subject");
        message.setText("This is The  message Body");
        Transport.send(message);
        System.out.println("Sent message successfully....");
    } catch (MessagingException ex) {
     System.out.println("This is Exception Part >-------->"+ex);
    }
}

但我发现了这个例外

javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 25;
nested exception is:
java.net.ConnectException: Connection refused: connect

1 个答案:

答案 0 :(得分:0)

您的SMTP服务器(甚至在您的计算机上运行)很可能没​​有在端口25上侦听,因此您要做的是尝试连接到其他端口,例如587.

如果未在 Transport 属性中指定要连接的端口,则应用程序将默认尝试连接到端口25。

为了指定不同于默认端口的端口,需要添加以下代码:

Transport transport = session.getTransport("smtp");
          transport.connect(SMTP_HOST_NAME, SMTP_PORT, SMTP_FROM_ADDRESS, PASSWORD);
          transport.sendMessage(msg, msg.getAllRecipients());
          transport.close();

我遇到了同样的问题,结果发现端口设置为26。

除此之外,作为良好做法,您应该使用:

Properties properties = new Properties();

Session session = Session.getInstance(properties);

您应该尝试修复these common mistakes以防止将来出现错误。

相关问题