2015-10-20 87 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