E-Mails in Autonomous Database senden
Es gibt eine Reihe von Optionen zum Senden von E-Mails in Autonomous Database. 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
Beschreibt die Schritte zum Senden von E-Mails an einen E-Mail-Provider, der sich im privaten Endpunkt befindet. - SMTP-Authentifizierung mit Zugangsdatenobjekten festlegen
Beschreibt, wie Sie Zugangsdatenobjekte anUTL_SMTP.SET_CREDENTIAL
-APIs übergeben. - E-Mails aus Autonomous Database mit DBMS_CLOUD_NOTIFICATION senden
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
Beschreibt die Schritte zum Senden von E-Mails mit UTL_SMTP
in Autonomous Database.
So senden Sie E-Mails mit Oracle Cloud Infrastructure Email Delivery Service:
Informationen zu UTL_SMTP
finden Sie unter UTL_SMTP.
Siehe PL/SQL-Packagehinweise für Autonomous Database für UTL_SMTP
-Einschränkungen bei Autonomous Database.
- Beispielcode für SMTP-E-Mail senden
Zeigt Beispielcode für das Senden von E-Mails mitUTL_SMTP
in Autonomous Database an.
Übergeordnetes Thema: E-Mails in Autonomous Database senden
Beispielcode für SMTP-E-Mail senden
Zeigt Beispielcode für das Senden von E-Mails mit UTL_SMTP
in Autonomous Database an.
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;
/
Dabei gilt:
-
mailhost: Gibt den SMTP-Verbindungsendpunkt aus Schritt 1 in E-Mail mit Email Delivery-Service in Autonomous Database senden an.
-
Benutzername: Gibt den Benutzernamen der SMTP-Zugangsdaten aus Schritt 2 in E-Mail mit Email Delivery Service in Autonomous Database senden an.
-
passwd: Gibt das Kennwort für die SMTP-Zugangsdaten aus Schritt 2 in E-Mail mit Email Delivery Service in Autonomous Database senden an.
-
msg_from: Gibt einen der genehmigten Absender aus Schritt 3 unter E-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 an einen E-Mail-Provider, der sich auf einem privaten Endpunkt befindet.
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 (den privaten Endpunkt der Autonomous Database-Instanz) zugänglich sein. Beispiel: Sie können auf einen E-Mail-Provider zugreifen, wenn:
-
Sowohl die Autonomous Database-Quellinstanz als auch 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 Oracle Cloud Infrastructure-VCNs, die gepaart sind.
-
Der E-Mail-Provider befindet sich in einem On-Premise-Netzwerk, das mit dem Oracle Cloud Infrastructure-VCN der Autonomous Database-Quellinstanz über FastConnect oder VPN verbunden ist.
Um E-Mails mit einem E-Mail-Provider zu senden, müssen Sie die folgenden Ingress- und Egress-Regeln definieren:
-
Definieren Sie eine Egress-Regel in der Subnetzsicherheitsliste der Quelldatenbank oder in der Netzwerksicherheitsgruppe, sodass 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, sodass der Traffic von der IP-Adresse der Autonomous Database-Quellinstanz 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 am 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 berechtigte Benutzer auf sie zugreifen und Sie können Berechtigungen auf Schemaebene konfigurieren, um Zugriff auf die Zugangsdaten zu kontrollieren. Das Übergeben von Zugangsdatenobjekten ist eine geeignete und sichere Möglichkeit, Benutzername/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 Klartextkennwörtern ist ein Complianceproblem, das im Unterprogramm UTL_SMTP.SET_CREDENTIAL
behoben wird.
Weitere Informationen finden Sie unter Funktion und Prozedur AUTH.
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
-
Zugangsdatenobjekt erstellen:
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 an den 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
der Zugangsdatenname undPLAIN
das SMTP-Authentifizierungsschema.
Weitere Informationen finden Sie unter UTL_SMTP.
Informationen zu Einschränkungen für UTL_SMTP
in Autonomous Database finden Sie unter PL/SQL-Packagehinweise für Autonomous Database.
Übergeordnetes Thema: E-Mails in Autonomous Database senden
E-Mail 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 aus Autonomous Database senden
Mit derDBMS_CLOUD_NOTIFICATION
können Sie Nachrichten als E-Mail senden. - Abfrageergebnisse als E-Mail aus 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-Mail von Autonomous Database senden
DBMS_CLOUD_NOTIFICATION
können Sie Nachrichten als E-Mail senden.
Übergeordnetes Thema: E-Mail aus Autonomous Database mit DBMS_CLOUD_NOTIFICATION senden
Abfrageergebnisse als E-Mail aus Autonomous Database senden
DBMS_CLOUD_NOTIFICATION
verwenden, um die Ergebnisse einer Abfrage als E-Mail zu senden.
So verwenden Sie DBMS_CLOUD_NOTIFICATION
zum Senden von E-Mails:
Übergeordnetes Thema: E-Mail aus Autonomous Database mit DBMS_CLOUD_NOTIFICATION senden