javax.mail.MessagingException : Could not connect to SMTP host: localhost, 端口:25;

标签 java email jakarta-mail postfix-mta

这是我的代码

public class Email {
    static Properties props;
    public static void main(String[] args){
        String from = "some email";
        String to= "some other email";
        String host = "localhost";
        props = System.getProperties();
        props.setProperty("mail.host", host);
        props.put("mail.transport.protocol", "smtp");
        Session session = Session.getDefaultInstance(props,null);
        try{
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(from));
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
            message.setSubject("This is the Subject Line!");
            message.setText("This is actual message");
            Transport.send(message);
            System.out.println("Sent message successfully....");
        }catch (MessagingException mex) {
            mex.printStackTrace();
        }
    }
}

我遇到以下异常:

javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 25;
  nested exception is:
    java.net.ConnectException: Connection refused
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1961)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:654)
    at javax.mail.Service.connect(Service.java:295)
    at javax.mail.Service.connect(Service.java:176)
    at javax.mail.Service.connect(Service.java:125)
    at javax.mail.Transport.send0(Transport.java:194)
    at javax.mail.Transport.send(Transport.java:124)
    at com.cisco.ci.support.email.Email.main(Email.java:51)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
Caused by: java.net.ConnectException: Connection refused
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at java.net.Socket.connect(Socket.java:538)
    at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:321)
    at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:237)
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1927)
    ... 12 more

我的 Mac 上似乎没有 smtp 服务器?有什么解决办法吗?

最佳答案

您要么需要在 Mac 上安装 smtp 服务器(这并不那么简单),要么使用现有的 smtp 服务器。显然,您需要该服务器的帐户,因为野外没有身份验证的 smtp 服务器并不多。

例如创建一个 googlemail 帐户,然后检查:http://www.mkyong.com/java/javamail-api-sending-email-via-gmail-smtp-example/例如如何使用它!

关于javax.mail.MessagingException : Could not connect to SMTP host: localhost, 端口:25;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36500063/

相关文章:

email - 有没有办法在带有更新文本的电子邮件中嵌入 iframe?

java - Spring 安全: How to get the automatically rendered login page code?

email - php 邮件未发送到电子邮件

c# - 匈牙利字符的邮件问题

java - 一条消息可以有多个发件人吗?

Java Mail 在某些情况下被 gmail 阻止

通过 ssl 的 android javamail api imap

java - apache.camel 中 Exchange 的 getIn() 与 getMessage()

java - 为一种方法设置多个监听器

java - 如何在 PropertyPlaceholderConfigurer 中获取 tomcat 环境变量