怎么在ORACLE中配置邮件服务器
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,怎么在ORACLE中配置邮件服务器?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1 创建 ACLBEGIN dbms_
千家信息网最后更新 2025年02月02日怎么在ORACLE中配置邮件服务器
怎么在ORACLE中配置邮件服务器?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
1 创建 ACL
BEGIN dbms_network_acl_admin.create_acl(acl => 'email.xml', DESCRIPTION => 'Enables network permissions for the e-mail server', principal => 'C##ESD_MONITOR', --表示赋予哪个用户 必须大写 is_grant => TRUE, PRIVILEGE => 'resolve', start_date => NULL, end_date => NULL);END;
2 赋予权限
begindbms_network_acl_admin.add_privilege(acl => 'email.xml', --同上xml名称 principal => 'C##ESD_MONITOR', --表示赋予哪个用户 必须大写 is_grant => TRUE, privilege => 'connect', --权限名 start_date => null, end_date => null);end;
3 设置端口
begin dbms_network_acl_admin.assign_acl ( -- 该段命令意思是允许访问acl名为utl_sendmail.xml下授权的用户,使用oracle网络访问包,所允许访问的目的主机,及其端口范围。 acl => 'email.xml', host => '*'-- , -- ip地址或者域名,填写http://localhost:9000/hello与http://localhost:9000/是会报host无效的 -- 且建议使用ip地址或者使用域名,若用localhost,当oracle不是安装在本机上的情况下,会出现问题 -- lower_port => 9000, -- 允许访问的起始端口号 -- upper_port => Null -- 允许访问的截止端口号 ); end;
4 查询权限设置情况
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 dba_network_acl_privileges;
5 创建邮件发送存储过程
create or replace procedure send_mail(p_recipient VARCHAR2, -- 邮件接收人 p_subject VARCHAR2, -- 邮件标题 p_message VARCHAR2, -- 邮件正文 p_type number -- 1文本 2html ) as --下面四个变量请根据实际邮件服务器进行赋值 v_mailhost VARCHAR2(30) := 'smtp.qq.com'; --SMTP服务器地址 v_user VARCHAR2(30) := '111@qq.com'; --登录SMTP服务器的用户名 v_pass VARCHAR2(20) := '111'; --登录SMTP服务器的密码 授权码 v_sender VARCHAR2(50) := '111@qq.com'; --发送者邮箱,一般与 ps_user 对应 v_conn UTL_SMTP.connection; --到邮件服务器的连接 v_msg varchar2(4000); --邮件内容 BEGIN v_conn := UTL_SMTP.open_connection(v_mailhost, 25); UTL_SMTP.ehlo(v_conn, v_mailhost); --是用 ehlo() 而不是 helo() 函数 --否则会报:ORA-29279: SMTP 永久性错误: 503 5.5.2 Send hello first. UTL_SMTP.command(v_conn, 'AUTH LOGIN'); -- smtp服务器登录校验 UTL_SMTP.command(v_conn, UTL_RAW.cast_to_varchar2(UTL_ENCODE.base64_encode(UTL_RAW.cast_to_raw(v_user)))); UTL_SMTP.command(v_conn, UTL_RAW.cast_to_varchar2(UTL_ENCODE.base64_encode(UTL_RAW.cast_to_raw(v_pass)))); UTL_SMTP.mail(v_conn, '<' || v_sender || '>'); --设置发件人 注:网上很多资料直接写v_sender,这样写会报ORA-29279: SMTP 500 error UTL_SMTP.rcpt(v_conn, '<' || p_recipient || '>'); --设置收件人 UTL_SMTP.open_data(v_conn); --打开流 if p_type = 1 then -- 创建要发送的邮件内容 注意报头信息和邮件正文之间要空一行 v_msg := 'Date:' || TO_CHAR(SYSDATE, 'dd mon yy hh34:mi:ss') || UTL_TCP.CRLF || 'From: ' || '<' || v_sender || '>' || UTL_TCP.CRLF || 'To: ' || '<' || p_recipient || '>' || UTL_TCP.CRLF || 'Subject: ' || p_subject || UTL_TCP.CRLF || UTL_TCP.CRLF -- 这前面是报头信息 || p_message; -- 这个是邮件正文 UTL_SMTP.write_raw_data(v_conn, UTL_RAW.cast_to_raw(v_msg)); --这样写标题和内容都能用中文 elsif p_type = 2 then UTL_SMTP.write_data(v_conn, 'From:' || '<' || v_sender || '>' || utl_tcp.CRLF); UTL_SMTP.write_data(v_conn, 'To:' || '<' || p_recipient || '>' || utl_tcp.crlf); UTL_SMTP.write_raw_data(v_conn, UTL_RAW.cast_to_raw(convert('Subject:' || p_subject || utl_tcp.CRLF, 'ZHS16GBK'))); UTL_SMTP.write_raw_data(v_conn, UTL_RAW.cast_to_raw(convert('Content-Type:text/html;charset=GBK' || utl_tcp.CRLF, 'ZHS16GBK'))); UTL_SMTP.write_data(v_conn, utl_tcp.CRLF); UTL_SMTP.write_raw_data(v_conn, UTL_RAW.cast_to_raw(convert(p_message, 'ZHS16GBK'))); --这样写标题和内容都能用中文 end if; UTL_SMTP.close_data(v_conn); --关闭流 UTL_SMTP.quit(v_conn); --关闭连接 EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line(DBMS_UTILITY.format_error_stack); DBMS_OUTPUT.put_line(DBMS_UTILITY.format_call_stack); END;
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
邮件
服务器
服务
内容
用户
地址
权限
标题
正文
会报
登录
信息
口号
域名
大写
情况
报头
端口
中文
帮助
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全推进会讲话
易天互联网络科技有限公司
网络安全信息加密论文
三维数据采集软件开发
生化8多人模式服务器
单位dns服务器偶尔失效
商城裂变软件开发
用数据库判断一个年是否是闰年
查看服务器进程
unity3d 数据库
国家的认可的五大数据库
网络安全专业建设工作方案
dns服务器部署取消轮询
萌娃说网络安全
三星用百度服务器错误
深圳中院软件开发
学生网络安全培训计划
域服务器作用
广州海珠区帝特网络技术公司
网络技术公司是干嘛的
光遇服务器出现错误是为什么
重庆软件开发定制公司排名
服务器ibms管理系统
北京常规软件开发品质保障
客户数据库中的数据如何获得
网络安全管理系统软件
互动软件开发教程
天津服务器硬盘质量怎么样
安徽专业软件开发如何收费
计算机网络安全领域的3a指