2011-07-09 17 views
1

このプログラムは、最初にsmtp.rediffmail.comに接続して電子メールの送信を試みます。コンパイル時エラーまたはコンパイル時例外はありません。しかし、次のプログラムを実行しようとすると、次の例外が生成されます。javax.mail.SendFailedException:無効なアドレス(Rediffmailを使用してemalを送信しようとしているとき)

javax.mail.SendFailedException:無効なアドレス。 ネストされた例外は次のとおりです。 com.sun.mail.smtp.SMTPAddressFailedException:421認証に失敗しました。私は例外が何であるかを把握することはできませんし、なぜ私はこの例外を取得しています最初の

やっGETメッセージにより認証してください。

ここに完全なプログラムがあります。これは私が試みたことですTLS rediffmailサーバーとの接続。

import javax.mail.Authenticator; 
import javax.mail.PasswordAuthentication; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeMessage; 
import java.util.Properties; 

class rediff { 
    public static void main(String args[]) { 
     Properties props = new Properties(); 
     props.put("mail.smtp.host", "smtp.rediffmail.com"); 
     props.put("mail.stmp.user", "from"); 

     //To use TLS 
     props.put("mail.smtp.auth", "true"); 
     props.put("mail.smtp.starttls.enable", "true"); 
     props.put("mail.smtp.password", "password"); 

     Session session = Session.getDefaultInstance(props, new Authenticator() { 
     @Override 
      protected PasswordAuthentication getPasswordAuthentication() { 
       String username = "from"; 
       String password = "password"; 
       return new PasswordAuthentication("from", "password"); 
      } 
     }); 
     String to = "[email protected]"; 
     String from = "[email protected]"; 
     String subject = "Testing..."; 
     MimeMessage msg = new MimeMessage(session); 
     try { 
      msg.setFrom(new InternetAddress(from)); 
      msg.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(to)); 
      msg.setSubject(subject); 
      msg.setText("rediff program working...!"); 
      Transport transport = session.getTransport("smtp"); 
      transport.send(msg); 
      System.out.println("fine!!"); 
     } catch(Exception exc) { 
       System.out.println(exc); 
       } 
    } 
} 

なぜこの例外が発生しますか?あたりとして

答えて

1

http://www.techtalkz.com/microsoft-outlook/193842-pop3.htmlアカウント設定で

、アカウントのプロパティの「送信サーバー」タブの「 がメールを送信する前に受信メールサーバーにログオンし、」有効。どのように これらのプロパティとタブを検索するOutlookバージョン固有ですが、 は情報が重要ではないと判断しました。

エラーは、クライアントから使用しようとしているSMTPサービスに固有です。コードの問題ではありません。 rediffmail.comアカウント設定を確認してください

+2

この種のオプションはありません –

+3

@grassPro ... -1を置いていて、フィードバックやコメントを提供していない理由は何ですか?ちょっとばかげているようです。 – sdolgy

-1

TLS認証を使用しようとしていますが、コードにポート設定が表示されません。通常smtpサーバはTLS/SSL認証に異なるポートを使用しますので、mail.smtp.socketFactory.portで設定してみてください。 TLSのデフォルト値は587、SSLの場合は993です。

props.put("mail.smtp.socketFactory.port", port); 
    props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
+0

TLSでは本当にポート設定が必要ですか?ところで同じ例外 –

+0

申し訳ありません - ソケット工場のポート、答えが更新されました。 – Osw

+0

これはSSLを使用しています。私はTLSを試しています。質問をお読みください –

0

コードの問題はこれです:

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

sendメソッドは静的メソッドであり、あなたは交通クラスのインスタンスでそれにアクセスすることを想定されていません。それはする必要があります - Transport.send(msg);

関連する問題