2

Java 経由で電子メールを送信したい (yahoo、gmail、またはその他の部分からの電子メール)。

hereのコードを試しましたが、例外が発生します

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();
        }
    }
}

デバッグのために、ステートメントを次のように使用していましたSystem.out.println("test 00X");

次のように出力されました

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 サーバーを稼働させておく必要があります。何をする必要があるのか​​わからない。apache commons が良い選択肢になると思います。

誰かが以下の手順で私を助けてくれますか

  1. 必要なjarファイル
  2. smptp の設定方法
  3. 電子メールを送信する (任意のサイト、つまり yahoo、gmail、または任意のプライベート電子メール ID から)

また

Javaで電子メールを送信するための段階的なプロセス...

4

3 に答える 3

1

これは厳密に言えばJavaの問題ではありません。メッセージを送信できる送信SMTPサーバーが必要です。このサーバーは、適切なgoogle、yahoo、aolサーバーにメッセージを配信するように注意します。

「ホスト」として、そのSMTPサーバーを設定するか、必要に応じてSMTPサーバーをマシンにインストールする必要がありますが、これは大変な作業です。通常、大企業やサービスプロバイダーには、ネットワーク内からのメールを受け入れるSMTPサーバーがあります。

ただし、ほとんどのSMTPサーバーは開いておらず、少なくとも無料ではなく、好きなように電子メールを送信することはできません。Gmailアカウントを作成し、Gmail SMTP(smtp.gmail.com)を使用して、トランスポートのアカウントのユーザー名とパスワードを使用してGoogleのSMTPサーバーで認証することができます。

また、常に「from」ヘッダーを指定できるとは限りません。SMTPサーバーによって、メールの送信元の実際のアカウントを反映するように書き換えられたり、適切なSMTPサーバーから到着しない場合はスパムと見なされたりする可能性があります。

SMTPがどのように機能するかについて読むことをお勧めします。これは非常に複雑でかなり古いプロトコルですが、どのように機能するかを知る価値があります。

于 2012-06-28T23:00:48.143 に答える
1

これを試してください...その動作...

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);
        }
    }
}
于 2012-06-28T23:26:57.923 に答える
0

localhost:25で実行されているSMTPメールサーバーがありません。メール設定が間違っていて、他のメールサーバーと通信する必要があるか、ローカルホストのサーバーと通信する予定でした。その場合は、メールをインストールまたは実行する必要があります。

于 2012-06-28T23:00:26.703 に答える