【问题标题】:why my java mail code doesn't work?为什么我的 java 邮件代码不起作用?
【发布时间】:2015-09-09 16:54:02
【问题描述】:

我是套接字编程的初学者。所以我无法解决我项目的错误,我什至无法理解问题出在哪里!

这是我的代码:

public static void main(String[] args) {
    String to = "parisa.roodheleh@gmail.com";
    String from = "parisainfinity@yahoo.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 the subject Line!");
        message.setText("This is autual message!");
        Transport.send(message);
        System.out.println("sent message successfully...");


    }catch(MessagingException mex){
        mex.printStackTrace();
    }

}

这里有一些错误:

com.sun.mail.util.MailConnectException: Couldn't connect to host, port: localhost, 25; timeout -1;
  nested exception is:
    java.net.ConnectException: Connection refused: connect
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2054)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:697)

有什么想法吗?

【问题讨论】:

  • 你的本地机器上安装了任何 SMTP 服务器吗?检查它是否启动并运行。似乎你试图通过 Gmail SMTP 服务器发送电子邮件,那么你的主机将是 smtp .gmail.com 和端口将是 587
  • emmm,对不起,我该如何检查?然后,我应该如何安装它?我应该谷歌什么?
  • 好吧,我猜这不仅仅是关于 SMTP 服务器,这里还有另一个错误:在 javax.mail.Service.connect(Service.java:364)

标签: java sockets


【解决方案1】:

似乎您正在使用无效的 smtp 主机,因为您尝试使用 yahoo id 发送电子邮件。尝试使用smtp.mail.yahoo.com 作为主机。

properties.setProperty("mail.smtp.host","smtp.mail.yahoo.com");

虽然问题有点不同,但Sending mail from yahoo id to other email ids using Javamail API 提供了类似的解决方案。

另外请注意,一旦您设置了此设置,如果您继续连续发送电子邮件,最终(并且很快),雅虎(或 smtp 主机)将终止/保留发件人的帐户,因为您正在向模仿这些操作的帐户发送垃圾邮件一个潜在的机器人。

【讨论】:

  • tnx,你的回答让我又问了一个问题,这个代码如何在没有密码的帐户上工作?如果可行,那么每个人都可以使用您的电子邮件地址将所有内容发送给其他人。
  • 没有密码就不行。如果您参考我提供的链接,您会看到需要提供密码(除了正确的主机、端口和用户)才能获得正确的解决方案。
  • 好吧,我没有这样做,而是将 yahoo 地址替换为 gmail 地址,但窃取的错误是相同的。
  • 这不是 smtp 提供商(gmail 或 yahoo)的问题,而是您使用 api 的配置问题。请确保您使用的是参考答案中提到的正确设置。
  • 哇...它的工作原理!天呐!现在我会发现关于... tnx tnx tnx tnxxx 的代码是什么。但是当我检查发件人帐户时,已发送的框中没有任何内容。如何?
【解决方案2】:

【讨论】:

  • 我在 cmd 中输入了 telnet example.com 25,结果是:'telnet' 不是内部或外部命令、可运行程序或批处理文件。
猜你喜欢
  • 1970-01-01
  • 2013-06-20
  • 1970-01-01
  • 2014-01-23
  • 2013-08-06
  • 2019-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多