0
1

IBM Cloud上のSendGrid(メール配信サービス)を使用して、Pythonからメールを送信する

Last updated at Posted at 2024-08-20

はじめに

‐ 達成したいこと
VPC内のサーバーからメールを送信することです。短期間の利用を想定しているため、手軽に利用できるサービスが理想です。

‐ SendGridを使用してメール送信を実現

IBM Cloudのメニューには「Email Delivery」というサービスがあります。これは、サードパーティ製品のSendGridに基づいています。IBM Cloudのカタログページには、5分で使い始められるといった手軽さについての説明もあります。

環境はこのように構成します。料金を節約するため、VPCサーバーはローカルPCでシミュレーションして、Pythonコードを実行します。

image.png

実現方法 _ SendGridサービスの設定

設定の流れ

  1. IBM Cloud Portal: SendGrid Accountの作成
  2. SendGrid Portal: Sender Indentityの作成
  3. SendGrid Portal: Setup Guideより設定

1. IBM Cloud Portal: SendGrid Accountの作成について

IBM Cloud Portalでは、Classic InfrastructureServicesEmail Deliveryにアクセスし、Order Email Delivery Serviceボタンをクリックします。
新規作成の画面で、
‐ Email Address:こちらのEmail AddressはSendGrid Accountに関連付けられ、有効なアドレスであるかどうかの確認は行われません。実際にメールを送信する際に使用される『送信元』のメールアドレスではありません。
‐ Plan:月に3000通のメールを無料で送信できるFree Packageプランを利用します。

image.png

Createボタンをクリックして、すぐにAccountの作成が完了です。
image.png

IBM Cloud Portalでは、Planの変更とサービスのキャンセルのみ操作でき、その他の設定はSendGridの画面で行う必要があります。Vendor Portalをクリックすると、SendGrid PortalにSSO(Single Sign-On)でアクセスできます。つまり、現在は、SendGridのユーザー名やパスワードを入力する必要はありません。

2. SendGrid Portal: Sender Indentityの作成について

最初にSendGridのPortalをアクセスする際に、自動的にSetup Guideが表示されます。(ダッシュボード画面からいつでもSetup Guideを開くことができます。)
image.png

SendGrid 経由でメールを送信するには、送信元のメールアドレスが有効であることを確認する必要があります。そのため、送信元メールアドレスごとにSender Identityを作成する必要があります。

Setup Guide画面のCreate sender identityをクリックします。
image.png

詳細画面で送信元のメールアドレス情報を入力し、Createをクリックします。
image.png

このメールアドレスに確認メールが送信されます。確認すると、Sender Identity が「VERIFIED」の状態になります。
image.png

3. SendGrid Portal: Setup Guideより送信方法の設定について

次に、Setup Guideに従って、送信環境に応じてメールを送信する方法を確認・設定します。

Setup Guideの画面に戻り、Use Web API or SMTP をクリックします。
image.png

Web APIを選択します。(お勧めの方法です。)
image.png

送信側の開発言語を選択します。こちらはPythonになります。
image.png

SendGridのWeb APIをアクセスするためのAPI Keyを作ります。
image.png

API Keyが作成したら、次の環境変数の設定CLIも自動的に更新されます。
image.png

これでSendGrid Portalでの設定が完了です。

実現方法 _ ローカルPCでのPythonコードの説明

Sendguide PortalでのSetup Guideには、ローカルPCでPython環境をセットアップする方法に関する情報が記載されています。
image.png

簡単に言いますと、次のことが必要です:

  • API KeyをローカルPCのenvとして設定します。
  • pipコマンドでsendgrid パッケージをインストールします。
  • メールを送信するためのPythonコードを準備します。

Setup Guideには、Sampleコマンドが記載されており、参考すれば問題ないと思いますが、ここで特に送信するためのPython コードについて、少し説明します。

import os
from sendgrid import SendGridAPIClient
from sendgrid.helpers.mail import Mail

message = Mail(
    from_email='from_email@example.com',     #送信元のメールアドレス。Sender Identityに登録することが必要
    to_emails='to@example.com',        #送信先のメールアドレス
    subject='Sending with Twilio SendGrid is Fun',
    html_content='<strong>and easy to do anywhere, even with Python</strong>')
try:
    sg = SendGridAPIClient(os.environ.get('SENDGRID_API_KEY'))
    response = sg.send(message)
    print(response.status_code)
    print(response.body)
    print(response.headers)
except Exception as e:
    print(e.message)

効果を確認

Pythonコードを実施し、宛先のメールボックスで受信状況を確認します。via sendgrid.netという情報が表示されています。

image.png

もし受信されていない場合:

  • ジャンクフォルダを確認してみましょう。
  • SendGrid Portalで送信Activityを確認しましょう。Complianceの原因でBlockされた可能性があります。例えば、私の会社のメールアドレスがこのような外部サービスより送信することが許可されていません。

image.png

他には

参考資料:

Supportについて:

SendGridは、実はTwilio会社が提供しているサービスです。問い合わせの際には、IBM Cloudのサポートケースではなく、SendGridへサポートケースを起票することになります。
起票するURL:https://support.sendgrid.com/hc/en-us
(英語のみのようです。)

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1