【问题标题】:javax.mail.SendFailedException Why I receive the above mentioned expcetion when i try to send email through my java code?javax.mail.SendFailedException 为什么当我尝试通过我的 java 代码发送电子邮件时收到上述异常?
【发布时间】:2015-03-28 02:13:06
【问题描述】:

我想编写一个 java 程序来从我的电子邮件地址向任何电子邮件地址发送电子邮件,但是当我运行我的代码时,我得到了这个 javax.mail.SendFailedException。我的代码有 2 个类 Main.java 和 EmailManagement.java。 我收到的错误是:

javax.mail.SendFailedException: Sending failed;
  nested exception is: 
    javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 25;
  nested exception is: 
    java.net.ConnectException: Connection refused: connect
    at javax.mail.Transport.send0(Transport.java:219)
    at javax.mail.Transport.send(Transport.java:81)
    at EmailManagement.sendEmailToOnePlayer(EmailManagement.java:43)
    at Main.main(Main.java:14)

代码如下。

导入 javax.swing.JOptionPane;

public class Main {

    public static void main(String[] args) {
        EmailManagement objEmail = new EmailManagement();

        String senderEmailId = JOptionPane.showInputDialog("ENter sender email id");
        String recieverEmailId = JOptionPane.showInputDialog("Enter reciever Email id");
        String subjectOfEmail = JOptionPane.showInputDialog("Enter email subject");
        String textOfEmail = JOptionPane.showInputDialog("Enter text Of mail");

        objEmail.sendEmailToOnePlayer(senderEmailId, recieverEmailId, subjectOfEmail, textOfEmail);
        //System.out.println(senderEmailId);

    }

}



import java.util.*;

import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;


public class EmailManagement {

    public void sendEmailToOnePlayer(String senderEmailId, String recieverEmailId , String subjectOfEmail , String textOfEmail ){

        //using localhost for sending email
        String host ="localhost";

        //to get the system properties
        Properties  properties = System.getProperties();

        //now to setup the mail server
        properties.setProperty("mail.smtp.host", host);

        //now to get our default session object
        Session session =Session.getDefaultInstance(properties);

        //now to create default Mime message 
        MimeMessage message = new MimeMessage(session);


        try {
            //now to set the sender email address
            message.setFrom(new InternetAddress(senderEmailId));

            //now set reciever email address
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(recieverEmailId));

            //set the subject of email to be sent 
            message.setSubject(subjectOfEmail);

            //actual message text of email
            message.setText(textOfEmail);


            //send message to required recipient
            Transport.send(message);


            System.out.println("email sent successfully :) ");



        } catch (AddressException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (MessagingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }



    }
}

【问题讨论】:

  • 您的本地机器上是否运行着 SMTP 服务器?
  • 给我们MCVE 并校对您的问题,使其清晰易读。
  • 如果您不介意,因为我是新手,如何检查 SMTP 服务器是否在我的本地计算机上运行?
  • @QPaysTaxes 你能告诉我什么是 MCVE
  • @AbdullahJahangirAbbasi 点击这个词。这是一个秘密链接。

标签: java jakarta-mail ninjaframework


【解决方案1】:

您没有在localhost:25. 上运行的 SMTP 服务器事实上,您没有在该 host:port 上运行任何类型的 TCP 服务器。

【讨论】:

  • 请告诉我该怎么做
  • 连接到确实存在的 SMTP 服务器。不要让我告诉你IP:端口。这是你的系统:没有人能告诉你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-25
  • 2016-06-09
  • 2021-06-17
  • 2015-01-11
  • 1970-01-01
  • 2015-07-13
  • 2021-03-01
相关资源
最近更新 更多