SMTPを使用してAmazonのSESサービスと連携するようにSpringJavaMailSenderを構成しようとしていますが、次のエラーが発生します。
javax.mail.MessagingException: Could not connect to SMTP Host: email-smtp.us-east-1.amazonaws.com, port: 465, response: -1
これが私たちの構成です:
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="Host" value="email-smtp.us-east-1.amazonaws.com" />
<property name="port" value="465" />
<property name="username" value="..." />
<property name="password" value="..." />
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.ssl.enable">true</prop>
</props>
</property>
</bean>
何が間違っている可能性があるのですか?前もって感謝します。
PS:私たちはすでにここで解決策を試しました: SMTPホストに接続できませんでした:email-smtp.us-east-1.amazonaws.com、ポート:465、応答:-1 運がなかった。
@GuCoの回答に基づく:これは私のために働いた完全な構成です:
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="Host" value="email-smtp.us-east-1.amazonaws.com" />
<property name="port" value="465" />
<property name="protocol" value="smtps" />
<property name="username" value="..." />
<property name="password" value="..." />
<property name="javaMailProperties">
<props>
<prop key="mail.smtps.auth">true</prop>
<prop key="mail.smtp.ssl.enable">true</prop>
<prop key="mail.transport.protocol">smtps</prop>
</props>
</property>
</bean>
<property name="protocol" value="smtps" />
構成を忘れないでください。そうしないと、javaMailPropertiesが考慮されません。
私はちょうど同じ問題に遭遇しました。実は数週間前に解決しようとして行き詰まってしまいました...
問題を特定するために私が最初にしたこと:メールAPIのデバッグモードをアクティブにする
<props>
...
<prop key="mail.debug">true</prop>
</props>
これは、実際にはSSLを使用していないことを示しています
DEBUG SMTP: trying to connect to Host "email-smtp.us-east-1.amazonaws.com", port 465, isSSL false
私の同僚は、SSLを実際に使用するために別のメールプロパティを含めることを指摘しました
<props>
...
<prop key="mail.transport.protocol">smtps</prop>
...
</props>
この値を追加した後、「isSSL」値はtrueに変更されましたが、別のエラーが指摘されました。プロトコルが変更されたため、認証は使用されなくなりました。もちろん、プロパティを変更することで修正できます。
<prop key="mail.smtp.auth">true</prop>
に
<prop key="mail.smtps.auth">true</prop>
その旅の後、それはついに私のために働きました:-)
お役に立てば幸いです...
正しいプロパティを要約するだけです。
<props>
<prop key="mail.smtps.auth">true</prop>
<prop key="mail.smtp.ssl.enable">true</prop>
<prop key="mail.transport.protocol">smtps</prop>
</props>
この質問はかなり古いですが、誰かがSpringブート構成を必要とする場合、これが私のために働いたものです:
mail:
Host: email-smtp.us-west-2.amazonaws.com
port: 465
username: <username>
password: <pwd>
properties:
mail.smtp.auth: true
mail.smtp.starttls.enable: true
mail.smtp.starttls.required: true
mail.smtp.ssl.enable: true
mail.transport.protocol: smtps
mail.smtp.from: [email protected]
このコードは私のために働いています:
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="Host" value="email-smtp.us-east-1.amazonaws.com" />
<!--Obtaining Your Amazon SES SMTP Credentials. use http://docs.aws.Amazon.com/ses/latest/DeveloperGuide/smtp-credentials.html-->
<property name="username" value="smtp user name" />
<property name="password" value="smtp password" />
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.transport.protocol">smtp</prop>
<prop key="mail.smtp.port">25</prop>
<prop key="mail.smtp.starttls.enable">true</prop>
<prop key="mail.smtp.starttls.required">true</prop>
<prop key="mail.smtp.from">[email protected]</prop>
</props>
</property>
</bean>
@Beanを使用したい場合は、次のことがうまくいきました。
@Bean
public MailSender mailSender() {
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost("email-smtp.eu-west-1.amazonaws.com");
mailSender.setUsername("...");
mailSender.setPassword("...");
mailSender.setPort(465);
mailSender.setProtocol("smtps");
// This can be very helpful
Properties properties = new Properties();
properties.setProperty("mail.debug", "true");
mailSender.setJavaMailProperties(properties);
return mailSender;
}