E-Mails in Autonomous Database senden
Zum Senden von E-Mails gibt es in Autonomous Database eine Reihe von Optionen. Sie können auch Textnachrichten oder die Ausgabe einer SQL-Abfrage an einen Slack- oder MSTeams-Kanal senden.
- E-Mail mit Email Delivery Service in Autonomous Database senden
Beschreibt die Schritte zum Senden von E-Mails mitUTL_SMTP
in Autonomous Database. - E-Mail mit einem E-Mail-Provider an einem privaten Endpunkt senden
Hier werden die Schritte zum Senden von E-Mails mit einem E-Mail-Provider an einem privaten Endpunkt beschrieben. - SMTP-Authentifizierung mit Zugangsdatenobjekten festlegen
Hier wird beschrieben, wie Zugangsdatenobjekte anUTL_SMTP.SET_CREDENTIAL
-APIs übergeben werden. - E-Mail von Autonomous Database senden mit DBMS_CLOUD_NOTIFICATION
Verwenden Sie das PackageDBMS_CLOUD_NOTIFICATION
, um Nachrichten zu senden und Ergebnisse als E-Mail abzufragen.
Übergeordnetes Thema: E-Mails und Benachrichtigungen in Autonomous Database senden
E-Mails mit Email Delivery-Service in Autonomous Database senden
beschreiben die Schritte, um E-Mails mit UTL_SMTP
in Autonomous Database zu senden
So senden Sie E-Mails mit Oracle Cloud Infrastructure Email Delivery Service:
Informationen zu UTL_SMTP
finden Sie unter UTL_SMTP.
Informationen zu UTL_SMTP
-Beschränkungen bei Autonomous Database finden Sie unter Hinweise zu PL/SQL-Package für Autonomous Database.
- Beispielcode für "SMTP-E-Mail senden"
Zeigt Beispielcode für das Senden von E-Mails mitUTL_SMTP
in Autonomous Database.
Übergeordnetes Thema: E-Mails in Autonomous Database senden
Beispielcode für das Senden von E-Mail mit SMTP
Zeigt Beispielcode für das Senden von E-Mails mit UTL_SMTP
in Autonomous Database.
CREATE OR REPLACE PROCEDURE SEND_MAIL (
msg_to varchar2,
msg_subject varchar2,
msg_text varchar2 )
IS
mail_conn utl_smtp.connection;
username varchar2(1000):= 'ocid1.user.oc1.username';
passwd varchar2(50):= 'password';
msg_from varchar2(50) := 'adam@example.com';
mailhost VARCHAR2(50) := 'smtp.us-ashburn-1.oraclecloud.com';
BEGIN
mail_conn := UTL_smtp.open_connection(mailhost, 587);
utl_smtp.starttls(mail_conn);
UTL_SMTP.AUTH(mail_conn, username, passwd, schemes => 'PLAIN');
utl_smtp.mail(mail_conn, msg_from);
utl_smtp.rcpt(mail_conn, msg_to);
UTL_smtp.open_data(mail_conn);
UTL_SMTP.write_data(mail_conn, 'Date: ' || TO_CHAR(SYSDATE, 'DD-MON-YYYY HH24:MI:SS') || UTL_TCP.crlf);
UTL_SMTP.write_data(mail_conn, 'To: ' || msg_to || UTL_TCP.crlf);
UTL_SMTP.write_data(mail_conn, 'From: ' || msg_from || UTL_TCP.crlf);
UTL_SMTP.write_data(mail_conn, 'Subject: ' || msg_subject || UTL_TCP.crlf);
UTL_SMTP.write_data(mail_conn, 'Reply-To: ' || msg_to || UTL_TCP.crlf || UTL_TCP.crlf);
UTL_SMTP.write_data(mail_conn, msg_text || UTL_TCP.crlf || UTL_TCP.crlf);
UTL_smtp.close_data(mail_conn);
UTL_smtp.quit(mail_conn);
EXCEPTION
WHEN UTL_smtp.transient_error OR UTL_smtp.permanent_error THEN
UTL_smtp.quit(mail_conn);
dbms_output.put_line(sqlerrm);
WHEN OTHERS THEN
UTL_smtp.quit(mail_conn);
dbms_output.put_line(sqlerrm);
END;
/
Wobei:
-
mailhost: Gibt den SMTP-Verbindungsendpunkt aus Schritt 1 unter E-Mail mit Email Delivery Service in Autonomous Database senden an.
-
username: Gibt den SMTP-Zugangsdatenbenutzernamen aus Schritt 2 unter E-Mail mit Email Delivery-Service in Autonomous Database senden an.
-
passwd: Gibt das Kennwort für die SMTP-ID aus Schritt 2 unter E-Mail mit Email Delivery-Service in Autonomous Database senden an.
-
msg_from: Gibt einen der genehmigten Absender aus Schritt 3 unter Mail mit Email Delivery-Service in Autonomous Database senden an.
Übergeordnetes Thema: E-Mail mit Email Delivery Service in Autonomous Database senden
E-Mail mit einem E-Mail-Provider an einem privaten Endpunkt senden
Beschreibt die Schritte zum Senden von E-Mails mit einem E-Mail-Provider an einem privaten Endpunkt.
Um E-Mails von Autonomous Database mit einem E-Mail-Provider an einem privaten Endpunkt zu senden, muss der E-Mail-Provider über das Oracle Cloud Infrastructure-VCN zugänglich sein (privater Endpunkt der Autonomous Database-Instanz). Beispiel: Sie können auf einen E-Mail-Provider zugreifen, wenn Folgendes zutrifft:
-
Die Autonomous Database-Quellinstanz und der E-Mail-Provider befinden sich in demselben Oracle Cloud Infrastructure-VCN.
-
Die Autonomous Database-Quellinstanz und der E-Mail-Provider befinden sich in verschiedenen, aber gepaarten Oracle Cloud Infrastructure-VCNs.
-
Der E-Mail-Provider befindet sich in einem On-Premise-Netzwerk, das mit FastConnect oder VPN mit dem Oracle Cloud Infrastructure-VCN der Autonomous Database-Quellinstanz verbunden ist.
Um E-Mails mit einem E-Mail-Provider zu senden, definieren Sie die folgenden Ingress- und Egress-Regeln:
-
Definieren Sie eine Egress-Regel in der Subnetzsicherheitsliste oder Netzwerksicherheitsgruppe der Quelldatenbank so, dass der Traffic zum Zielhost auf Port 587 oder Port 25 zulässig ist (je nachdem, welchen Port Sie verwenden).
-
Definieren Sie eine Ingress-Regel in der Subnetzsicherheitsliste oder Netzwerksicherheitsgruppe des Zielhosts so, dass der Traffic von der IP-Adresse der Autonomous Database-Instanz zu Port 587 oder Port 25 zulässig ist (je nachdem, welchen Port Sie verwenden).
So senden Sie E-Mails von einem E-Mail-Provider an einem privaten Endpunkt:
Übergeordnetes Thema: E-Mails in Autonomous Database senden
SMTP-Authentifizierung mit Zugangsdatenobjekten festlegen
Beschreibt, wie Zugangsdatenobjekte an UTL_SMTP.SET_CREDENTIAL
-APIs übergeben werden.
Das Unterprogramm SET_CREDENTIAL
sendet den AUTH-Befehl zur Authentifizierung beim SMTP-Server.
Mit dem Unterprogramm UTL_SMTP.SET_CREDENTIAL
können Sie Zugangsdatenobjekte übergeben, um die SMTP-Authentifizierung festzulegen. Zugangsdatenobjekte sind Schemaobjekte. Daher können nur privilegierte Benutzer auf sie zugreifen, und Sie können Berechtigungen auf Schemaebene konfigurieren, um auf die Zugangsdaten zuzugreifen. Das Übergeben von Zugangsdatenobjekten ist eine geeignete und sichere Möglichkeit, Benutzernamen/Kennwort/Schlüssel für die Authentifizierung zu speichern und zu verwalten.
Das Unterprogramm UTL_SMTP.SET_CREDENTIAL
ist eine sichere und praktische Alternative zum Unterprogramm UTL_SMTP.AUTH
.
Beispiel
...
UTL_SMTP.AUTH (l_mail_conn, 'ocid1.user.oc1.username', 'xxxxxxxxxxxx', schemes => 'PLAIN');
...
Wie im obigen Beispiel gezeigt, müssen Sie beim Aufrufen des Unterprogramms AUTH
den Benutzernamen/das Kennwort als Teil der formalen PL/SQL-Parameter in Klartext übergeben. Möglicherweise müssen Sie den Benutzernamen/das Kennwort in verschiedene PL/SQL-Automatisierungs- oder Cron-Skripte einbetten. Das Übergeben von Klartextpasswörtern ist ein Complianceproblem, das im Unterprogramm UTL_SMTP.SET_CREDENTIAL
behoben wird.
Weitere Informationen finden Sie unter AUTH-Funktion.
UTL_SMTP.SET_CREDENTIAL
-Syntax
PROCEDURE UTL_SMTP.SET_CREDENTIAL (
c IN OUT NOCOPY connection,
credential IN VARCHAR2,
schemes IN VARCHAR2 DEFAULT NON_CLEARTEXT_PASSWORD_SCHEMES
);
FUNCTION UTL_SMTP.SET_CREDENTIAL (
c IN OUT NOCOPY connection,
credential IN VARCHAR2,
schemes IN VARCHAR2 DEFAULT NON_CLEARTEXT_PASSWORD_SCHEMES)
RETURN reply;
Beispiel
-
Erstellen Sie ein Zugangsdatenobjekt:
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL ( credential_name => 'HTTP_CRED', username => 'web_app_user', password => '<password>' ); END;
Dadurch wird ein Zugangsdatenobjekt erstellt, das ein gespeichertes Benutzername/Kennwort-Paar erstellt.
Weitere Informationen finden Sie unter Prozedur CREATE_CREDENTIAL.
Weitere Informationen finden Sie unter Zugangsdaten für Scheduler-Jobs angeben.
-
Führen Sie die Prozedur
UTL_SMTP.SET_CREDENTIAL
aus:DECLARE l_mail_conn UTL_SMTP.CONNECTION; BEGIN l_mail_conn := UTL_SMTP.OPEN_CONNECTION('smtp.example.com', 587); UTL_SMTP.SET_CREDENTIAL(l_mail_conn, 'SMTP_CRED', SCHEMES => 'PLAIN'); ... END;
In diesem Beispiel wird der Befehl zur Authentifizierung beim SMTP-Server gesendet. Der Webserver benötigt diese Informationen, um die Anforderung zu autorisieren. Der Wert
l_mail_conn
ist die SMTP-Verbindung,SMTP_CRED
ist der Zugangsdatenname undPLAIN
ist das SMTP-Authentifizierungsschema.
Weitere Informationen finden Sie unter UTL_SMTP.
Informationen zu Einschränkungen für UTL_SMTP
in Autonomous Database finden Sie unter Hinweise zum PL/SQL-Package für Autonomous Database.
Übergeordnetes Thema: E-Mails in Autonomous Database senden
E-Mails von Autonomous Database mit DBMS_CLOUD_NOTIFICATION senden
Verwenden Sie das Package DBMS_CLOUD_NOTIFICATION
, um Nachrichten zu senden und Ergebnisse als E-Mail abzufragen.
- Nachrichten als E-Mail von Autonomous Database senden
MitDBMS_CLOUD_NOTIFICATION
können Sie Nachrichten als E-Mail senden. - Abfrageergebnisse als E-Mail von Autonomous Database senden
Mit dem PackageDBMS_CLOUD_NOTIFICATION
können Sie die Ergebnisse einer Abfrage als E-Mail senden.
Übergeordnetes Thema: E-Mails in Autonomous Database senden
Nachrichten als E-Mails von Autonomous Database senden
DBMS_CLOUD_NOTIFICATION
können Sie Nachrichten als E-Mail senden.
Übergeordnetes Thema: E-Mail mit DBMS_CLOUD_NOTIFICATION aus Autonomous Database senden
Abfrageergebnisse als E-Mail von Autonomous Database senden
DBMS_CLOUD_NOTIFICATION
können Sie die Ergebnisse einer Abfrage als E-Mail senden.
So verwenden Sie DBMS_CLOUD_NOTIFICATION
zum Senden von E-Mails:
Übergeordnetes Thema: E-Mail mit DBMS_CLOUD_NOTIFICATION aus Autonomous Database senden