今日、私はこれと数時間戦っています。私はhttp://cloud.spring.io/spring-cloud-aws/spring-cloud-aws.html#_sending_mailsのドキュメントから始めましたが、具体的な手順についてはあまり語られていません。開発者が Bean XML を含めてから autowire を含めることができると言っているだけですMailSender
。私はそれと多くのバリアントを試しましたが、spring-cloud-aws を使用して動作させることができませんでした。最終的に、aws-java-sdk-ses を直接インクルードし、クラスを手動で構成することにしました。
これは、私が試したことを示す簡単なプロジェクトです: https://github.com/deinspanjer/aws-ses-test
このプロジェクトはコンパイルされますが、実行すると次のようになります。
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'
javax-mail ( https://github.com/deinspanjer/aws-ses-test/tree/try-with-javax-mail-api ) を追加しようとすると、エラーが次のように変わります。
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'
代わりに、aws-java-sdk-ses ( https://github.com/deinspanjer/aws-ses-test/tree/try-with-aws-java-sdk-ses )への依存関係を明示的に追加しようとすると、代わりにこのエラーを取得します。
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'
このエラーについては、 に@Qualifier("simpleMailSender")
注釈を追加しようとしました@Autowired
が、役に立ちませんでした。
誰かが私を正しい方向に導くことができることを願っています。