AWS Java SDK v2 を使用して、ScalaからAmazon SES( Simple Emai Service )を利用してメール送信を行います。
こちらのページにマルチパートのメールの送信方法も含めて詳細に記述されています。
AWS SDK を使用したメールの送信 - Amazon Simple Email Service
クラスメソッドさんのこの記事は、多分v1のAWS Java SDKかな。
AWS SDK for Javaを使う#Amazon SES | Developers.IO
依存ライブラリ
libraryDependencies += "software.amazon.awssdk" % "aws-sdk-java" % "2.13.27" libraryDependencies += "javax.mail" % "mail" % "1.4.1"
メール送信を行うコード
下記は簡単な本文で、単一宛先に対してメール送信を行うサンプルコード。
SES SDKに渡すメール電文が、SdkBytes
という特殊な型っぽいので、Javaプリミティブのbyte型に変換する必要がある。
import javax.mail.Session import javax.mail.internet.MimeMessage import javax.mail.Message import javax.mail.internet.InternetAddress import software.amazon.awssdk.core.SdkBytes import java.io.ByteArrayOutputStream import java.nio.ByteBuffer import java.util.Properties import software.amazon.awssdk.services.ses.SesClient import software.amazon.awssdk.services.ses.model.{RawMessage, SendRawEmailRequest} import software.amazon.awssdk.auth.credentials.{AwsBasicCredentials, StaticCredentialsProvider} def sendMailFromAwsSES() = { val accessKey = "YOUR_ACCESS_KEY" val secretKey = "YOUR_SECRET_KEY" val sesClient = SesClient.builder().region(Region.[YOUR_SES_RESION]).credentialsProvider( StaticCredentialsProvider.create( AwsBasicCredentials.create(accessKey, secretKey) ) ).build() val session = Session.getDefaultInstance(new Properties()) val message = new MimeMessage(session) //メールSubject message.setSubject("こんにちは!", "UTF-8") //Fromアドレス SESで確認済みのメールアドレスを指定する message.setFrom(new InternetAddress("your_verified@domain")) //宛先 SESがSandboxの場合は確認済みのメールアドレスでないと弾かれる message.setRecipient(Message.RecipientType.TO, new InternetAddress("toAddress@domain")) //メール本文 message.setText("本文です", "UTF-8") val outputStream = new ByteArrayOutputStream() message.writeTo(outputStream) val buf = ByteBuffer.wrap(outputStream.toByteArray) val arr = new Array[Byte](buf.remaining) buf.get(arr) val data = SdkBytes.fromByteArray(arr) //SES用のメールメッセージの作成 val rawMessage = RawMessage.builder.data(data).build //リクエストペイロードの作成 val rawEmailRequest = SendRawEmailRequest.builder.rawMessage(rawMessage).build //SESへメールの送信依頼 sesClient.sendRawEmail(rawEmailRequest) }
リンク
リンク
リンク