2011-07-19 29 views
0

私はメールを送信する簡単なJavaプログラムを作成していますが、エラーが発生しています。ここでは、コードがあります:SMTPを使用して電子メールを送信

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

// Send a simple, single part, text/plain e-mail 
public class Sendmail { 

    public static void main(String[] args) { 

     // SUBSTITUTE YOUR EMAIL ADDRESSES HERE!!! 
     String to = "[email protected]"; 
     String from = "[email protected]"; 
     // SUBSTITUTE YOUR ISP'S MAIL SERVER HERE!!! 
     String host = "smtp.gmail.com"; 

     // Create properties, get Session 
     Properties props = new Properties(); 

     // If using static Transport.send(), 
     // need to specify which host to send it to 
     props.put("mail.smtp.host", host); 
     // To see what is going on behind the scene 
     props.put("mail.debug", "true"); 
     Session session = Session.getInstance(props); 

     try { 
      // Instantiatee a message 
      Message msg = new MimeMessage(session); 
      System.out.println("in try blk"); 
      //Set message attributes 
      msg.setFrom(new InternetAddress(from)); 
      InternetAddress[] address = {new InternetAddress(to)}; 
      msg.setRecipients(Message.RecipientType.TO, address); 
      msg.setSubject("Test E-Mail through Java"); 
      msg.setSentDate(new Date()); 

      // Set message content 
      msg.setText("This is a test of sending a " + 
         "plain text e-mail through Java.\n" + 
        "Here is line 2."); 

      //Send the message 
      Transport.send(msg); 
     } 
     catch (MessagingException mex) { 
      // Prints all nested (chained) exceptions as well 
      System.out.println("in catch block"); 
      mex.printStackTrace(); 
     } 
    } 
}//End of class 

がここにエラーがあります:

221 2.0.0 closing connection d1sm3094152pbj.24 
in catch block 
com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. d1sm3094152pbj.24 
at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2057) 
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1580) 
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1097) 
at javax.mail.Transport.send0(Transport.java:195) 
at javax.mail.Transport.send(Transport.java:124) 
at mypackage.Sendmail.main(Sendmail.java:48) 
+0

plz何か助けて頂ければ幸いです – Atul

+0

あなたのメールサーバー(google)はあなたのコードが行っていないTLS接続を必要としています。 –

+0

とそのTLS接続を行う方法... – Atul

答えて

1

"のJavaMailのGmail" のための簡単なgoogle searchthis oneのように、GMailのとのJavaMailを使用する方法の多くの例が得られます。また、Googleではconfiguration pageに接続設定を記載しているため、設定を再確認できます。

+0

リンクは本当に便利です:) – Atul

2

Gmailは唯一のSSL/TLS上でSMTPをサポートしています。

ます。また、サーバーにログインする必要があり

props.put("mail.smtp.socketFactory.port", "465"); 
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
props.put("mail.smtp.socketFactory.fallback", "false"); 

を追加します。

props.put("mail.smtp.host", "smtp.gmail.com"); 

Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() { 
    protected PasswordAuthentication getPasswordAuthentication() { 
     return new PasswordAuthentication("username", "password"); 
    } 
}); 
+0

同じエラーを表示していてもこれらを追加しました.. :( – Atul

関連する問題