web-dev-qa-db-ja.com

SMTPホストに接続できませんでした:email-smtp.us-east-1.amazonaws.com、ポート:465、応答:-1

AmazonのSES/SMTPでメールを送信しようとしていますが、次のエラーが発生します。

javax.mail.MessagingException:SMTPホストに接続できませんでした:email-smtp.us-east-1.amazonaws.com、ポート:465、応答:-1 =

これが私がメールを送ろうとしている方法です:

Springメール送信者の設定:

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="Host" value="${mail.server}"/>
        <property name="port" value="${mail.port}"/>
        <property name="username" value="${aws.mail.smtp.user}"/>
        <property name="password" value="${aws.mail.smtp.password}"/>
        <property name="javaMailProperties">
            <props>
            <!-- Use SMTP-AUTH to authenticate to SMTP server -->
            <prop key="mail.smtp.auth">true</prop>
            <!-- Use TLS to encrypt communication with SMTP server -->
            <prop key="mail.smtp.starttls.enable">true</prop>  
            </props>    
        </property>
    </bean>

と:

mail.server =email-smtp.us-east-1.amazonaws.com
mail.port = 465
13
balteo

Amazon SESでは、設定は次のようにする必要があります。

<prop key="mail.smtp.auth">true</prop>    
<prop key="mail.smtp.ssl.enable">true</prop>

の代わりに:

<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.starttls.enable">true</prop> 

デイブがほのめかしたように。

[〜#〜]編集[〜#〜]:このソリューションを使用してください: https://stackoverflow.com/a/8928559/536299

12
balteo

Amazon SES SMTPは、SMTPセッションの前にSSLを必要とします。 StartTLSコマンドはSESではサポートされていません。

4
dave wanta

ポート25でも同じ問題が発生しましたが、私にとってはポート587で機能しました。

1

これらの設定は私のために働いた:

mail.transport.protocol=smtp
mail.smtp.port=25
mail.smtp.auth=true
mail.smtp.starttls.enable=true
mail.smtp.starttls.required=true
mail.smtp.Host=email-smtp.us-east-1.amazonaws.com
mail.smtp.user=[SMTP username]
mail.smtp.password=[SMTP user password]

SSL接続を使用して接続しようとすると、接続が拒否されました。したがって、接続後にSTARTTLSを実行する必要があります。

Mail.debug = trueを追加して、失敗した場所を確認できます。

送信者の電子メールアドレスは確認済みの電子メールアドレスである必要があります。そうでない場合、SESは電子メールの転送を拒否します。

1
sudhir shakya

AWSのこの従業員は、SESはSSLをまったくサポートしていないと述べています。 https://forums.aws.Amazon.com/message.jspa?messageID=2183

Amazon SESは、トランスポート層セキュリティを有効にしてメールを送信しようとしますが、メッセージがTLSで送信されることを保証する方法はありません。 SESは、電子メールを送信するときに便宜的なTLSを使用します。つまり、最初にTLSを介して電子メールを送信しようとし、TLSが使用できない場合は通常のSMTPにフォールバックします。

したがって、あなたが見ている問題はTLSやSSLに関連するものではなく、何か別のものだと思います。

0
npellow
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.Host", "email-smtp.us-east-1.amazonaws.com");
props.setProperty("mail.user", "your_ses_user");
props.setProperty("mail.password", "your_ses_pwd");



Session mailSession = Session.getDefaultInstance(props, new Authenticator(){
    public PasswordAuthentication getPasswordAuthentication() {
        String username = "your_ses_user";
        String password = "your_ses_pwd";
        return new PasswordAuthentication(username, password);
    }
});

これらのコードはテスト済みで、正常に機能します。 SMTP over SSLを使用する場合は、以下を構成してください。

props.setProperty("mail.smtp.starttls.enable", "true");

または、AWS Java SDK from [〜#〜] here [〜#〜] をダウンロードできます。

コードサンプルは [〜#〜] here [〜#〜]

0
anson

https://forums.aws.Amazon.com/message.jspa?messageID=2183 のAWSノートは、メールメッセージの機密性を維持するためのサーバー間通信の暗号化について言及していることに注意してください。すべてのSMTPサービスの共通の特性。

この質問は、AWS SMTPサーバーへの安全な接続を使用して、AWSサーバーでの認証に使用されるパスワードを保護することに関するものです。

0
chrisdornan