我们正在尝试使用SMTP配置Spring JavaMailSender以使用Amazon的SES服务,但我们收到此错误:
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:我们已经在这里尝试了解决方案:Could not connect to SMTP host: email-smtp.us-east-1.amazonaws.com, port: 465, response: -1没有任何运气。
答案 0 :(得分:37)
基于@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。
答案 1 :(得分:14)
我刚遇到同样的问题。实际上,几个星期前我试图解决它并被卡住了......
我做的第一件事就是确定问题:激活mail 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>
答案 2 :(得分:3)
这个问题很老了,但如果有人需要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: no-reply@yourdomain.com
答案 3 :(得分:2)
此代码对我有用:
<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">abc@example.com</prop>
</props>
</property>
</bean>