簡體   English   中英

為什么我不能使用Perl的Net :: SMTP發送郵件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM