1

当我尝试使用 oracles UTL_SMTP 包向自己发送电子邮件时,我从 UTL_SMTP.MAIL 过程中收到传输超时错误 (ORA-29276),但仅当发件人变量使用landmail.com 域时。其他地址可以正常工作,例如 fake@email.com - 但无论@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;
4

1 回答 1

1

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

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

于 2013-04-10T09:20:23.353 回答