[英]Why can't I send mail with Perl's Net::SMTP?
我使用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;
Outlook客戶端代理可能沒有正確設置以偵聽這些事件。 您可以通過其他方法發送郵件嗎? 您需要隔離出現問題的是偵聽器還是發送器。
如果您可以在Outlook中接收郵件,但不能從代碼中接收郵件,則表明您的代碼有問題。 請在您的問題中包含更多上下文代碼-例如,如何構造$ smtp對象? 您是否正在制作$smtp->dataend();
根據文檔致電嗎?
編輯(在包含一些代碼之后):該代碼中有一個錯字; 您是否use strict; use warnings;
use strict; use warnings;
在腳本或模塊的頂部? 您可以通過其他方式收到給客戶的郵件嗎?
Edit2: 如果您只缺少通知,則可能應該深入研究Outlook文檔,以了解接收此類通知的標准。 例如,您可能需要提供有效的“ Date:”標題。
Net :: SMTP模塊對於此類內容來說是非常低的級別。 使用更高級別的模塊,例如Email :: Sender,您會更輕松。
您需要在最后一個標頭和消息的實際正文之間包含空白行。
您似乎還缺少標題前綴后的空格。
我猜想其中之一是阻止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;
也許Outlook要求使用Return-Receipt-To標頭(非標准標頭,但畢竟您要發送到Outlook)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.