gpt4 book ai didi

java - 实现故障转移电子邮件服务...如果出现故障,请使用其他电子邮件服务提供商

转载 作者:行者123 更新时间:2023-12-02 02:42:58 30 4
gpt4 key购买 nike

我需要实现故障转移电子邮件服务。意味着如果一个提供商出现故障,服务可以故障转移到其他提供商。

提供商

我正在使用 spring boot,maven。

是否可以仅使用应用程序属性,例如

spring.mail.host=smtp.mailgun.org, smtp.sendgrid.org?

到目前为止:应用程序属性

spring.mail.host=smtp.mailgun.org
spring.mail.port=587
spring.mail.username=some-username
spring.mail.password=some-password
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.connectiontimeout=5000
spring.mail.properties.mail.smtp.timeout=5000
spring.mail.properties.mail.smtp.writetimeout=5000

邮件发送方法实现:

@Override
public void sendMails(MailDomain mailDomain) { // MailDomain is class that contains fields useful to configure mail attributes
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message);

try {
helper.setTo(mailDomain.getSendTo());
helper.setText(mailDomain.getMailBody());
helper.setSubject(mailDomain.getSubject());
} catch (MessagingException e) {
LOG.debug("Unable to set details of message " + e.getMessage());
}

try {
mailSender.send(message); // send mail....
} catch (MailException e) {
LOG.debug("Unable to sendmail " + e.getMessage());
}
}

最佳答案

由于当您提供两个主机时,Spring Boot 不会执行故障转移,因此您必须定义第二个 mailSender 并自行处理故障转移。 Springs 让这一切变得简单:

  @Bean
@ConfigurationProperties(prefix = "second.mail")
public MailSender secondMailSender() {
return new JavaMailSenderImpl();
}

这将创建一个新的邮件发件人,并从以下属性初始化:

second.mail.host=mail.mymail.org

现在,此 bean 的存在将抑制默认邮件发件人的自动配置,因此您需要自己定义两者:

@Bean
@ConfigurationProperties(prefix = "first.mail")
public MailSender firstMailSender() {
return new JavaMailSenderImpl();
}

之后:

@Autowired
private MailSender secondMailSender;

@Autowired
private MailSender firstMailSender;

try {
firstMailSender.send(message); // send mail....
} catch (MailException e) {
LOG.debug("Unable to sendmail " + e.getMessage());
try {
secondMailSender.send(message);
....
}

关于java - 实现故障转移电子邮件服务...如果出现故障,请使用其他电子邮件服务提供商,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45114097/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com