Spring 弹簧&x2B;JavaMail发送超时
我正在尝试用Spring和JavaMail发送电子邮件。因为我在代理后面,所以它可能不应该工作,但我希望有一个超时,因为现在javamail只会挂起,谁知道会挂多久 这是我的spring xml中的mailsender配置:Spring 弹簧&x2B;JavaMail发送超时,spring,gmail,jakarta-mail,Spring,Gmail,Jakarta Mail,我正在尝试用Spring和JavaMail发送电子邮件。因为我在代理后面,所以它可能不应该工作,但我希望有一个超时,因为现在javamail只会挂起,谁知道会挂多久 这是我的spring xml中的mailsender配置: <bean id="gmailMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host"><value&
<bean id="gmailMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host"><value>smtp.gmail.com</value></property>
<property name="port"><value>465</value></property>
<property name="protocol"><value>smtp</value></property>
<property name="username"><value>XXXXXX@gmail.com</value></property>
<property name="password"><value>XXXXXXX</value></property>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.starttls.enable">true</prop>
<prop key="mail.smtp.quitwait">false</prop>
<prop key="mail.smtp.socketFactory.port">465</prop>
<prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
<prop key="mail.smtp.socketFactory.fallback">false</prop>
<prop key="mail.smtp.connectiontimeout">1000</prop>
<prop key="mail.debug">true</prop>
</props>
</property>
</bean>
然后它就挂在那里
大约5分钟后,我得到:
javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465, response: -1
例外
现在我真的不想知道它是否因为代理或防火墙问题而挂起,我只希望它在短时间后超时,如果有任何东西不工作。为什么mail.smtp.connectiontimeout设置不能正常工作 好吧,我想出来了,如果有人需要同样的: 您还需要设置:
<prop key="mail.smtp.timeout">1000</prop>
1000
财产。如果无法访问端口,则在套接字读取时超时。您可以在属性文件中设置超时。禁用防火墙或病毒防护,然后重试
# Other properties
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.connectiontimeout=10000
spring.mail.properties.mail.smtp.timeout=10000
spring.mail.properties.mail.smtp.writetimeout=10000
答案与上面相同,但显示了YML和XML道具的替代方案 您也可以在代码中构建道具:
@Bean
public JavaMailSender getJavaMailSender() {
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost(host);
mailSender.setPort(port);
mailSender.setUsername(username);
mailSender.setPassword(password);
Properties props = mailSender.getJavaMailProperties();
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.auth", auth);
props.put("mail.smtp.starttls.enable", starttls);
props.put("mail.smtp.timeout", 5000);
props.put("mail.smtp.connectiontimeout", 5000);
props.put("mail.smtp.writetimeout", 5000);
props.put("mail.debug", debug);
return mailSender;
}
5000毫秒后,我得到了这个日志:
2020-08-11 14:43:39.291 ERROR 117828 --- [ task-1] p.home.phe.adapter.smtp.SMTPAdapter : EmailNotification sending failure :Couldn't connect to host, port: 192.168.28.45, 25; timeout 5000
请注意,异常是在我的errorhandler中捕获的,而不是在上面的代码中
2020-08-11 14:43:39.291 ERROR 117828 --- [ task-1] p.home.phe.adapter.smtp.SMTPAdapter : EmailNotification sending failure :Couldn't connect to host, port: 192.168.28.45, 25; timeout 5000