0

javamail と smtp を使用してメールを送信しようとしています。Gmailアドレスから送信しているときにうまくいきました。同じコードを交換アカウントから送信するように変更しましたが、機能しません。認証失敗の例外が発生しています。

コード

public class GmailSender extends javax.mail.Authenticator {   
private String mailhost = "smtp.company.com";   
private String user;   
private String password;   
private Session session;   

static {   
    Security.addProvider(new JSSEProvider());   
}  

public GmailSender(String user, String password) {   
    this.user = user;   
    this.password = password;   

    Properties props = new Properties();   
    props.setProperty("mail.transport.protocol", "smtp");   
    props.setProperty("mail.host", mailhost);   
    props.put("mail.smtp.auth", "true");   
    props.put("mail.smtp.port", "465");   
    props.put("mail.smtp.socketFactory.port", "465");   
    props.put("mail.smtp.socketFactory.class",   
            "com.example.javamailtestpreetha.AlwaysTrustSSLContextFactory");   
    props.put("mail.smtp.socketFactory.fallback", "false");   
    props.setProperty("mail.smtp.quitwait", "false");   

     session = Session.getInstance(props, new GMailAuthenticator(user, password));
   // session = Session.getDefaultInstance(props, this);   
}   

デフォルトのポート、つまり 25 で試してみましたが、そのときに間違ったポート番号を示すエラーが発生しました。したがって、ポート番号は正しいと思います。ホストにpingを実行してみました。試したユーザー名domain/username, username, username@company.com. しかし、常に同じ例外が発生しました。これを修正するのを手伝ってください。

前もって感謝します

デバッグをオンに設定し、次のログを取得しました。間違った認証データを伝えています。ログインとパスワードが正しいと確信しています。ユーザー名の入力方法を教えてくれる人はいますか?

それは、usernameまたはdomain\username、またはdomain/usernameusername@mycompanyaddress.comまたは何か他のものですか?これが問題になる可能性があると思います。

追加してみましたが、同じエラーprops.put("mail.imap.auth.plain.disable", "true");で失敗しました


01-29 17:50:46.958: I/System.out(3898): 220-mycompany.servername.com ESMTP Exim 4.80 #2 火、2013 年 1 月 29 日 16:50:51 +0300 01-29 17:50:46.958 : I/System.out(3898): 220-このシステムを未承諾の転送に使用することは許可されていません, 01-29 17:50:46.958: I/System.out(3898): 220 および/またはバルク e-郵便物。01-29 17:50:46.962: I/System.out(3898): DEBUG SMTP: ホスト「smtp.mail.mycompany.com」に接続、ポート: 465 01-29 17:50:46.962: I/System. out(3898): EHLO localhost 01-29 17:50:46.989: I/StatusBarPolicy(218): onSignalStrengthsChanged 01-29 17:50:47.220: I/System.out(3898): 250-mycompany.servername.com こんにちはローカルホスト [80.227.5.70] 01-29 17:50:47.220: I/System.out(3898): 250-SIZE 52428800 01-29 17:50:47.220: I/System.out(3898): 250-8BITMIME 01 -29 17:50:47.220: I/System.out(3898): 250-PIPELINING 01-29 17:50:47.220: I/システム。

4

1 に答える 1

0

セッションのデバッグをオンにしてみてください。おそらく、プロトコル トレースからさらに多くの手がかりが得られるでしょう。

Exchange 2007 を使用している場合、JavaMail wikiで説明されている AUTH=PLAIN バグに遭遇している可能性があります。

于 2013-01-29T18:30:03.067 に答える