2011-08-12 51 views
6

我已經閱讀了很多有關StackOverflow上這個問題的問題和解答,但是我沒有看到特別回答我的問題。發送郵件給大量的人

我不想有一個郵件列表。如果他們想要收到批量電子郵件,人們會打勾。沒有錯誤的電子郵件,因爲使用電子郵件激活帳戶。所以沒有反彈檢查。不過,我已經使用PHPMailer(所以沒有標題等問題),並將每個地址添加到電子郵件的'to'字段。這意味着每個人都可以查看所有電子郵件(通過閱讀電子郵件源或在他們的電子郵件客戶端中點擊「回覆所有人」),這是其他用戶不希望的。問題是:

1)我應該單獨發送每封電子郵件,還是將所有地址放在「密件抄送」字段中? 2)這不會使一些郵件服務器將郵件標記爲「垃圾郵件」,無論它的結構如何?如果是這樣,是否有辦法進一步防止這種情況(除了將地址添加到一些白名單或設置域密鑰或Unix cron作業)?

謝謝!

這裏提到的所有事情都需要用戶使用表單「訂閱」,然後確認他們的電子郵件地址(如PHPList中)。但是,當人們註冊時,我已經要求確認,所以無法一次又一次地詢問他們。我現有的代碼檢查數據庫;如果他們的「接收電影郵件」位設置爲1(這些是使用sql查詢收集的),則在將新電影添加到數據庫時向他們發送電子郵件。所以,如果你仍然認爲這是一個郵件列表(我認爲它是類似的,但也許我的定義不支持現有的軟件功能),我希望它有:1)用某種方式訂閱用戶到列表中PHP代碼(如果「我希望每次將電影上傳到數據庫時都收到一封電子郵件」複選框,則會在我的表單處理代碼中進行訂閱),以及2)使用PHP( IE是一個像send_mail_to_list($ content)這樣的函數,當提交「添加電影」表單時,它將電子郵件發送給我已訂閱的人員。有沒有這樣的郵件列表管理軟件?

+1

對不起,但這看起來像一個郵件列表非常像我。 – John

+0

某些垃圾郵件過濾器會增加收件人地址中不包含收件人地址的電子郵件的垃圾郵件分數(這是您的BCC:他們的情況)。除了不使用密件抄送之外,您無法對此做任何事情。 –

+0

有很多服務可以幫助你在這裏...谷歌組? mailchimp? silverpop?除非你是垃圾郵件發送者。 –

回答

3

你應該遍歷電子郵件列表和發送個人電子郵件爲每個地址:

$mail = new PHPMailer(); 
$mail->IsSMTP();   // set mailer to use SMTP 
$mail->Host = "mail.{domain_name}.com"; // specify main and backup server 
$mail->SMTPAuth = true;   // turn on SMTP authentication 
$mail->Username = "{username}"; // SMTP username 
$mail->Password = "{password}";  // SMTP password 

$emailFrom = '{email_address}'; 

$mail->From = $emailFrom; 
$mail->IsHTML(true); // set email format to HTML if needed 

$emailSubject = '{your subject}'; 
$emailBody = "Whatever content you are sending."; 

$mail->Subject = $emailSubject; 
$mail->Body = $emailBody; 

foreach($emails => $email) { 

    $emailTo = $email['email']; 
    $emailToName = $email['name']; 

// send an email to customer 
    $mail->AddAddress($emailTo, $emailToName); 

    if(!$mail->Send()) 
    { 
     echo 'failed'; 
    } 

    $mail->ClearAddresses(); 
} 
1

1)我應該單獨發送每封電子郵件,還是將所有地址都放在 「密件抄送」字段中?

絕對單獨。密件抄送將您的電子郵件視爲垃圾郵件。

2)這不會使一些郵件服務器將郵件標記爲「垃圾郵件」,沒有 重要嗎?如果是這樣,有沒有辦法進一步 防止這(除了添加地址的一些白名單或 設置域密鑰或Unix cron作業)?

使用SPF記錄可能會有幫助。確保服務器的反向DNS不被列入黑名單,特別是如果它是共享主機。

0

我還沒有做到這一點在PHP,因爲我知道,默認情況下,沒有在PHP超線程。

在其他語言/框架(如Ruby或.NET)中,您可以通過超級/多線程將單個電子郵件發送出去。這與你知道的* nix cron作業方法類似,不同的是它在運行時執行 - 你爲每發送5個地址創建一個線程,然後所有線程一個接一個地發送5封郵件。

請記住,即使使用這種方法,瓶頸也會從應用程序轉移到您正在使用的郵件服務器。所以我們可以說你使用的是內置的Apache的postgre - 它不會處理大量的數據,因爲每個線程都會增加負載。

當然,如果你可以使用MailChimp,你應該避免這一切!

0

發送每個用戶單獨的電子郵件,只解決了他們。

設置DKIMSPF,或者至少創建合適的SPF記錄。 DKIM需要郵件服務器的一些配置,它實際上是爲您發送郵件的,但可以極大地提高可發送性,特別是對於大型電子郵件提供商。

0

我在其他人旁邊的提示是:維護一個電子郵件隊列,您可以限制發送速率。有些電子郵件提供商不喜歡您嘗試一次將數千封電子郵件發送到其域名。

這應該是可能的一些MTA的..但我沒有看到一個足夠靈活,做到這一點。我使用的是Pear類Mail_Queue + cron作業。

相關問題