Python mit Email Delivery integrieren
Verwenden Sie Python, um E-Mails über den Email Delivery-Service zu senden.
Sie können Python für den Versand von E-Mails über Email Delivery verwenden. Bevor Sie E-Mails senden können, müssen Sie Email Delivery in Python konfigurieren.
Wichtig
Diese Anweisungen enthalten praktischen Beispielcode und sollten als Referenz verwendet werden. Um Clientsupport zu erhalten, müssen Sie sich an Python wenden. Diese Schritte wurden auf einer Oracle Linux Server Release 7.9 Compute-Instanz und Python 3.6 getestet. Bei diesen Schritten wird davon ausgegangen, dass Sie bei einer Oracle Linux-Instanz angemeldet sind. Andere Linux-Distributionen haben möglicherweise andere Befehle und Dateispeicherorte. Java-Anwendungen (einschließlich JavaMail) müssen auf die neueste Version aktualisiert werden, um sicherzustellen, dass die neuesten Protokolle, Ciphers und Sicherheitspatches die von Oracle unterstützten Sicherheits-Policys und Ciphers einhalten.
Diese Anweisungen enthalten praktischen Beispielcode und sollten als Referenz verwendet werden. Um Clientsupport zu erhalten, müssen Sie sich an Python wenden. Diese Schritte wurden auf einer Oracle Linux Server Release 7.9 Compute-Instanz und Python 3.6 getestet. Bei diesen Schritten wird davon ausgegangen, dass Sie bei einer Oracle Linux-Instanz angemeldet sind. Andere Linux-Distributionen haben möglicherweise andere Befehle und Dateispeicherorte. Java-Anwendungen (einschließlich JavaMail) müssen auf die neueste Version aktualisiert werden, um sicherzustellen, dass die neuesten Protokolle, Ciphers und Sicherheitspatches die von Oracle unterstützten Sicherheits-Policys und Ciphers einhalten.
Python so konfigurieren, dass E-Mails über Email Delivery gesendet werden
So ermöglichen Sie Python das Testen der Konfiguration von Email Delivery:
- Stellen Sie sicher, dass Email Delivery zum Senden von E-Mails konfiguriert ist. Siehe Erste Schritte.Hinweis
Die SMTP-Zugangsdaten sind erforderlich, um Python zur Verwendung von Email Delivery zu konfigurieren. Notieren Sie den Benutzernamen und das Kennwort, wenn Sie die SMTP-Zugangsdaten generieren. - Stellen Sie sicher, dass Python installiert ist. Der Installationsvorgang hängt davon ab, welches Betriebssystem Sie verwenden. Beispiel: Führen Sie den folgenden Befehl aus, um Python auf Oracle Linux zu installieren:
sudo yum install python3 -y
- Erstellen Sie in einem Dateieditor wie vi ein Python-Skript, um Email Delivery zu testen.
Führen Sie den folgenden Befehl aus:
sudo vi ociemail.py
- Ersetzen Sie in der Datei ociemail.py die Variablen durch Ihre eigenen Werte. Beispiel:
# 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!")
Hinweis
Python 2- und Legacy-E-Mail-APIs dürfen nicht mit Email Delivery verwendet werden. - Erstellen Sie in einem Dateieditor wie vi eine Datei, die das SMTP-Kennwort enthält. Führen Sie den folgenden Befehl aus, und ersetzen Sie den Inhalt durch Ihr SMTP-Kennwort:
sudo vi ociemail.config
- Führen Sie den folgenden Befehl in dem Verzeichnis aus, in dem das Skript gespeichert ist, um eine Test-E-Mail mit Python zu senden:
python3 ociemail.py
Weitere Informationen
Weitere Beispiele für Python-Skripte finden Sie in GitHub.