Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Java发送/接收电子邮件_Java_Email_Sendmail_Post Receive Email - Fatal编程技术网

用Java发送/接收电子邮件

用Java发送/接收电子邮件,java,email,sendmail,post-receive-email,Java,Email,Sendmail,Post Receive Email,我想通过Java发送电子邮件(任何来自yahoo、gmail或任何其他部分的电子邮件) 我尝试了代码,但是我得到了异常 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.SMTPTran

我想通过Java发送电子邮件(任何来自yahoo、gmail或任何其他部分的电子邮件)

我尝试了代码,但是我得到了异常

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:1972)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:642)
    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 myemailtesting.MyEmailTesting.main(MyEmailTesting.java:72)
Caused by: java.net.ConnectException: Connection refused
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:432)
    at java.net.Socket.connect(Socket.java:529)
    at java.net.Socket.connect(Socket.java:478)
    at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:319)
    at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:233)
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1938)
    ... 7 more
我的密码是

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package myemailtesting;

/**
*
* @author xxxx
*/
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class MyEmailTesting {

    public static void main(String[] args) {

        System.out.println("This is EMAIL testing!!!");
        // Recipient's email ID needs to be mentioned.
        String to = "xx@gmail.com";

        // Sender's email ID needs to be mentioned
        String from = "xx@gmail.com";

        // Assuming you are sending email from localhost
        String host = "localhost";

        // Get system properties
        System.out.println("test 001");
        Properties properties = System.getProperties();
        System.out.println("test 002");

        // Setup mail server
        System.out.println("test 003");
        properties.setProperty("mail.smtp.host", host);

        // Get the default Session object.
        System.out.println("test 004");
        Session session = Session.getDefaultInstance(properties);

        try {
            // Create a default MimeMessage object.
            System.out.println("test 005");

            MimeMessage message = new MimeMessage(session);

            System.out.println("test 006");

            // Set From: header field of the header.
            message.setFrom(new InternetAddress(from));

            System.out.println("test 007");
            // Set To: header field of the header.
            message.addRecipient(Message.RecipientType.TO,
                    new InternetAddress(to));

            System.out.println("test 008");
            // Set Subject: header field
            message.setSubject("This is the Subject Line!");

            System.out.println("test 009");
            // Now set the actual message
            message.setText("This is actual message");

            System.out.println("test 010");
            // Send message
            Transport.send(message);
            System.out.println("Sent message successfully....");
        } catch (MessagingException mex) {
            mex.printStackTrace();
        }
    }
}
对于除错,我使用statement作为
System.out.println(“test00x”)

我得到的输出是

This is EMAIL testing!!!
test 001
test 002
test 003
test 004
test 005
test 006
test 007
test 008
test 009
test 010
javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 25;
我尝试了许多代码,但没有得到任何输出。得到一些例外

我看到在某个地方,我需要保持SMTP服务器正常运行。我不知道需要做什么。我相信apachecommons将是一个不错的选择

有人能帮我做以下几步吗

  • 需要的jar文件
  • 如何设置smptp
  • 发送电子邮件(来自任何网站,如雅虎、gmail或任何私人电子邮件id)

  • 用java发送电子邮件的逐步过程…

    您没有在本地主机上运行SMTP邮件服务器:25。您的邮件配置错误,您应该与其他邮件服务器对话,或者您确实打算与localhost中的某个邮件服务器对话,在这种情况下,您需要安装和/或运行它。

    严格来说,这不是Java问题。您需要一个传出SMTP服务器,您可以将邮件发送到该服务器,该服务器将负责将邮件发送到适当的google、yahoo和aol服务器

    作为“主机”,您必须设置SMTP服务器,或者在您的计算机上安装SMTP服务器(如果您愿意),但这是一项艰巨的任务。通常大公司和服务提供商都有SMTP服务器,可以接受来自其网络内部的任何邮件

    然而,大多数SMTP服务器都是不开放的,不会让你随意发送电子邮件,至少不是免费的。您可以创建一个gmail帐户,并使用gmail SMTP(SMTP.gmail.com),使用您传输的帐户用户名和密码,通过Google的SMTP服务器进行身份验证

    此外,您不能总是指定“发件人”标题,它可能会被SMTP服务器重写以反映邮件发送的实际帐户,或者如果不是从正确的SMTP服务器到达,则在另一端可能被视为垃圾邮件


    我建议您阅读SMTP的工作原理,它是一个过于复杂且相当陈旧的协议,但值得了解它的工作原理

    试试这个。。。它的工作

    import org.apache.commons.mail.*;
    public class EmailTest {
        public static void main(String[] args) {
            try {
                Email email = new SimpleEmail();
                email.setSmtpPort(587);
                email.setAuthenticator(new DefaultAuthenticator("emailid@gmail.com",
                        "yourPassword"));
                email.setDebug(true);
                email.setHostName("smtp.gmail.com");
                email.setFrom("emailid@gmail.com");
                email.setSubject("Hi");
                email.setMsg("This is a test mail ... :-)");
                email.addTo("senderId@yahoo.co.in");
                email.setTLS(true);
                email.send();
                System.out.println("Mail sent!");
            } catch (Exception e) {
                System.out.println("Exception :: " + e);
            }
        }
    }
    

    您可以在计算机中安装SMTP服务器(教程),配置并使用它,或者使用外部STMP服务器(如+1)来获得一段漂亮的代码。但是请注意,某些环境(例如Oracle应用程序)不喜欢
    Email=new SimpleEmail()
    try{}
    子句中。注意,这个语句(只有这个语句)应该移到
    try{}
    子句之外。实际上,我所说的并不是全部。这个
    commons.mail
    库在我的环境中根本不起作用,我刚刚发现了这一点。我将尝试
    javax.mail
    而不是.Yup。工作起来很有魅力。:)