AWSのSESで送信者名を指定する
実装
import java.io.UnsupportedEncodingException; import javax.mail.internet.InternetAddress; 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 = "送信元のメールアドレス"; 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(senderAddressBuilder(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); } private static String senderAddressBuilder(String fromAddress, String senderName) { try { InternetAddress address = new InternetAddress(fromAddress, senderName, "ISO-2022-JP"); return address.toString(); } catch (UnsupportedEncodingException e) { System.out.println("Internet Address Constructor throws UnsupportedEncoding"); } return fromAddress; } }
文字コードは任意で設定すればいいかも
別に必須ではないかもしれません。
address.toString()である程度はいい感じに対応してくれそうです。