[boto3]SESを使ってメールを送信する

  • 0
    Like
  • 0
    Comment

    boto3を使えば、PythonからSES経由でメール送信ができます。

            client = boto3.client('ses')
            response = client.send_email(
                Source='YOUR@EMAIL.ADDRESS',
                Destination={
                    'ToAddresses': [
                        'TO_ADDRESS@example.com',
                    ],
                    'CcAddresses': [
                        'CC_ADDRESS@example.com',
                    ],
                    'BccAddresses': [
                        'BCC_ADDRESS@example.com',
                    ]
                },
                Message={
                    'Subject': {
                        'Data': 'SES Mail by Python',
                        'Charset': 'UTF-8'
                    },
                    'Body': {
                        'Text': {
                            'Data': 'This is text mail',
                            'Charset': 'UTF-8'
                        },
                        'Html': {
                            'Data': '<h1>This is Html Mail</h1>',
                            'Charset': 'UTF-8'
                        }
                    }
                },
                ReplyToAddresses=[
                    'YOUR@EMAIL.ADDRESS',
                ]
            )
    

    実行する

    実行すると、以下のようにメールが送信されます。

    スクリーンショット 2017-01-12 15.08.10.png

    Tips

    HTMLメールとテキストメール

    Message['Body']['Text']Message['Body']['Html']がある場合かつHTMLメールが見れるクライアントでは表示されない様子です。

    アドレスについて

    Sourceに入れるアドレスは、自身のSESアカウントで認証済のものを使ってください。

    権限について

    実行するために必要な権限はses:SendEmailです。
    以下のようなロールを作って、LambdaなりIAMユーザーに割り当てておきましょう。

    {
      "Version": "2012-10-17",
      "Statement": [{
          "Action": [
            "ses:SendEmail"
          ],
          "Resource": [
            "arn:aws:ses:*"
          ],
          "Effect": "Allow"
      }]
    }
    

    その他

    バウンスの処理などもできる様子なので、興味がある方は以下をご覧ください。
    http://boto3.readthedocs.io/en/latest/reference/services/ses.html#SES.Client.send_email