m_shige1979のときどきITブログ

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

Github(変なおっさんの顔でるので気をつけてね)

https://github.com/mshige1979

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

}

リージョンで送信できない場合がある

送信解除をしても対象のリージョンを指定していない場合は送信できないかも…

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)

ちょっとむずかしいね

(´・ω・`)