我正在Spring中开发一个服务,当我从我的开发机器运行这个相同的应用程序时,我可以发送电子邮件,但是当我将它部署到服务器时它不起作用。 我使用Swaks从服务器检查它也可以从命令行工作,但它不能从Spring工作。 这是Spring配置:
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="my-domain.tld"/>
<property name="port" value="587"/>
<property name="username" value="myemail@my-domain.tld"/>
<property name="password" value="mypassword"/>
<property name="defaultEncoding" value="UTF-8"/>
<property name="javaMailProperties">
<props>
<prop key="mail.transport.protocol">smtp</prop>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.starttls.enable">true</prop>
<prop key="mail.debug">true</prop>
</props>
</property>
</bean>
它在此行之后停止(来自日志文件)
STARTTLS
220 2.0.0 Ready to start TLS
以下是发送电子邮件的代码
@Component
public class EmailProvider {
@Autowired
private JavaMailSender mailSender;
@Async
public void sendEmail(final String to, final String subject, final String body, final String cc, final String bcc, final boolean html) {
if (StringUtils.isEmpty(to) || StringUtils.isEmpty(subject) || StringUtils.isEmpty(body)) {
return;
}
MimeMessagePreparator message = new MimeMessagePreparator() {
@Override
public void prepare(MimeMessage mmsg) throws Exception {
MimeMessageHelper mm = new MimeMessageHelper(mmsg);
mm.setTo(new InternetAddress(to));
mm.setSubject(subject);
mm.setFrom("from@my-domain.tld");
if (StringUtils.isNotEmpty(cc)) {
mm.setCc(cc);
}
if (StringUtils.isNotEmpty(bcc)) {
mm.setBcc(bcc);
}
mm.setText(body, html);
}
};
mailSender.send(message);
}
}
提前致谢。