1

を使用してメールを送信しています

public void sendEmail(String fromEmailAddr, String toEmailAddr,String subject, String emailBody) {  

    String host = "xxx";    
    final String user = "user";
    final String password = "password";

    // Get system properties
    Properties properties = new Properties();

    // Setup mail server
     properties.put("mail.smtp.host", host);
     properties.put("mail.smtp.port", "25");


     // Get the default Session object.
     Session session = Session.getDefaultInstance(properties, null);

    try{
         // Create a default MimeMessage object.
         MimeMessage message = new MimeMessage(session);

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

         // Set To: header field of the header.
         message.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmailAddr));

         // Set Subject: header field
         message.setSubject(subject);

         // Now set the actual message
         message.setText(emailBody);

         // Send message
         Transport.send(message);
         System.out.println("Sent message successfully....");
      }catch (MessagingException mex) {
         mex.printStackTrace();
      }
}

上記のコードを使用してメールを送信しようとすると、メッセージが表示されますSent message successfully....が、メールが届きません。一方、認証を使用すると、メールを受け取りました

properties.put("mail.smtp.host", host);
properties.put("mail.smtp.auth", "true");

 Session session = Session.getDefaultInstance(properties,
        new javax.mail.Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(user,password);
                }
        });

なんで ?ホストのユーザー名とパスワードを提供する必要がありますか? ユーザー名とパスワードを指定せずに、ホストを指定するだけでメールを送信できますか?

ありがとう

4

2 に答える 2

0

ポート番号が問題になる可能性があると思います。

変更してみるproperties.put("mail.smtp.port", "25");

properties.put("mail.smtp.port", "587");

さらに、これを参照できます。

于 2013-07-25T12:32:05.680 に答える