簡體   English   中英

如何使用Perl通過Sendmail將同一封電子郵件發送給多個收件人?

[英]How do you send the same email to multiple recipients with Sendmail using Perl?

我有以下PERL腳本,但似乎無法一次發送到多個電子郵件中。 如何發送至多封電子郵件,最好是作為單獨的電子郵件發送?

 open(SENDMAIL, "|/usr/lib/sendmail -oi -t") || die "Cannot open sendmail output"; print SENDMAIL <<"ENDENDEND"; From: <test\\@test.com> To: <test1\\@test1.com> Subject: report spam MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="DeathToSpamDeathToSpamDeathToSpam" This is a multi-part message in MIME format. --DeathToSpamDeathToSpamDeathToSpam Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit --DeathToSpamDeathToSpamDeathToSpam Content-Type: message/rfc822 Content-Disposition: attachment ENDENDEND while (<STDIN>) { print SENDMAIL ; } print SENDMAIL <<"ENDENDEND"; --DeathToSpamDeathToSpamDeathToSpam-- ENDENDEND close (SENDMAIL); 

謝謝!

通過執行sendmail程序來發送郵件一次只能發送一封郵件,因為sendmail程序就是這樣工作的:郵件通過管道傳送到sendmail中,並且郵件在EOF上完成。 這意味着您需要為下一封郵件再次調用sendmail。

另一種方法是不執行sendmail進行傳遞,而是使用Net :: SMTP或類似模塊直接與SMTP服務器通信-這樣,您還可以在單​​個SMTP連接中發送多個郵件。

編輯:正如Andrzej A.在評論中指出的那樣,使用-bs選項使一次呼叫sendmail成為-bs因此它可以作為最小的SMTP服務器使用,期望與stdin和stdout通信。 Postfix的sendmail包裝器中似乎也實現了此功能,它可能比原始sendmail的使用率更高。
但是,我不知道有任何模塊支持此操作模式,因此您需要自己設置與IPC :: Open2的雙向通信,然后講出SMTP協議,包括所有奇怪的郵件處理和轉義規則。 使用Net :: SMTP僅將SMTP與本地主機上的郵件服務器進行SMTP通訊就容易得多,該服務器已經在乎所有特定於協議的內容,並允許您僅發送郵件。

在這種情況下,似乎可以添加“ Cc:”。

由於某些原因,使用“密件抄送:”或添加其他“收件人:”電子郵件不起作用,但“抄送:”似乎可以。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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