收件人只有乙個的過程如下:
注意事項:
1.由於在測試中我採用的都是外網的方式傳送接收郵件,因此必須加上用***圈出的這部分**進行認證。內網內部傳送就不需要了,不過沒測試。
2. ***圈出的這部分**第三行和第五行填寫的內容分別是郵箱伺服器對應的郵箱使用者名稱和密碼。
3.用於傳送的郵箱的伺服器必須建立acl,主要是三個步驟
1)建立訪問控制列表acl
begin
dbms_network_acl_admin.create_acl (
acl => 'email_server_permissions.xml',
description => 'enables network permissions for the e-mail server',
principal => 'database_user',--進行操作的資料庫使用者且使用者要大寫
is_grant => true,
privilege => 'connect');
end;
2)將acl與郵件伺服器關聯(這一步,採用不同的郵箱伺服器就需要分別執行,如想用qq郵箱傳送,那麼就必須換成qq郵箱伺服器執行一遍)
則用qq郵箱伺服器位址smtp.qq.com*/
lower_port => 25,
upper_port => null);
commit;
end;
關聯後,可用dba_network_acls檢視是否已經生成
select host, lower_port, upper_port, acl from sys.dba_network_acls;
3)為執行的資料庫使用者授予連線郵件伺服器的許可權
begin
dbms_network_acl_admin.add_privilege(
acl => 'email_server_permissions.xml',
principal =>'database_user',--進行操作的資料庫使用者且使用者要大寫
is_grant => true,
privilege => 'connect');
end;
採用dba_network_acl_privileges檢視檢視授予的許可權
select acl,
principal,
privilege,
is_grant,
to_char(start_date, 'dd-mon-yyyy') as start_date,
to_char(end_date, 'dd-mon-yyyy') as end_date
from sys.dba_network_acl_privileges;
4.utl_tcp.crlf作用:換行
注意在寫郵件標題,傳送人,接收人,郵件內容時,各個之間一定要有換行,否則會無法傳送或者是郵件內容為空。
5.中文亂碼問題
utl_smtp.write_raw_data 用該過程替代utl_smtp.write_data可以解決中文亂碼的問題。
6.自己測試中發現如果採用qq郵箱傳送郵件,則
發給多個人
create or replace procedure p_sendmailto_many(sender in varchar2,
recipient1 in varchar2,
recipient2 in varchar2,
recipient3 in varchar2,
subject in varchar2,
message in varchar2) is
mailhost varchar2(30) := 'smtp.qq.com';
c utl_smtp.connection;
msg varchar2(1000);
begin
msg := 'date: ' || to_char(sysdate - 1, 'dd mon yy hh24:mi:ss') ||
utl_tcp.crlf || 'from: <' || sender || '>' || utl_tcp.crlf ||
'subject: ' || subject || utl_tcp.crlf || 'to: <' || recipient1 ||
'>;<' || recipient2 || '>' || utl_tcp.crlf || 'cc: <' ||
recipient3 || '>' || utl_tcp.crlf || '' || utl_tcp.crlf ||
message;
c := utl_smtp.open_connection(mailhost, 25);
utl_smtp.helo(c, mailhost);
utl_smtp.command(c, 'auth login');
utl_smtp.command(c,
utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw(sender))));
utl_smtp.command(c,
utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw('password'))));
utl_smtp.mail(c, sender);
utl_smtp.rcpt(c, recipient1);
utl_smtp.rcpt(c, recipient2);
utl_smtp.rcpt(c, recipient3);
utl_smtp.open_data(c);
utl_smtp.write_raw_data(c, utl_raw.cast_to_raw(msg));
utl_smtp.close_data(c);
utl_smtp.quit(c);
end p_sendmailto_many;
python 發郵件 python發郵件
python提供smtplib模組,該模組定義了乙個smtp客戶端會話物件,可用於使用smtp或esmtp偵聽器守護程式向任何網際網路機器傳送郵件。這是乙個簡單的語法,用來建立乙個smtp物件,稍後將演示如何用它來傳送電子郵件 import smtplib smtpobj smtplib.smtp ...
發郵件原理
發 郵件原理 一 郵件伺服器和電子郵箱 郵件伺服器 要在internet 上提供電子郵件功能,必須有專門的電子郵件伺服器。例如現在 internet 很多提供郵件服務的廠商 sina sohu 163 等等他們都有自己的郵件伺服器。這些伺服器類似於現實生活中的郵局,它主要負責接收使用者投遞過來的郵件...
定時發郵件
1.新建服務,新增安裝程式,生成解決方案 在dubug資料夾下複製檔案到d盤cehsi資料夾下 例 2.將installutil.exe 檔案拷貝到ceshi下 在c windows microsoft.net framework 對應的版本路徑下可以找到 3.以管理員身份執行cmd,定位到測試資料...