Walczę z tym od kilku godzin dzisiaj. Zacząłem od dokumentacji pod numerem http://cloud.spring.io/spring-cloud-aws/spring-cloud-aws.html#_sending_mails, która tak naprawdę nie mówi wiele o konkretnych krokach. Po prostu mówi, że programista może dołączyć kod XML Bean, a następnie dokonać autouire MailSender
. Próbowałem tego, tak samo jak wiele wariantów, i nie udało mi się go uruchomić przy użyciu wiosennych chmur-aws. W końcu uciekłem się do bezpośredniego włączania aws-java-sdk-ses i ręcznego konfigurowania klasy.Jakie są wymagane kroki konfiguracyjne, aby aplikacja Spring Boot wysyłała proste wiadomości e-mail za pośrednictwem AWS SES?
Oto prosty projekt wykazując co próbowałem: https://github.com/deinspanjer/aws-ses-test
Ten projekt kompiluje, ale gdy uruchomię go uzyskać:
Parameter 0 of constructor in com.example.awssestest.AwsSesTestApplication required a bean of type 'org.springframework.mail.MailSender' that could not be found.
- Bean method 'mailSender' not loaded because @ConditionalOnClass did not find required class 'javax.mail.internet.MimeMessage'
- Bean method 'simpleMailSender' not loaded because @ConditionalOnClass did not find required class 'com.amazonaws.services.simpleemail.AmazonSimpleEmailService'
- Bean method 'javaMailSender' not loaded because @ConditionalOnClass did not find required class 'com.amazonaws.services.simpleemail.AmazonSimpleEmailService'
Gdy próbuję dodać javax-mail (https://github.com/deinspanjer/aws-ses-test/tree/try-with-javax-mail-api), a następnie zmienia się na błędach:
Parameter 0 of constructor in com.example.awssestest.AwsSesTestApplication required a bean of type 'org.springframework.mail.MailSender' that could not be found.
- Bean method 'mailSender' not loaded because AnyNestedCondition 0 matched 2 did not; NestedCondition on MailSenderAutoConfiguration.MailSenderCondition.JndiNameProperty @ConditionalOnProperty (spring.mail.jndi-name) did not find property 'jndi-name'; NestedCondition on MailSenderAutoConfiguration.MailSenderCondition.HostProperty @ConditionalOnProperty (spring.mail.host) did not find property 'host'
- Bean method 'simpleMailSender' not loaded because @ConditionalOnClass did not find required class 'com.amazonaws.services.simpleemail.AmazonSimpleEmailService'
- Bean method 'javaMailSender' not loaded because @ConditionalOnClass did not find required class 'com.amazonaws.services.simpleemail.AmazonSimpleEmailService'
jeśli zamiast staram wyraźnie dodając zależność od AWS-java-SDK-SES (https://github.com/deinspanjer/aws-ses-test/tree/try-with-aws-java-sdk-ses), otrzymuję ten błąd zamiast:
Parameter 0 of constructor in com.example.awssestest.AwsSesTestApplication required a bean of type 'org.springframework.mail.MailSender' that could not be found.
- Bean method 'mailSender' not loaded because @ConditionalOnClass did not find required class 'javax.mail.internet.MimeMessage'
- Bean method 'javaMailSender' in 'MailSenderAutoConfiguration' not loaded because @ConditionalOnClass did not find required class 'javax.mail.Session'
- Bean method 'simpleMailSender' in 'MailSenderAutoConfiguration' not loaded because @ConditionalOnMissingClass found unwanted class 'org.springframework.cloud.aws.mail.simplemail.SimpleEmailServiceJavaMailSender'
tego błędu, próbowałem dodawanie adnotacji do @Qualifier("simpleMailSender")
@Autowired
, ale to nie pomogło.
Mam nadzieję, że ktoś będzie mógł mnie skierować we właściwym kierunku.
Wygląda na to, że brakuje importu @ImportResource ("/ aws-mail.xml") do klasy AwsSesTestApplication. – skadya
Po prostu próbowałem dodać tę adnotację do klasy aplikacji, ale nie zmienia to komunikatu o błędzie. – deinspanjer