UTL_SMTP 包问题(从 ORACLE 发送电子邮件)

Posted

技术标签:

【中文标题】UTL_SMTP 包问题(从 ORACLE 发送电子邮件)【英文标题】:Problem with UTL_SMTP package (sending emails from ORACLE) 【发布时间】:2010-09-27 15:45:08 【问题描述】:

一切正常,没有对我们的邮件包进行任何更改。但我只是注意到我们的 unsent_emails 表已填满,当我尝试手动发送未发送的电子邮件(在 user_jobs 中设置的定期作业)时,我收到以下错误;

主邮件包错误:ORA-29279:SMTP 永久错误:501 5.5.2 MAIL FROM 语法错误 ORA-06512:在“SYS.UTL_SMTP”第 20 行 ORA-06512:在“SYS.UTL_SMTP”,第 98 行 ORA-06512:在“SYS.UTL_SMTP”,第 221 行 ORA-06512:在“TRS.MAILPKG”第 63 行

知道为什么会发生这种情况吗?

【问题讨论】:

消息表明 FROM 行的格式不正确。您能否发布一些消息的示例,尤其是 FROM 行? 发件人行主要是这种形式的单个电子邮件地址; “email_address;”(在 ; 之后有一个空格 【参考方案1】:

是否所有未发送的电子邮件都会发送给多个收件人?

这是 orafaq 的链接,表明它可能与向多个收件人发送电子邮件并使用分号 - ';' 有关而不是逗号 - ',' 分隔符。

http://www.orafaq.com/forum/t/119863/2/

如果是这种情况,请尝试使用逗号作为多个收件人的分隔符

【讨论】:

是的,我将所有的 ';' 转换为 ',',但它仍然没有工作.. 感谢您的建议!【参考方案2】:

问题是因为我的“发件人”电子邮件(感谢 Bob Jarvis 对其进行了调查).. 它看起来不像电子邮件地址(以前可以使用,但我认为电子邮件服务器发生了一些变化让它现在不起作用)

【讨论】:

【参考方案3】:

使用包“utl_mail”遇到了同样的问题: 它发送“MAIL FROM:lzsiga@someserver.hu” 但它应该是'MAIL FROM:'

无论我指定什么发件人,它都不会改变这一点;另一方面,无论我指定什么,RCPT TO 总是正确地用尖括号括起来。

使用 'utl_smtp' 在 UTL_SMTP.MAIL 和 UTL_SMTP.RCPT 的参数周围添加尖括号就足够了。

Oracle 确实有一些示例可能有助于使用 utl_stml 实现类似 utl_mail.send 的函数,所以我建议使用它。

【讨论】:

以上是关于UTL_SMTP 包问题(从 ORACLE 发送电子邮件)的主要内容,如果未能解决你的问题,请参考以下文章

utl_smtp 中的邮件正文大小限制

Oracle PL/SQL 实现发送电子邮件功能(UTL_MAIL)

来自 Oracle pl/sql 的电子邮件中的特殊字符

如何将消息发送给多个收件人

Oracle 表格 6i ORA-01008

电报上的 inlineKeyboard 用于发送到频道