AWSのSESでメール送信
SESはメール送信のサービスだった
忘れてた…
受信できるように設定できる以上、送信できるはず…
やること
- SES用のアクセスキーを生成
- メール送信制限を解除
- リージョンを指定
実装
Sample01.java
import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.regions.Region; import com.amazonaws.regions.Regions; import com.amazonaws.services.simpleemail.AmazonSimpleEmailServiceClient; import com.amazonaws.services.simpleemail.model.Body; import com.amazonaws.services.simpleemail.model.Content; import com.amazonaws.services.simpleemail.model.Destination; import com.amazonaws.services.simpleemail.model.Message; import com.amazonaws.services.simpleemail.model.SendEmailRequest; public class Sample01 { private static final String ACCESS_KEY = "アクセスキー"; private static final String SECRET_ACCESS_KEY = "シークレットアクセスキー"; public static void main(String[] args) { String TO = "送信先のメールアドレス"; String FROM = "SESで認証したメールアドレス"; String SUBJECT = "テストメール"; String BODY = "テストメールです。"; // 宛先 Destination destination = new Destination().withToAddresses(new String[]{TO}); // 件名 Content subject = new Content().withData(SUBJECT); // 本文 Body body = new Body().withText(new Content().withData(BODY)); // メッセージ Message message = new Message() .withSubject(subject) .withBody(body); // リクエストを作成 SendEmailRequest request = new SendEmailRequest() .withSource(FROM) .withDestination(destination) .withMessage(message); // 認証 AmazonSimpleEmailServiceClient client = new AmazonSimpleEmailServiceClient( new BasicAWSCredentials(ACCESS_KEY, SECRET_ACCESS_KEY)); // リージョンを設定 client.setRegion(Region.getRegion(Regions.US_WEST_2)); // メール送信 client.sendEmail(request); } }
参考
Amazon SES を利用してメールを送信する - Qiita
https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/send-using-sdk-java.html
リージョンで送信できない場合がある
送信解除をしても対象のリージョンを指定していない場合は送信できないかも…
Exception in thread "main" com.amazonaws.services.simpleemail.model.MessageRejectedException: Email address is not verified. The following identities failed the check in region US-EAST-1: 送信先のメールアドレス,解除したメールアドレス (Service: AmazonSimpleEmailService; Status Code: 400; Error Code: MessageRejected; Request ID: f61b711c-da49-11e6-b2e2-ff93b2bc0127) at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1586) at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1254) at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1035) at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:747) at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:721) at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:704) at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:672) at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:654) at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:518) at com.amazonaws.services.simpleemail.AmazonSimpleEmailServiceClient.doInvoke(AmazonSimpleEmailServiceClient.java:3340) at com.amazonaws.services.simpleemail.AmazonSimpleEmailServiceClient.invoke(AmazonSimpleEmailServiceClient.java:3316) at com.amazonaws.services.simpleemail.AmazonSimpleEmailServiceClient.sendEmail(AmazonSimpleEmailServiceClient.java:2345) at Sample01.main(Sample01.java:50)