2015-10-20 85 views
1

对于使用Amazon S3,我在我的pom.xml中添加了spring-cloud-aws-contextspring-cloud-starter-aws如何在使用Spring Cloud时禁用Amazon SES AWS

我能够实现推送和亚马逊S3检索但现在当我试图从我的应用程序发送一封电子邮件,我得到这个错误:

org.springframework.mail.MailSendException: Failed messages: com.amazonaws.AmazonServiceException: Missing required header 'From'. (Service: AmazonSimpleEmailService; Status Code: 400; Error Code: InvalidParameterValue; Request ID: 3611418a-7680-11e5-b874-71fbd9180e4c); message exceptions (1) are: 
Failed message 1: com.amazonaws.AmazonServiceException: Missing required header 'From'. (Service: AmazonSimpleEmailService; Status Code: 400; Error Code: InvalidParameterValue; Request ID: 3611418a-7680-11e5-b874-71fbd9180e4c) 

看来,我的JavaMailSender现在正在尝试使用Amazon SES而不是常规的org.springframework.mail.javamail.JavaMailSenderImpl。 我无法找到属性或注释我应该使用强制春季不使用亚马逊SES(FYI,我使用的是Spring Boot)

回答

2

其实,如果我们看看MailSenderAutoConfiguration源代码,会看到:

@Bean 
@ConditionalOnMissingClass(name = "org.springframework.cloud.aws.mail.simplemail.SimpleEmailServiceJavaMailSender") 
public MailSender simpleMailSender(AmazonSimpleEmailService amazonSimpleEmailService) { 
    return new SimpleEmailServiceMailSender(amazonSimpleEmailService); 
} 

@Bean 
@ConditionalOnClass(Session.class) 
public JavaMailSender javaMailSender(AmazonSimpleEmailService amazonSimpleEmailService) { 
    return new SimpleEmailServiceJavaMailSender(amazonSimpleEmailService); 
} 

所以,这两种豆代表对AmazonSimpleEmailService。 不知道为什么就是为您解决问题,但如果你想不使用SES,只是你自己javaMailSender豆,考虑到从@SpringBootApplication

排除排除MailSenderAutoConfiguration可以使用应用程序属性来完成,使得它可根据环境切换: spring.autoconfigure.exclude=org.springframework.cloud.aws.autoconfigure.mail.MailSenderAutoConfiguration