我使用Net::SMTP自动发送电子邮件。我希望得到通知,如果有人使用电子邮件进入Outlook,我使用了这个:
$smtp->datasend("Disposition-Notification-To: to.me\@domain.com");
电子邮件已成功发送,但Outlook客户端未收到通知。
以下是代码片段:
$smtp = Net::SMTP->new("my mail host");
$smtp->mail("my\@adress.com);
$smtp->to("someuser@domain.com");
$smtp->data();
$smtp->datasend("Disposition-Notification-To:my\@adress.com");
$smtp->datasend("blah balh");
$smtp->datasend();
$smtp->quit;
答案 0 :(得分:1)
Outlook客户端代理可能未正确设置以侦听这些事件。你能通过其他方法发送邮件吗?您需要确定是听众还是发件人遇到问题。
如果您可以在Outlook中接收邮件,但不是从您的代码中接收邮件,则说明您的代码有问题。请在您的问题中加入更多上下文代码 - 例如如何构造$ smtp对象?您是否按照documentation进行了$smtp->dataend();
来电?
编辑(在您包含一些代码之后):该代码中存在拼写错误;你在脚本或模块的顶部使用use strict; use warnings;
吗?您可以通过其他方式向客户收到邮件吗?
Edit2:如果您只缺少通知,则应该深入了解Outlook文档,了解接收此类通知的标准。例如您可能需要提供有效的“日期:”标题。
答案 1 :(得分:1)
Net :: SMTP模块对于这类东西来说是相当低级的。您可以更轻松地使用更高级别的模块,例如Email::Sender。
答案 2 :(得分:0)
您需要在最后一个标题和邮件的实际正文之间加一个空行。
您似乎也在标题前缀后缺少空格。
我猜其中一个就是阻止Outlook正确解释标题。
试试这个:
$smtp->data();
$smtp->datasend("From: my\@address.com");
$smtp->datasend("To: my\@address.com");
$smtp->datasend("Subject: test mail");
$smtp->datasend("Disposition-Notification-To: my\@adress.com");
$stmp->datasend("\n");
$smtp->datasend("blah blah");
$smtp->dataend();
$smtp->quit;
答案 3 :(得分:0)
也许Outlook需要Return-Receipt-To标头(非标准,但你发送到Outlook,毕竟)。