2015-10-20 3 views
1

Pour utiliser Amazon S3, j'ai ajouté spring-cloud-aws-context et spring-cloud-starter-aws dans pom.xml.Comment désactiver Amazon SES lors de l'utilisation de Spring Cloud AWS

j'ai pu mettre en œuvre la poussée et récupérer d'Amazon S3, mais maintenant, quand je suis en train d'envoyer un e-mail de mon application, je reçois cette erreur:

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) 

Il semble que mon JavaMailSender L'implémentation essaie maintenant d'utiliser Amazon SES au lieu de org.springframework.mail.javamail.JavaMailSenderImpl. Je ne suis pas en mesure de trouver des propriétés ou annotation j'utiliser pour forcer printemps à ne pas utiliser Amazon SES (Pour votre information, j'utilise Spring Boot)

Répondre

2

En fait, si l'on regarde le code source MailSenderAutoConfiguration, verra ceci:

@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); 
} 

Ainsi, ces deux délégués de haricots à la AmazonSimpleEmailService. Je ne sais pas pourquoi est-ce que le problème pour vous, mais si vous souhaitez ne pas utiliser SES, mais juste votre propre javaMailSender haricot, envisager d'exclure MailSenderAutoConfiguration de @SpringBootApplication

L'exclusion peut être fait en utilisant une propriété d'application afin qu'elle peut être basculé en fonction de l'environnement: spring.autoconfigure.exclude=org.springframework.cloud.aws.autoconfigure.mail.MailSenderAutoConfiguration