使用特定发件人域在UTL_SMTP中传输超时

时间:2013-04-10 07:43:32

标签: oracle email oracle11g smtp

当我尝试使用oracles UTL_SMTP程序包发送电子邮件时,我从UTL_SMTP.MAIL过程收到传输超时错误(ORA-29276),但仅当sender变量使用landmail.com域时才会收到。其他地址正常工作,例如fake@email.com - 但whatever@landmail.com没有。

我已经尝试重新输入它以确保没有奇怪的隐藏字符或者其他东西,但我完全不知所措,而且我的google-fu什么也没有回复。

我们最近从10g更新到11g可能是相关的。

超时之前的代码非常简单 - 它看起来如下,从未到达检查点C ......

PROCEDURE send_email(sender_email_chr IN VARCHAR2
                    ,other_stuff      IN WHATEVER)
IS
  connection_col UTL_SMTP.CONNECTION;
  reply_col      UTL_SMTP.REPLY;
BEGIN
  reply_col := UTL_SMTP.OPEN_CONNECTION('localhost',25,connection_col,60);

  DBMS_OUTPUT.PUT_LINE('Checkpoint A');

  reply_col := UTL_SMTP.HELO(connection_col,'localhost');

  DBMS_OUTPUT.PUT_LINE('Checkpoint B');

  UTL_SMTP.MAIL(connection_col, sender_email_chr);

  DBMS_OUTPUT.PUT_LINE('Checkpoint C');

  --rest of procedure snipped
END;

1 个答案:

答案 0 :(得分:1)

嗯,这很奇怪。我认为这与Oracle无关,而是与我们的本地SMTP(sendmail,postfix)配置(或DNS设置)无关。您的本地SMTP可能会在接收时尝试验证电子邮件。

尝试从Unix命令行执行相同操作。或直接使用“telnet localhost 25”,您将看到在SMTP接受电子邮件之前需要多长时间。