E-Mails an autonome KI-Datenbank auf dedizierter Exadata-Infrastruktur senden
Sie können E-Mails in der autonomen KI-Datenbank auf einer dedizierten Exadata-Infrastruktur mit dem Email Delivery-Service oder den DBMS_CLOUD_NOTIFICATION-Prozeduren senden. In diesem Artikel wird beschrieben, wie Sie E-Mails mit diesen beiden Optionen senden.
E-Mail mit Email Delivery-Service in autonomer KI-Datenbank senden
Beschreibt die Schritte zum Senden von E-Mails mit UTL_SMTP in der autonomen KI-Datenbank auf einer dedizierten Exadata-Infrastruktur.
So senden Sie E-Mails mit UTL_SMTP:
-
Identifizieren Sie den SMTP-Verbindungsendpunkt für den E-Mail-Versand.
-
Wenn Sie Oracle Cloud Infrastructure (OCI) Email Delivery Service verwenden möchten, identifizieren Sie den Verbindungsendpunkt für Email Delivery. Beispiel: Wählen Sie
smtp.email.us-phoenix-1.oci.oraclecloud.comaus, wenn US West (Phoenix) die Absenderregion ist. Weitere Informationen finden Sie unter SMTP-Verbindung konfigurieren.Hinweis: Sie müssen möglicherweise zusätzliche Oracle Cloud Infrastructure-Regionen abonnieren, wenn Email Delivery in Ihrer aktuellen Region nicht verfügbar ist.
-
Wenn Sie einen SMTP-Server eines Drittanbieters verwenden möchten, müssen der Netzwerkadministrator den SMTP-Server und seine Konnektivität mit dem Mandanten der autonomen AI-Datenbank konfigurieren und die Informationen zum SMTP-Verbindungsendpunkt angeben.
-
-
Generieren Sie SMTP-Zugangsdaten für Email Delivery für den OCI-Benutzer.
UTL_SMTPverwendet Zugangsdaten zur Authentifizierung bei Email Delivery-Servern, wenn Sie eine E-Mail senden. Weitere Informationen finden Sie unter SMTP-Zugangsdaten für einen Benutzer generieren. -
Erstellen Sie genehmigte Absender für den E-Mail-Versand.
Wenn Sie OCI Email Delivery Service verwenden, führen sie diesen Schritt mit
UTL_SMTP.MAILfür alle E-Mail-Adressen, die Sie als Absender verwenden, aus. Weitere Informationen finden Sie unter Genehmigte Absender verwalten. -
Ermöglichen Sie den SMTP-Hostzugriff für Benutzer mit Administratorrolle durch Anhängen eines Access Control-Eintrags (ACE).
Um sicheres SMTP zu verwenden, müssen Sie den Datenbankbenutzer mit einem Access Control-Eintrag (ACE) für den Wallet-Zugriff zusätzlich zum SMTP-Hostzugriff einrichten. Für einen sicheren SMTP-Zugriff mit OCI Email Delivery Service muss der Oracle Cloud Infrastructure-Account mit Simple Authentication and Security Layer-(SASL-)Protokollen wie PLAIN, CRAM-MD5, LOGIN authentifiziert werden. Beispielcode finden Sie unter Beispielcode für SMTP-E-Mails senden.
-
Schreiben Sie den PL/SQL-Code, um E-Mails mit
UTL_MAILzu senden.Tipp: Wenn Sie die E-Mail-Versandprozedur selbst entwickeln, stellen sie sicher, dass Ihr Code dem Beispielcode für SMTP-E-Mail-Versand entspricht.
-
Senden Sie eine Test-E-Mail mit der PL/SQL-Prozedur, die Sie in Schritt 5 erstellt haben.
Beispiel:
execute send_mail('taylor@example.com', 'Email from Oracle Autonomous Database', 'Sent using UTL_SMTP');
Weitere Informationen finden Sie unter UTL_SMTP in Oracle Database 19c PL/SQL-Packages and Types Reference oder Oracle Database 26ai PL/SQL Packages and Types Reference.
Weitere Informationen zur Verwendung von UTL_SMTP mit Autonomous AI Database finden Sie unter Hinweise zur Verwendung von Database-PL/SQL-Packages.
Beispielcode für SMTP-E-Mail senden
Zeigt Beispielcode für das Senden von E-Mails mit UTL_SMTP in einer autonomen KI-Datenbank an.
Beispielcode
-- As ADMIN user, set up ACE to access SMTP host
connect admin/[password]@[ADBD-host]/[pdbname]_tp.atp.oraclecloud.com
begin
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE (
host => '[SMTP_Server_address]',
lower_port => 25,
upper_port => 25,
ace => xs$ace_type(
privilege_list => xs$name_list('smtp'),
principal_name => '[database_user]',
principal_type => xs_acl.ptype_db));
end;
/
-- If using secure SMTP, set up ACE to wallet for certificate-based secure (TLS) email
declare
m_wallet_path VARCHAR2(512);
begin
select property_value into m_wallet_path
from database_properties
where property_name like '%SSL%';
m_wallet_path := 'file:' || m_wallet_path;
DBMS_NETWORK_ACL_ADMIN.APPEND_WALLET_ACE (
wallet_path => m_wallet_path,
ace => xs$ace_type(
privilege_list => xs$name_list('use_client_certificates'),
principal_name => '[database_user]',
principal_type => xs_acl.ptype_db));
end;
/
-- As ADMIN or regular database user with privileges set up above, use UTL_SMTP to send email
connect [database_user]/[password]@[ADBD-host]/[pdbname]_tp.atp.oraclecloud.com
-- Example of normal (non-secure) email
DECLARE
c UTL_SMTP.CONNECTION;
reply UTL_SMTP.REPLY;
host varchar2(64) := '[SMTP_Server_address]',
port pls_integer := 25;
sender varchar2(64) := '[sender-address@domain.com]';
recipient varchar2(64) := '[recipient-address@domain.com]';
BEGIN
c := UTL_SMTP.OPEN_CONNECTION (host, port);
if (reply.CODE != 220) then
raise_application_error(-20000,'UTL_SMTP.CONNECTION: '
|| reply.CODE || ' - ' || reply.TEXT);
end if;
UTL_SMTP.HELO(c, host);
UTL_SMTP.MAIL(c, sender);
UTL_SMTP.RCPT(c, recipient);
UTL_SMTP.OPEN_DATA(c);
UTL_SMTP.WRITE_DATA(c,'From:[Sender] <' || sender || '>' || UTL_TCP.CRLF);
UTL_SMTP.WRITE_DATA(c,'To:[Recipient] <' || recipient || '>' || UTL_TCP.CRLF);
UTL_SMTP.WRITE_DATA(c,'Subject: Email from UTL_SMTP App' || UTL_TCP.CRLF);
UTL_SMTP.WRITE_DATA(c,'Mail Content');
UTL_SMTP.CLOSE_DATA(c);
dbms_output.put_line('Close Data: ' || reply.code);
UTL_SMTP.QUIT(c);
END;
/
-- Example of secure email using OCI Mail Server as the SMTP server
DECLARE
m_wallet_path VARCHAR2(256);
c UTL_SMTP.CONNECTION;
reply UTL_SMTP.REPLY;
host varchar2(64) := 'smtp.email.[region].oci.oraclecloud.com';
port pls_integer := 25;
sender varchar2(64) := '[sender-address@domain.com]';
recipient varchar2(64) := '[recipient-address@domain.com]';
BEGIN
select property_value into m_wallet_path
from database_properties
where property_name like '%SSL%';
m_wallet_path := 'file:' || m_wallet_path;
-- secure connection with SSL/TLS made *before* SMTP communication
-- use hostname matched against CN or SMTP server's certificate
reply := UTL_SMTP.OPEN_CONNECTION (
host => host,
port => port,
c => c,
wallet_path => m_wallet_path,
wallet_password => NULL,
secure_connection_before_smtp => FALSE,
secure_host => NULL);
if (reply.CODE != 220) then
raise_application_error(-20000,'UTL_SMTP.OPEN_CONNECTION: '
|| reply.CODE ||' - ' || reply.TEXT);
end if;
UTL_SMTP.STARTTLS(c);
-- username is the 'SMTP credential' for the user's email address
-- obtained from OCI Identity -> Users -> email address.
-- Scheme refers to SASL (Simple Authentication and Security Layer)
-- Authentication Schemes for SMTP protocol - PLAIN, CRAM-MD5, LOGIN
-- https://docs.oracle.com/en-us/iaas/Content/Email/Concepts/overview.htm
UTL_SMTP.AUTH(
c => c,
username => '[ocid1.user.verylongaddresscreatedinOCIforuseraddress.com]',
password => '[password-provided-from-create]',
schemes => 'PLAIN');
UTL_SMTP.HELO(c, host);
UTL_SMTP.MAIL(c, sender);
UTL_SMTP.RCPT(c, recipient);
UTL_SMTP.OPEN_DATA(c);
UTL_SMTP.WRITE_DATA(c, 'From: Sender <' || sender || '>' || UTL_TCP.CRLF);
UTL_SMTP.WRITE_DATA(c, 'To: Recipient <' || recipient || '>' || UTL_TCP.CRLF);
UTL_SMTP.WRITE_DATA(c, 'Subject: Email from UTL_SMTP App' || UTL_TCP.CRLF);
UTL_SMTP.WRITE_DATA(c, 'Mail Content');
UTL_SMTP.WRITE_DATA(c, 'Sender is a domain-owned approved sender in OCI Mail Service');
UTL_SMTP.CLOSE_DATA(c);
dbms_output.put_line('Close Data: ' || reply.code);
UTL_SMTP.QUIT(c);
END;
/
Nachrichten als E-Mail aus autonomer KI-Datenbank senden
Gilt nur für:
Oracle Public Cloud
Mit der DBMS_CLOUD_NOTIFICATION können Sie Nachrichten als E-Mail senden.
-
Identifizieren Sie den SMTP-Verbindungsendpunkt für den E-Mail-Versand. Sie müssen möglicherweise zusätzliche Oracle Cloud Infrastructure-Regionen abonnieren, wenn Email Delivery in Ihrer aktuellen Region nicht zur Verfügung steht.
Beispiel: Wählen Sie eine der folgenden Optionen für den SMTP-Verbindungsendpunkt aus:
-
smtp.us-phoenix-1.oraclecloud.com
-
smtp.us-ashburn-1.oraclecloud.com
-
smtp.email.uk-london-1.oci.oraclecloud.com
-
smtp.email.eu-frankfurt-1.oci.oraclecloud.com
Weitere Informationen finden Sie unter SMTP-Verbindung konfigurieren.
-
-
Generieren Sie SMTP-Zugangsdaten für Email Delivery.
UTL_SMTPverwendet Zugangsdaten zur Authentifizierung bei Email Delivery-Servern, wenn Sie E-Mails senden.Weitere Informationen finden Sie unter SMTP-Zugangsdaten für einen Benutzer generieren.
-
Erstellen Sie einen genehmigten Absender für Email Delivery. Führen Sie diesen Schritt für alle E-Mail-Adressen durch, die Sie als "
From" mitUTL_SMTP.MAILverwenden.Weitere Informationen finden Sie unter Genehmigte Absender verwalten.
-
SMTP-Zugriff für ADMIN-Benutzer durch Anhängen eines Access Control-Eintrags (ACE) zulassen.
Beispiel:
BEGIN -- Allow SMTP access for user ADMIN DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE( host => 'www.us.example.com', lower_port => 587, upper_port => 587, ace => xs$ace_type(privilege_list => xs$name_list('SMTP'), principal_name => 'ADMIN', principal_type => xs_acl.ptype_db)); END; / -
Erstellen Sie ein Zugangsdatenobjekt, und verwenden Sie
DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE, um eine Nachricht als E-Mail zu senden.BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'EMAIL_CRED', username => 'username', password => 'password' ); END; / BEGIN DBMS_CLOUD_NOTIFICATION.SEND_MESSAGE( provider => 'email', credential_name => 'EMAIL_CRED', message => 'Subject content', params => json_object('recipient' value 'mark@example.com, suresh@example.com', 'to_cc' value 'nicole@example.com, jordan@example.com', 'to_bcc' value 'manisha@example.com', 'subject' value 'Test subject', 'smtp_host' value 'smtp.email.example.com', 'sender' value 'approver_sender@example.com' ) ); END; /Verwenden Sie den Parameter
params, um den Absender, smtp_host, Betreff, Empfänger und Empfänger eines CC oder BCC instring-Werten anzugeben.-
Absender: Gibt die E-Mail-ID des genehmigten Absenders aus Schritt 3 an.
-
smtp_host: Gibt den SMTP-Hostnamen aus Schritt 2 an.
-
Betreff: Gibt den Betreff der E-Mail an.
-
Empfänger: Gibt die E-Mail-IDs der Empfänger an. Verwenden Sie ein Komma zwischen E-Mail-IDs, wenn mehrere Empfänger vorhanden sind.
-
to_cc: Gibt die E-Mail-IDs an, die einen CC der E-Mail erhalten. Verwenden Sie ein Komma zwischen E-Mail-IDs, wenn mehrere CC-Empfänger vorhanden sind.
-
to_bcc: Gibt die E-Mail-IDs an, die einen BCC der E-Mail erhalten. Verwenden Sie ein Komma zwischen E-Mail-IDs, wenn mehrere BCC-Empfänger vorhanden sind.
Weitere Informationen finden Sie unter Prozedur SEND_MESSAGE.
-
Abfrageergebnisse als E-Mail aus autonomer KI-Datenbank senden
Gilt nur für:
Oracle Public Cloud
Sie können das Package 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:
-
Identifizieren Sie den SMTP-Verbindungsendpunkt für den E-Mail-Versand. Sie müssen möglicherweise zusätzliche Oracle Cloud Infrastructure-Regionen abonnieren, wenn Email Delivery in Ihrer aktuellen Region nicht zur Verfügung steht.
Beispiel: Wählen Sie eine der folgenden Optionen für den SMTP-Verbindungsendpunkt aus:
-
smtp.us-phoenix-1.oraclecloud.com
-
smtp.us-ashburn-1.oraclecloud.com
-
smtp.email.uk-london-1.oci.oraclecloud.com
-
smtp.email.eu-frankfurt-1.oci.oraclecloud.com
Weitere Informationen finden Sie unter SMTP-Verbindung konfigurieren.
-
-
Generieren Sie SMTP-Zugangsdaten für Email Delivery.
UTL_SMTPverwendet Zugangsdaten zur Authentifizierung bei Email Delivery-Servern, wenn Sie E-Mails senden.Weitere Informationen finden Sie unter SMTP-Zugangsdaten für einen Benutzer generieren.
-
Erstellen Sie einen genehmigten Absender für Email Delivery. Führen Sie diesen Schritt für alle E-Mail-Adressen durch, die Sie als "
From" mitUTL_SMTP.MAILverwenden.Weitere Informationen finden Sie unter Genehmigte Absender verwalten.
-
SMTP-Zugriff für ADMIN-Benutzer durch Anhängen eines Access Control-Eintrags (ACE) zulassen.
Beispiel:
BEGIN -- Allow SMTP access for user ADMIN DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE( host => 'www.us.example.com', lower_port => 587, upper_port => 587, ace => xs$ace_type(privilege_list => xs$name_list('SMTP'), principal_name => 'ADMIN', principal_type => xs_acl.ptype_db)); END; / -
Erstellen Sie ein Zugangsdatenobjekt, und verwenden Sie
DBMS_CLOUD_NOTIFICATION.SEND_DATA, um die Ausgabe einer Abfrage als E-Mail zu senden.BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'EMAIL_CRED', username => 'username', password => 'password' ); END; / BEGIN DBMS_CLOUD_NOTIFICATION.SEND_DATA( provider => 'email', credential_name => 'EMAIL_CRED', query => 'SELECT tablespace_name FROM dba_tablespaces', params => json_object('recipient' value 'mark@example.com, suresh@example.com', 'to_cc' value 'nicole@example.com1, jordan@example.com', 'to_bcc' value 'manisha@example.com', 'subject' value 'Test subject', 'type' value 'json', 'title' value 'mytitle', 'message' value 'This is the message', 'smtp_host' value 'smtp.email.example.com', 'sender' value 'approver_sender@example.com' ) ); END; /Verwenden Sie den Parameter
params, um Absender, smtp_host, Betreff, Empfänger, Empfänger eines CC oder BCC, die Nachricht, den Datentyp und den Titel inString-Werten anzugeben.-
Absender: Gibt die E-Mail-ID des genehmigten Absenders aus Schritt 3 an.
-
smtp_host: Gibt den SMTP-Hostnamen aus Schritt 2 an.
-
Betreff: Gibt den Betreff der E-Mails an. Die maximale Größe beträgt 100 Zeichen.
-
Empfänger: Gibt die E-Mail-IDs der Empfänger an. Verwenden Sie ein Komma zwischen E-Mail-IDs, wenn mehrere Empfänger vorhanden sind.
-
to_cc: Gibt die E-Mail-IDs an, die einen CC der E-Mail erhalten. Verwenden Sie ein Komma zwischen E-Mail-IDs, wenn mehrere CC-Empfänger vorhanden sind.
-
to_bcc: Gibt die E-Mail-IDs an, die einen BCC der E-Mail erhalten. Verwenden Sie ein Komma zwischen E-Mail-IDs, wenn mehrere BCC-Empfänger vorhanden sind.
-
Nachricht: Gibt den Meldungstext an.
-
type: Gibt das Ausgabeformat als CSV- oder JSON-Datei an.
-
title: Gibt den Titel des Anhangs der SQL-Ausgabe an. Der Titel darf nur Buchstaben, Ziffern, Unterstriche, Bindestriche oder Punkte als Zeichen in seinem Wert enthalten, da er zur Generierung eines Dateinamens verwendet wird.
Die maximale Nachrichtengröße für die Verwendung mit
DBMS_CLOUD_NOTIFICATION.SEND_DATAfür E-Mail-Benachrichtigungen beträgt 32 KB.Weitere Informationen finden Sie unter Prozedur SEND_DATA.
-