3

次の Java コードを使用して電子メールを送信しました。

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

public class SendEmail
{
   public static void main(String [] args)
   {    

      String to = "abcd@gmail.com";
      String from = "web@gmail.com";
      String host = "localhost";
      Properties properties = System.getProperties();
      properties.setProperty("smtp.gmail.com", 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 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: connect
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1282)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:370)

Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)

誰かがこれについて私を助けることができれば本当に感謝しています.

を解決するにはConnectException

4

5 に答える 5

6

GmailSMTP サーバーとして使用しようとしていることがわかります。この行は正しくありません:

properties.setProperty("smtp.gmail.com", host);

プロパティ名としてホスト名を使用していますが、これは正しくありません。プロパティを設定していないため、mail.smtp.hostJavaMail は「localhost」への接続を試みます。代わりに、次のプロパティを設定します。

properties.put("mail.smtp.starttls.enable", "true"); 
properties.put("mail.smtp.host", "smtp.gmail.com");
properties.put("mail.smtp.user", "username"); // User name
properties.put("mail.smtp.password", "password"); // password
properties.put("mail.smtp.port", "587");
properties.put("mail.smtp.auth", "true");
于 2012-12-30T09:03:55.590 に答える
0

ホスト名を次のように変更します: smtp.gmail.com

String host = "localhost";

これを次のように変更します。

String host = "smtp.gmail.com"
于 2012-12-30T09:01:13.450 に答える
0

このようなことを試してみる必要があります

String host = "smtp.gmail.com";
String from = "user name";
Properties props = System.getProperties();
props.put("mail.smtp.host", host);
props.put("mail.smtp.user", from);
props.put("mail.smtp.password", "asdfgh");
props.put("mail.smtp.port", "587"); // 587 is the port number of yahoo mail
props.put("mail.smtp.auth", "true");

Session session = Session.getDefaultInstance(props, null);
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));

InternetAddress[] to_address = new InternetAddress[to.length];
int i = 0;
// To get the array of addresses
while (to[i] != null) {
    to_address[i] = new InternetAddress(to[i]);
    i++;
}
System.out.println(Message.RecipientType.TO);
i = 0;
while (to_address[i] != null) {

    message.addRecipient(Message.RecipientType.TO, to_address[i]);
    i++;
}
message.setSubject("sending in a group");
message.setText("Welcome to JavaMail");
// alternately, to send HTML mail:
// message.setContent("<p>Welcome to JavaMail</p>", "text/html");
Transport transport = session.getTransport("smtp");
transport.connect("smtp.mail.yahoo.co.in", "user name", "asdfgh");
transport.sendMessage(message, message.getAllRecipients());
transport.close();

今、あなたはlocalhostに接続しようとしています

この回答の礼儀

于 2012-12-30T09:03:05.967 に答える
0

これをプロパティに追加してみてください:

private static final String SMTP_HOST = "smtp.gmail.com"; //Use Gmail's SMTP Host.
private static final String SMTP_PORT = ""; //Use Gmail's Port Number for SMTP.
properties.setProperty("mail.smtp.host", SMTP_HOST);
properties.setProperty("mail.smtp.port", SMTP_PORT);
于 2012-12-30T09:03:21.260 に答える