54

この簡単な例を自分のGmailアカウントで実行していますが、機能せず、次のエラーが発生します。

      send failed, exception: com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. nv2sm4478384pbb.6      

これが私のコードです

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

       Properties props = new Properties();
        props.put("mail.smtp.host", "smtp.googlemail.com");
        props.put("mail.from", "myemail@gmail.com");
          Session session = Session.getInstance(props, null);

        try {
            MimeMessage msg = new MimeMessage(session);
            msg.setFrom();
            msg.setRecipients(Message.RecipientType.TO,
                              "myemail@hotmail.com");
            msg.setSubject("JavaMail hello world example");
            msg.setSentDate(new Date());
            msg.setText("Hello, world!\n");
            Transport.send(msg);
        } catch (MessagingException mex) {
            System.out.println("send failed, exception: " + mex);
        }
   }
}
4

7 に答える 7

51

ポート25でGmailのサーバーを使用して、認証されていない接続を介してサードパーティにメールを配信しようとしている可能性があります。Gmailではこれを行うことはできません。Gmailのサーバーを使用して他の人にメールを送信できるからです。これはオープンリレーと呼ばれ、初期のスパムの一般的なイネーブラーでした。オープンリレーはインターネットでは受け入れられなくなりました。

おそらくポート587で、認証された接続を使用してGmailに接続するようにSMTPクライアントに依頼する必要があります。

于 2012-05-09T04:31:51.303 に答える
0
    String username = "mail@google.com";
    String password = "some-password";
    String recipient = "myemail@hotmail.com");

    Properties props = new Properties();

    props.put("mail.smtp.host", "smtp.gmail.com");
    props.put("mail.from", "myemail@gmail.com");
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.port", "587");
    props.setProperty("mail.debug", "true");

    Session session = Session.getInstance(props, null);
    MimeMessage msg = new MimeMessage(session);

    msg.setRecipients(Message.RecipientType.TO, recipient);
    msg.setSubject("JavaMail hello world example");
    msg.setSentDate(new Date());
    msg.setText("Hello, world!\n");

    Transport transport = session.getTransport("smtp");

    transport.connect(username, password);
    transport.sendMessage(msg, msg.getAllRecipients());
    transport.close();
于 2012-05-09T08:02:51.003 に答える