Intégration de Python avec le service de transmission de messages

Utilisez Python pour envoyer des courriels au moyen du service de transmission de messages.

Vous pouvez utiliser Python pour envoyer des courriels au moyen du service de transmission de messages. Afin de pouvoir envoyer des courriels, vous devez configurer le service de transmission de messages dans Python.

Important

Ces instructions contiennent un exemple de code pour vous faciliter la tâche et doivent être utilisées comme référence. Pour obtenir de l'assistance, vous devez communiquer avec Python. Ces étapes ont été testées sur une instance de calcul Oracle Linux Server version 7.9 et Python 3.6. Ces étapes supposent que vous êtes connecté à une instance Oracle Linux. Les autres distributions de Linux peuvent avoir des commandes et des emplacements de fichier différents. Les applications Java (notamment JavaMail) doivent être mises à niveau vers la dernière version afin d'assurer la conformité des protocoles, des chiffrements et des correctifs de sécurité pris en charge par Oracle.

Configurer Python pour l'envoi de courriels au moyen du service de transmission de messages

Pour activer Python afin de tester la configuration du service de transmission de messages :

  1. Assurez-vous que le service de transmission de messages est configuré pour l'envoi de courriels. Voir Introduction.
    Note

    Les données d'identification SMTP sont requises pour configurer Python afin qu'il puisse utiliser le service de transmission de messages. Veuillez noter le nom d'utilisateur et le mot de passe lorsque vous générez les données d'identification SMTP.
  2. Assurez-vous que Python est installé. Le processus d'installation diffère selon le système d'exploitation utilisé. Par exemple, exécutez la commande suivante pour installer Python sur Oracle Linux :
    sudo yum install python3 -y
  3. Dans un éditeur de fichiers tel que vi, créez un script Python pour tester le service de transmission de messages.

    Exécutez la commande suivante :

    sudo vi ociemail.py
  4. Dans le fichier ociemail.py, remplacez les variables par vos propres valeurs.
    Par exemple :
    # python script for sending SMTP configuration with Oracle Cloud Infrastructure Email Delivery
    import smtplib 
    import email.utils
    from email.message import EmailMessage
    import ssl
    
    # Replace sender@example.com with your "From" address.
    # This address must be verified.
    # this is the approved sender email
    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'
     
    # Put the PASSWORD value from your Email Delivery SMTP password into the following file.
    PASSWORD_SMTP_FILE = 'ociemail.config'
     
    # If you're using Email Delivery in a different region, replace the HOST value with an appropriate 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>"""
    
    # get the password from a named config file ociemail.config
    with open(PASSWORD_SMTP_FILE) as f:
        password_smtp = f.readline().strip()
    
    # create message container
    msg = EmailMessage()
    msg['Subject'] = SUBJECT
    msg['From'] = email.utils.formataddr((SENDERNAME, SENDER))
    msg['To'] = RECIPIENT
    
    # make the message multi-part alternative, making the content the first part
    msg.add_alternative(BODY_TEXT, subtype='text')
    # this adds the additional part to the message
    # According to RFC 2046, the last part of a multipart message, in this case
    # the HTML message, is best and preferred.
    msg.add_alternative(BODY_HTML, subtype='html')
    
    # Try to send the message.
    try: 
        server = smtplib.SMTP(HOST, PORT)
        server.ehlo()
        # most python runtimes default to a set of trusted public CAs that will include the CA used by OCI Email Delivery.
        # However, on platforms lacking that default (or with an outdated set of CAs), customers may need to provide a capath that includes our public CA.
        server.starttls(context=ssl.create_default_context(purpose=ssl.Purpose.SERVER_AUTH, cafile=None, capath=None))
        # smtplib docs recommend calling ehlo() before & after starttls()
        server.ehlo()
        server.login(USERNAME_SMTP, password_smtp)
        # our requirement is that SENDER is the same as From address set previously
        server.sendmail(SENDER, RECIPIENT, msg.as_string())
        server.close()
    # Display an error message if something goes wrong.
    except Exception as e:
        print(f"Error: {e}")
    else:
        print("Email successfully sent!")
    Note

    Python 2 et les API de courriel existantes ne doivent pas être utilisés avec le service de transmission de messages.
  5. Dans un éditeur de fichiers tel que vi, créez un fichier contenant le mot de passe SMTP. Exécutez la commande suivante et remplacez le contenu par votre mot de passe SMTP :
    sudo vi ociemail.config
  6. Pour envoyer un courriel de test avec Python, exécutez la commande suivante à partir du répertoire où se trouve le script :
    python3 ociemail.py

Informations supplémentaires

D'autres exemples de script Python sont disponibles dans GitHub.