Invia e-mail su Autonomous Database
Sono disponibili diverse opzioni per l'invio di e-mail 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 servizio di consegna tramite e-mail su Autonomous Database
Descrive i passi per inviare e-mail utilizzandoUTL_SMTP
su Autonomous Database. - Invia e-mail con un provider di posta elettronica su un endpoint privato
Descrive la procedura per inviare e-mail con un provider di posta elettronica presente nell'endpoint privato. - Utilizzare gli oggetti delle credenziali per impostare l'autenticazione SMTP
Descrive 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 Invia e-mail SMTP
Mostra il codice di esempio per l'invio di e-mail conUTL_SMTP
su Autonomous Database.
Argomento padre: Invia e-mail ad 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;
/
Posizione:
-
host di posta elettronica: specifica l'endpoint di connessione SMTP dal passo 1 in Invia posta elettronica con servizio di consegna tramite posta elettronica su Autonomous Database.
-
nomeutente: 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 messaggi di posta elettronica a un provider di posta elettronica che si trova 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 origine di Autonomous Database e il provider di posta elettronica si trovano in VCN Oracle Cloud Infrastructure diverse abbinate.
-
Il provider di posta elettronica si trova in una rete on premise connessa alla VCN Oracle Cloud Infrastructure dell'istanza di Autonomous Database di origine utilizzando FastConnect o VPN.
Come prerequisito, per inviare e-mail utilizzando un provider e-mail, definire le seguenti regole di entrata e uscita:
-
Definire una regola di uscita nella lista di sicurezza della subnet o nel gruppo di sicurezza di rete del database di origine 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 messaggi di posta elettronica da un provider di posta elettronica sull'endpoint privato:
Argomento padre: Invia e-mail ad Autonomous Database
Usa oggetti credenziali per impostare l'autenticazione SMTP
Descrive come passare gli oggetti delle 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 oggetti credenziali per impostare l'autenticazione SMTP. Gli oggetti delle credenziali sono oggetti dello schema, pertanto è possibile accedervi solo da utenti con privilegi e consentire di configurare privilegi a livello di schema per controllare le credenziali. Il passaggio di oggetti 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 mostrato nell'esempio precedente, quando si richiama il sottoprogramma AUTH
, è necessario passare il nome utente/password in chiaro come parte dei parametri formali PL/SQL. Potrebbe essere necessario incorporare il nome utente/password in vari script di automazione PL/SQL o cron. Il passaggio di password con testo in chiaro è un problema di conformità 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
-
Creare un oggetto credenziale:
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL ( credential_name => 'HTTP_CRED', username => 'web_app_user', password => '<password>' ); END;
In questo modo viene creato un oggetto credenziale che crea una coppia di nome utente/password memorizzata.
Per ulteriori informazioni, vedere CREATE_CREDENTIAL Procedure.
Per ulteriori informazioni, vedere Specifica delle credenziali del job 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 necessita di 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.
Per ulteriori informazioni, vedere UTL_SMTP.
Consulta le Note sul package PL/SQL per Autonomous Database per informazioni sulle restrizioni per UTL_SMTP
su Autonomous Database.
Argomento padre: Invia e-mail ad Autonomous Database
Invia e-mail da Autonomous Database utilizzando DBMS_CLOUD_NOTIFICATION
Utilizzare il package 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
Puoi utilizzare il packageDBMS_CLOUD_NOTIFICATION
per inviare i risultati di una query come e-mail.
Argomento padre: Invia e-mail ad Autonomous Database
Invia messaggi come e-mail da Autonomous Database
DBMS_CLOUD_NOTIFICATION
per inviare messaggi come e-mail.