怎么在ORACLE中配置邮件服务器
发表于:2025-11-10 作者:千家信息网编辑
千家信息网最后更新 2025年11月10日,怎么在ORACLE中配置邮件服务器?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1 创建 ACLBEGIN dbms_
千家信息网最后更新 2025年11月10日怎么在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安全错误
数据库的锁怎样保障安全
电气网络技术
sql数据库 备份工具
打黄扫非网络安全课视频
网络安全杂志中国公安大学
打印机远程服务器如何开启
数据库查询关联程序版本
python 临时数据库
山东服务器机柜品牌云主机
互联网科技公司岗位分布
小程序数据库查询失败回调怎么写
连接weblogic数据库
如何修改数据库md5
google服务器空间
网络安全策略最重要的是
数据库实验报告一创建表
网络技术是做什么的
java创建数据库连接池案例
英国 网络安全
关于网络安全宣传的演讲稿
数据库查询语句分等级
达梦数据库日志文件是什么
把数据库所有的时间改了
象山智能刀片服务器质量推荐
服务器ups
备案 换服务器吗
河北唐山dns服务器地址云空间
东营软件开发有哪些公司
网络安全技术与应用童晓民
石景山区专业性软件开发职责
linux从哪里查看时钟服务器