先将username/password 经过加密
假如你的 mail 为zhongguo@263.net 密码为 123456
select UTL_RAW.cast_to_varchar2(UTL_ENCODE.base64_encode(UTL_RAW.cast_to_raw('zhongguo')))
from dual;
你会得到一串加密的数据,例如emhvbmdndW8=
select UTL_RAW.cast_to_varchar2(UTL_ENCODE.base64_encode(UTL_RAW.cast_to_raw('123456')))
from dual;
你会得到一串加密的数据,例如MTIzNDU2
你的mail 服务器为smtp.263.net
create or replace PROCEDURE send_test_message
IS
mailhost VARCHAR2(64) := 'smtp.263.net'; --发邮件的邮件服务器
sender VARCHAR2(64) := 'zhonguo@263.net'; --发件地址
recipient VARCHAR2(64) := 'zanglie@263.net'; --接受地址
mail_conn utl_smtp.connection; --数据库预先定义的变量
BEGIN
mail_conn := utl_smtp.open_connection(mailhost); --打开邮件服务器
utl_smtp.helo(mail_conn, '263.net'); --握手连接
utl_smtp.command(mail_conn,'auth login'); --登录命令
UTL_SMTP.command(mail_conn,' emhvbmdndW8='); --发邮件的的用户名称,加密的
UTL_SMTP.command(mail_conn,' MTIzNDU2'); --发邮件的的密码,加密的
utl_smtp.mail(mail_conn, sender); --发邮件的地址
utl_smtp.rcpt(mail_conn, recipient); --收邮件的地址
-- If we had the message in a single string, we could collapse
-- open_data(), write_data(), and close_data() into a single call --- to data().
utl_smtp.open_data(mail_conn); --向指定的邮件服务器传输数据
utl_smtp.write_data(mail_conn, 'This is a test message.'||chr(13)); --传输数据的内容
utl_smtp.write_data(mail_conn, 'This is line 2.' || chr(13)); --chr(13)为换行
utl_smtp.close_data(mail_conn); --关闭连接
utl_smtp.quit(mail_conn); --退出邮件服务器
-- EXCEPTION WHEN OTHERS THEN -- Handle the error
-- EXCEPTION WHEN OTHERS THEN -- Handle the error
END;
/
exec send_test_message --调用程序,发信。
如果想发中文和附件,请查看相关文档。做这个实验要连接到网络。