簡體   English   中英

用PHPMailer發送新聞通訊的最佳方法是什么?

[英]What's the best way to send a newsletter with PHPMailer?

我正在嘗試通過PHPMailer發送時事通訊,同時保護客戶的隱私。

首先,我使用mail->addAddress('customerEmail']);設置接收器配置mail->addAddress('customerEmail']); 但是我發現以這種方式發送郵件時,每個接收者都可以看到其他客戶的訂戶的電子郵件地址。 我將addAddress更改為mail->addBCC('customerEmail']); 這樣它就不會顯示每個電子郵件地址(實際上,現在甚至都沒有顯示要發送給其的客戶的收件人電子郵件地址),但是如果有人想回復該電子郵件,就可以采用這種方式,他們的回復也將發送給其他訂閱者...

面對這個問題的最佳選擇是什么?

電子郵件服務器不使用郵件頭發送郵件。 當您發送電子郵件時,您的電子郵件客戶端會保持對話*,如下所示:

EHLO example.com
MAIL FROM: mail@example.com
RCPT TO: info@example.net, customers@example.org, john@example.com
DATA
From: Me <webmaster@example.com>
To: Customers <whatever@example.com>
Subject: Important info
Dear Blah,

Blah blah.

Regards,
.

(*)這一次對話,因為它包括服務器對每個命令的響應,但是我省略了該部分。

真正重要的是DATA塊之前的特定命令中提供的信息。 當然,大多數郵件工具都會創建標頭以匹配處理指令中的地址,但是此類標頭僅用於提供信息,它們不必完全相同。 實際上,密件抄送實際上就是這樣工作的:您指示郵件發件人將電子郵件發送到該地址,但在標頭中將其省略。

所以:

  • 您可以快速完成(密件抄送和一條消息全部發送)
  • 您可以做得很好(收件人和每個收件人一封郵件)

如果您征求我的意見,總是很高興知道將新聞通訊發送到的確切電子郵件地址-我們中的許多人都有多個地址。 如果您要提供自動退訂鏈接,則實際上必須發送自定義消息。

據我所知,管理新聞通訊的最佳方法是將電子郵件分別發送給每個客戶,盡管這意味着發送時間會略有增加。 這樣,您可以提供自動取消訂閱鏈接和其他您無法提供的功能。

為了實現這一點,我做了一個簡單的循環,從我的數據庫中獲取地址:

$sql = "SELECT `email` FROM `emails`";
$statement = $db->prepare($sql);
$statement->execute();

while ($fila = $statement->fetch()) {
    if(!empty($fila['email'])){
        $mail->addAddress($fila['email']);
        $success = $mail->Send();
        $mail->clearAllRecipients(); //Don't forget this!
    }
}

方法clearAllRecipients(); 這是非常重要的,因為它將清除最后一圈收件人,以便電子郵件的“收件人”部分不會顯示您的所有通訊收件人。

暫無
暫無

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

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