Oracle Cloud Infrastructureドキュメント

Pythonと電子メール配信の統合

Pythonを使用して、電子メール配信を通じて電子メールを送信できます。 電子メールを送信する前に、Pythonで電子メール配信を構成する必要があります。

ノート

これらのステップは、Oracle Linuxインスタンスにログインしていることを前提としています。 Linuxのその他のディストリビューションには、異なるコマンドおよびファイルのロケーションが含まれることがあります。

電子メール配信を介して電子メールを送信するようPythonを構成

Pythonを有効にして電子メール配信の構成をテストするには:

  1. 電子メールを送信するように「電子メール配信」が構成されていることを確認します。 「電子メール配信の開始」も参照してください。

ノート

電子メール配信を使用するようにPythonを構成するには、SMTP資格証明が必要です。 SMTP資格証明の生成時には、ユーザー名とパスワードを忘れないでください。

  1. Pythonがインストールされていることを確認してください。 インストール・プロセスは、使用しているオペレーティング・システムによって異なります。 たとえば、次のコマンドを実行してOracle LinuxにPythonをインストールします:

    sudo yum install python3 -y
  2. Viなどのファイル・エディタで、pythonスクリプトを作成して電子メール配信をテストします。

    次のコマンドを実行します。

    sudo vi ociemail.py
  3. ociemail.pyファイルで、変数を独自の値に置き換えます。

    例えば:

    ------------------------------------------------------------------------------------------------
    #python script for sending SMTP configuration with Oracle Cloud Infrastructure Email Delivery
    import smtplib 
    import email.utils
    from email.mime.multipart import MIMEMultipart
    from email.mime.text import MIMEText
     
    # Replace sender@example.com with your "From" address.
    # This address must be verified.
    SENDER = 'sender@example.com' 
    SENDERNAME = 'Sender Name'
     
    # Replace recipient@example.com with a "To" address. If your account
    # is still in the sandbox, this address must be verified.
    RECIPIENT  = 'recipient@example.com'
     
    # Replace the USERNAME_SMTP value with your Email Delivery SMTP username.
    USERNAME_SMTP = 'ocid1.user.oc1..<unique_ID>@ocid1.tenancy.oc1..<unique_ID>.vf.com'
     
    # Replace the PASSWORD_SMTP value with your Email Delivery SMTP password.
    PASSWORD_SMTP = '<password>'
     
    # If you're using Email Delivery in a different region, replace the HOST value with an SMTP endpoint. Use port 25 or 587 to connect to the SMTP endpoint.
    HOST = "smtp.us-ashburn-1.oraclecloud.com"
    PORT = 587
     
    # The subject line of the email.
    SUBJECT = 'Email Delivery Test (Python smtplib)'
     
    # The email body for recipients with non-HTML email clients.
    BODY_TEXT = ("Email Delivery Test\r\n"
                 "This email was sent through the Email Delivery SMTP "
                 "Interface using the Python smtplib package."
                )
     
    # The HTML body of the email.
    BODY_HTML = """<html>
    <head></head>
    <body>
      <h1>Email Delivery SMTP Email Test</h1>
      <p>This email was sent with Email Delivery using the
        <a href='https://www.python.org/'>Python</a>
        <a href='https://docs.python.org/3/library/smtplib.html'>
        smtplib</a> library.</p>
    </body>
    </html>"""
     
    # Create message container - the correct MIME type is multipart/alternative.
    msg = MIMEMultipart('alternative')
    msg['Subject'] = SUBJECT
    msg['From'] = email.utils.formataddr((SENDERNAME, SENDER))
    msg['To'] = RECIPIENT
     
     
    # Record the MIME types of both parts - text/plain and text/html.
    part1 = MIMEText(BODY_TEXT, 'plain')
    part2 = MIMEText(BODY_HTML, 'html')
     
    # Attach parts into message container.
    # According to RFC 2046, the last part of a multipart message, in this case
    # the HTML message, is best and preferred.
    msg.attach(part1)
    msg.attach(part2)
     
    # Try to send the message.
    try: 
        server = smtplib.SMTP(HOST, PORT)
        server.ehlo()
        server.starttls()
        #smtplib docs recommend calling ehlo() before & after starttls()
        server.ehlo()
        server.login(USERNAME_SMTP, PASSWORD_SMTP)
        server.sendmail(SENDER, RECIPIENT, msg.as_string())
        server.close()
    # Display an error message if something goes wrong.
    except Exception as e:
        print ("Error: ", e)
    else:
        print ("Email successfully sent!")
  4. Pythonを使用してテスト電子メールを送信するには、スクリプトがあるディレクトリから次のコマンドを実行します:

    python3 ociemail.py

詳細情報

  • Pythonスクリプトのその他の例は、GitHubにあります。