Integración de Python con Email Delivery
Utilice Python para enviar correos electrónicos a través del servicio Email Delivery.
Puede utilizar Python para enviar correos electrónicos a través de Email Delivery. Para poder enviar correos electrónicos, debe configurar Email Delivery en Python.
Importante
Estas instrucciones contienen código de ejemplo para su comodidad y se deben utilizar como referencia. Para obtener soporte de cliente, debe ponerse en contacto con Python. Estos pasos se probaron en una instancia informática de Oracle Linux Server versión 7.9 y Python 3.6. En estos pasos se asume que está conectado a una instancia de Oracle Linux. Los comandos y la ubicación de los archivos pueden variar en otras distribuciones de Linux. Las aplicaciones Java (incluida JavaMail) se deben actualizar a la última versión para garantizar que los últimos protocolos, cifrados y parches de seguridad cumplen con los cifrados y las políticas de seguridad soportadas de Oracle.
Estas instrucciones contienen código de ejemplo para su comodidad y se deben utilizar como referencia. Para obtener soporte de cliente, debe ponerse en contacto con Python. Estos pasos se probaron en una instancia informática de Oracle Linux Server versión 7.9 y Python 3.6. En estos pasos se asume que está conectado a una instancia de Oracle Linux. Los comandos y la ubicación de los archivos pueden variar en otras distribuciones de Linux. Las aplicaciones Java (incluida JavaMail) se deben actualizar a la última versión para garantizar que los últimos protocolos, cifrados y parches de seguridad cumplen con los cifrados y las políticas de seguridad soportadas de Oracle.
Configuración de Python para enviar correo electrónico a través de Email Delivery
Para activar Python para probar la configuración de Email Delivery:
- Asegúrese de que Email Delivery está configurado para enviar correos electrónicos. Consulte Introducción.Nota
Se necesitan las credenciales de SMTP para configurar Python y utilizar Email Delivery. Asegúrese de anotar el nombre de usuario y la contraseña al generar las credenciales SMTP. - Asegúrese de que Python esté instalado. El proceso de instalación difiere según el sistema operativo que utilice. Por ejemplo, ejecute el siguiente comando para instalar Python en Oracle Linux:
sudo yum install python3 -y
- En un editor de archivos como vi, cree un script de python para probar Email Delivery.
Ejecute el siguiente comando:
sudo vi ociemail.py
- En el archivo ociemail.py, sustituya las variables por sus propios valores. Por ejemplo:
# 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!")
Nota
Python 2 y las API de correo electrónico heredadas no se deben utilizar con Email Delivery. - En un editor de archivos como vi, cree un archivo que contenga la contraseña de SMTP. Ejecute el siguiente comando y reemplace el contenido con la contraseña de SMTP:
sudo vi ociemail.config
- Para enviar un correo electrónico de prueba con Python, ejecute el siguiente comando desde el directorio en el que se encuentra el script:
python3 ociemail.py
Más información
En GitHub encontrará más scripts de ejemplo de Python.