JavaからSendGridを使ってメールを送信する方法

JavaからSendGridを使ってメールを送信する方法

この記事は How to Send Email in Java using Twilio SendGrid の抄訳です。

Javaでアプリケーションを開発していると、プログラムからメール送信する必要に迫られることがあるでしょう。Twilio SendGridのAPIなら、必要なものがすべて揃っています。

FreeプランのSendGridアカウントに登録してAPIキーを作成すれば、たった数行のコードでメールを送信できます。今回のブログではその手順を1つずつ見ていきましょう。

メール送信前の準備

以下のものが必要です。

最初にSendGridのアカウントを作成してください。今回の内容はFreeプランのアカウントで試すことができます。審査後にアカウントが有効化されたら、ログインしてAPIキーを作成してください。APIキー名は何でも構いません。

Create API Key

「Create & View」を押して表示されたAPIキーはテキストエディタなどにコピーしましょう。APIキーは1度しか表示されないため、他の画面へ移動する前に必ず保存してください。

APIキー

JavaのコードにAPIキーを埋め込まないようにするには、環境変数を使うのがベストです。そうすれば、SendGridへ自由にアクセスできるAPIキーを公開せずにコードを共有できます。環境変数はあとで紹介する統合開発環境(IDE)を使うか、手動で行うかのいずれかで設定してください。今回の記事では、SENDGRID_API_KEYという名称の環境変数を設定します。

Javaでメールを送信する

Javaプロジェクトを扱うときはIDEとビルドツールを使うことを強く勧めます。無償で使える良いIDEにはEclipseIntelliJ IDEA Community Editionがあります。ビルドツールはApache MavenGradle両方とも人気です。IDEとビルドツールはいずれの組合せでも新規プロジェクトを作れます。以下の方法で、プロジェクトの構成にSendGrid helper libraryを追加してください。

Gradleの設定ではbuild.gradleに以下を追加します。

implementation 'com.sendgrid:sendgrid-java:4.4.1'

Mavenの設定ではpom.xmlに以下を追加します。

<dependency>
  <groupId>com.sendgrid</groupId>
  <artifactId>sendgrid-java</artifactId>
  <version>4.4.1</version>
</dependency>

プロジェクト内にSendGridEmailerという新しいクラスを作って、以下の内容を定義しましょう。

import com.sendgrid.*;
import com.sendgrid.helpers.mail.Mail;
import com.sendgrid.helpers.mail.objects.*;

import java.io.IOException;

public class SendGridEmailer {

   public static void main(String[] args) throws IOException {

       Email from = new Email("test@example.com");
       Email to = new Email("matthew@<REDACTED>"); // use your own email address here

       String subject = "Sending with Twilio SendGrid is Fun";
       Content content = new Content("text/html", "and <em>easy</em> to do anywhere with <strong>Java</strong>");

       Mail mail = new Mail(from, subject, to, content);

       SendGrid sg = new SendGrid(System.getenv("SENDGRID_API_KEY"));
       Request request = new Request();

       request.setMethod(Method.POST);
       request.setEndpoint("mail/send");
       request.setBody(mail.build());

       Response response = sg.api(request);

       System.out.println(response.getStatusCode());
       System.out.println(response.getHeaders());
       System.out.println(response.getBody());
   }
}

ハイライトした19行目のコードに注目してください。ここで環境変数からAPIキーを読み込むのでIDEで設定できているか確認しましょう(IntelliJ IDEAEclipse)。設定していない場合は「The provided authorization grant is invalid, expired, or revoked.」というエラーメッセージが表示されます。

IDEでコードを実行してメールを送信したら、受信トレイを確認してください。

受信トレイを確認

メールが無事に届いたら成功です!

次のステップは?

JavaとSendGridを使って初めてのメール送信ができました。他にはどんなことができるのでしょうか?Inbound Parse Webhookを使ってメールの受信を処理する、タグによる差し込みやファイル添付、スケジュール送信をするなど、まだまだ色々なことができます。他にもっとやってみたいことがあれば、ぜひドキュメントをチェックしてください。

これから皆さんがどんなものを作るのかとても楽しみです!

メールを成功の原動力に

開発者にもマーケターにも信頼されているメールサービスを利用して、
時間の節約、スケーラビリティ、メール配信に関する専門知識を手に入れましょう。