【问题标题】:Send mail from oracle store procedure ,Oracle 11g从oracle存储过程发送邮件,Oracle 11g
【发布时间】:2014-05-07 10:33:57
【问题描述】:

我正在尝试使用 utl_mail 和 smtp 服务器 smtp.gmail.com 使用端口 25 或 587 发送邮件。

如果我使用端口 25,出现错误,必须先使用 STARTTLS 命令,对于 587,它会进入无限循环。

我的代码 sn-p 在下面

create or replace 
PROCEDURE TEST_UTL_MAIL AS 
BEGIN
  utl_mail.send(
   sender => 'xxx@gmail.com',
    recipients => 'xxx@gmail.com',
   subject => 'Testing utl_mail',
    message => 'The receipt of this email means'
 );
 EXCEPTION
  WHEN OTHERS THEN
  raise_application_error(-20001,'The following error has occured: ' || sqlerrm);
   END;

任何帮助将不胜感激。

【问题讨论】:

  • 您使用的是哪个版本的 Oracle?我认为 11.2.0.2 是第一个支持邮件 TLS 的版本。
  • 是 PL/SQL 版本 11.2.0.1.0 - 生产
  • 那么我想你会很难让它工作。您的邮件服务器似乎需要 TLS(安全)通信,而数据库包直到 11.2.0.2 才支持。如果您搜索 TLS,还有更多信息 here
  • 在我的 oracle 版本中有没有更好的方法来做到这一点?
  • 如果您可以更改邮件服务器端的设置,您可以始终禁用对 Oracle 服务器 IP 号的 TLS 要求,直到 Oracle 更新时您很可能再次打开它。将 TLS 支持添加到 utl_mail 似乎并不可行。

标签: sql oracle email oracle11g


【解决方案1】:

您可能遇到访问控制列表问题。代码报告的错误是什么?
您还可以提供此查询的输出(您需要提供用户参数):
SELECT host, lower_port, upper_port, acl, DECODE( DBMS_NETWORK_ACL_ADMIN.CHECK_PRIVILEGE_ACLID(aclid, '&USER', 'connect'), 1, 'GRANTED', 0, 'DENIED', null) privilege FROM dba_network_acls ;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-15
    • 1970-01-01
    • 1970-01-01
    • 2021-05-22
    • 2014-12-15
    相关资源
    最近更新 更多