Invia e-mail su Autonomous Database
Sono disponibili diverse opzioni per l'invio di messaggi di posta elettronica su Autonomous Database. È inoltre possibile inviare messaggi di testo o l'output di una query SQL a un canale Slack o MSTeams.
- Invia e-mail con il servizio di consegna tramite e-mail su Autonomous Database
Verranno descritti i passi per inviare messaggi di posta elettronica utilizzandoUTL_SMTP
su Autonomous Database. - Invia e-mail con un provider e-mail in un endpoint privato
Descrive i passi per inviare e-mail con un provider e-mail che si trova in un endpoint privato. - Utilizzare gli oggetti delle credenziali per impostare l'autenticazione SMTP
Viene descritto come passare gli oggetti delle credenziali alle APIUTL_SMTP.SET_CREDENTIAL
. - Invia e-mail da Autonomous Database utilizzando DBMS_CLOUD_NOTIFICATION
Utilizzare il packageDBMS_CLOUD_NOTIFICATION
per inviare messaggi ed eseguire query sui risultati come e-mail.
Argomento padre: Invia e-mail e notifiche su Autonomous Database
Invia e-mail con servizio di consegna tramite e-mail su Autonomous Database
Descrive i passi per inviare messaggi di posta elettronica utilizzando UTL_SMTP
in Autonomous Database.
Per inviare e-mail con Oracle Cloud Infrastructure Email Delivery Service:
Per informazioni su UTL_SMTP
, vedere UTL_SMTP.
Vedere PL/SQL Package Notes for Autonomous Database per le limitazioni UTL_SMTP
con Autonomous Database.
- Codice di esempio di invio e-mail SMTP
Mostra il codice di esempio per l'invio di e-mail conUTL_SMTP
su Autonomous Database.
Argomento padre: Invia e-mail su Autonomous Database
Codice di esempio invio e-mail SMTP
Mostra il codice di esempio per l'invio di e-mail con UTL_SMTP
su 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;
/
Dove:
-
mailhost: specifica l'endpoint di connessione SMTP dal passo 1 in Invia e-mail con servizio di consegna tramite e-mail su Autonomous Database.
-
nome utente: specifica il nome utente della credenziale SMTP dal passo 2 in Invia e-mail con servizio di consegna tramite e-mail su Autonomous Database.
-
passwd: specifica la password della credenziale SMTP dal passo 2 in Invia e-mail con servizio di consegna tramite e-mail su Autonomous Database.
-
msg_from: specifica uno dei mittenti approvati dal Passo 3 in Invia e-mail con servizio di consegna tramite e-mail su Autonomous Database.
Invia e-mail con un provider di posta elettronica su un endpoint privato
Descrive i passi per inviare e-mail a un provider di posta elettronica presente nell'endpoint privato.
Per inviare messaggi di posta elettronica da Autonomous Database utilizzando un provider di posta elettronica su un endpoint privato, il provider di posta elettronica deve essere accessibile dalla VCN di Oracle Cloud Infrastructure (endpoint privato dell'istanza di Autonomous Database). Ad esempio, è possibile accedere a un provider di posta elettronica quando:
-
Sia l'istanza di Autonomous Database di origine che il provider di posta elettronica si trovano nella stessa VCN di Oracle Cloud Infrastructure.
-
L'istanza di Autonomous Database di origine e il provider di posta elettronica si trovano in diverse VCN di Oracle Cloud Infrastructure abbinate.
-
Il provider di posta elettronica si trova su una rete on premise connessa alla VCN di Oracle Cloud Infrastructure dell'istanza di Autonomous Database di origine utilizzando FastConnect o VPN.
Come prerequisito, per inviare e-mail utilizzando un provider di posta elettronica, definire le regole di entrata e uscita riportate di seguito.
-
Definire una regola di uscita nella lista di sicurezza della subnet del database di origine o nel gruppo di sicurezza di rete in modo che il traffico verso l'host di destinazione sia consentito sulla porta 587 o sulla porta 25 (a seconda della porta in uso).
-
Definire una regola di entrata nella lista di sicurezza della subnet dell'host di destinazione o nel gruppo di sicurezza di rete in modo che sia consentito il traffico dall'indirizzo IP dell'istanza di Autonomous Database di origine alla porta 587 o alla porta 25 (a seconda della porta in uso).
Per inviare e-mail da un provider di posta elettronica sull'endpoint privato:
Argomento padre: Invia e-mail su Autonomous Database
Usa oggetti credenziali per impostare l'autenticazione SMTP
Descrive come passare oggetti credenziali alle API UTL_SMTP.SET_CREDENTIAL
.
Il sottoprogramma SET_CREDENTIAL
invia il comando AUTH per l'autenticazione al server SMTP.
Il sottoprogramma UTL_SMTP.SET_CREDENTIAL
consente di passare gli oggetti delle credenziali per impostare l'autenticazione SMTP. Gli oggetti delle credenziali sono oggetti dello schema, pertanto possono essere accessibili solo dagli utenti con privilegi e consentono di configurare i privilegi a livello di schema per controllare le credenziali. Il passaggio degli oggetti delle credenziali è un modo appropriato e sicuro per memorizzare e gestire nome utente/password/chiavi per l'autenticazione.
Il sottoprogramma UTL_SMTP.SET_CREDENTIAL
è un'alternativa sicura e conveniente al sottoprogramma UTL_SMTP.AUTH
.
Esempio
...
UTL_SMTP.AUTH (l_mail_conn, 'ocid1.user.oc1.username', 'xxxxxxxxxxxx', schemes => 'PLAIN');
...
Come illustrato nell'esempio precedente, quando si richiama il sottoprogramma AUTH
, è necessario passare il nome utente/password in testo in chiaro come parte dei parametri formali PL/SQL. Potrebbe essere necessario incorporare il nome utente/password in vari script di automazione o cron PL/SQL. Il passaggio di password in chiaro è un problema di conformità che viene risolto nel sottoprogramma UTL_SMTP.SET_CREDENTIAL
.
Per ulteriori informazioni, vedere Funzione e procedura AUTH.
Sintassi UTL_SMTP.SET_CREDENTIAL
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;
Esempio
-
Crea un oggetto credenziali:
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL ( credential_name => 'HTTP_CRED', username => 'web_app_user', password => '<password>' ); END;
Questo crea un oggetto credenziali che crea una coppia nome utente/password memorizzata.
Per ulteriori informazioni, vedere CREATE_CREDENTIAL Procedura.
Per ulteriori informazioni, vedere Specifica delle credenziali del job dello scheduler.
-
Eseguire la procedura
UTL_SMTP.SET_CREDENTIAL
: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 questo esempio viene inviato il comando per l'autenticazione al server SMTP. Il server Web richiede queste informazioni per autorizzare la richiesta. Il valore
l_mail_conn
è la connessione SMTP,SMTP_CRED
è il nome delle credenziali ePLAIN
è lo schema di autenticazione SMTP.
Vedere UTL_SMTP.
Per informazioni sulle limitazioni per UTL_SMTP
su Autonomous Database, vedere PL/SQL Package Notes for Autonomous Database.
Argomento padre: Invia e-mail su Autonomous Database
Invia e-mail da Autonomous Database utilizzando DBMS_CLOUD_NOTIFICATION
Utilizzare il pacchetto DBMS_CLOUD_NOTIFICATION
per inviare messaggi ed eseguire query sui risultati come e-mail.
- Invia messaggi come e-mail da Autonomous Database
È possibile utilizzareDBMS_CLOUD_NOTIFICATION
per inviare messaggi come e-mail. - Invia risultati query come e-mail da Autonomous Database
È possibile utilizzare il packageDBMS_CLOUD_NOTIFICATION
per inviare i risultati di una query come e-mail.
Argomento padre: Invia e-mail su Autonomous Database
Invia messaggi come e-mail da Autonomous Database
DBMS_CLOUD_NOTIFICATION
per inviare messaggi come e-mail.