質問

私は、電子メールを送信するためにはApache Commonsのメールライブラリを使用していますが、私はGmailのSMTPサーバを経由してそれらを送信することはできませんよ。
誰もがGmailのSMTPサーバーと他の人と作品のサンプルコードを提供することができますか?

私は動作しません。次のコードを使用しています

String[] recipients = {"receiver@gmail.com"};

SimpleEmail email = new SimpleEmail();
email.setHostName("smtp.gmail.com");
email.setAuthentication("sender@gmail.com", "mypasswd");
email.setDebug(true);
email.setSmtpPort(465);

for (int i = 0; i < recipients.length; i++)
{
    email.addTo(recipients[i]);
}

email.setFrom("sender@gmail.com", "Me");
email.setSubject("Test message");
email.setMsg("This is a simple test of commons-email");
email.send();
役に立ちましたか?

解決

GmailのSMTPサーバーに電子メールを送信すると、認証とSSLが必要です。ユーザー名とパスワードはかなり単純です。あなたは次のプロパティは、認証とSSLを有効にするために設定されていることを確認し、それが動作するはずです。

mail.smtp.auth=true
mail.smtp.starttls.enable=true

サンプルコードには有効なTLSに以下を追加します。

API-バージョン<1.3使用の場合:
email.setTSL(true);
この方法はバージョン> = 1.3で廃止され、代わりにあなたが使用する必要があります:email.setStartTLSEnabled(true);

他のヒント

動作するコードの下に見つけてください。明らかに、あなたはあなたのプロジェクトのビルド・パスにApacheのjarファイルを追加する必要があります。

public static void sendSimpleMail() throws Exception {
    Email email = new SimpleEmail();
    email.setSmtpPort(587);
    email.setAuthenticator(new DefaultAuthenticator("your gmail username",
            "your gmail password"));
    email.setDebug(false);
    email.setHostName("smtp.gmail.com");
    email.setFrom("me@gmail.com");
    email.setSubject("Hi");
    email.setMsg("This is a test mail ... :-)");
    email.addTo("you@gmail.com");
    email.setTLS(true);
    email.send();
    System.out.println("Mail sent!");
}

よろしく、 Sergiu

を使用してcommons.emailが私のために働いています。

HtmlEmail email = new HtmlEmail();
email.setHostName("smtp.gmail.com");
email.setSmtpPort(465);
email.setSSL(true);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top