2011-08-12 4 views
6

この問題に関する多くの質問と回答はStackOverflowで読んでいますが、私が読んだもののどれもが私の質問に具体的に答えていません。多数の人にメールを送信する

私はメーリングリストを持っていません。大量のメールを受信したい場合は、ボックスをチェックします。アカウントは電子メールを使用してアクティブ化されるため、間違った電子メールはありません。だからバウンスチェックはありません。しかし、私は既にPHPMailerを使用しています(ヘッダーなどの問題はありません)。メールの「To」フィールドにすべてのアドレスを追加します。これは誰もが電子メールソースを読んだり(電子メールクライアントで「全員に返信する」ことによって)誰もがすべての電子メールを見ることができることを意味します。質問は次のとおりです:

1)私はそれぞれのメールを個別に送信するのか、またはすべてのアドレスを 'bcc'フィールドに入れるべきですか? 2)これは、メールサーバがメールを「スパム」とマークすることはありません。もしそうなら、これをさらに防ぐ方法があるでしょうか(いくつかのホワイトリストにアドレスを追加したり、ドメインキーやUnixのcronジョブを設定することを除けば)?

ありがとうございます!

ここで言及されているすべてのことは、フォームを使用して「購読」してから(PHPListのような)自分のメールアドレスを確認する必要があります。しかし、私はすでに人々の登録時に確認を求めるので、何度も何度も何度もそれを聞いても意味がありません。私の既存のコードはデータベースをチェックします。 "receive-movie-mail"ビットが1に設定されている場合(これらはSQLクエリを使用して収集されます)、新しいムービーがデータベースに追加されたときに電子メールが送信されます。だからあなたがこれをまだメーリングリストと信じているのであれば(私の考えはそうだと思いますが、私の定義は既存のソフトウェアの機能を無視しているかもしれません)、1) PHPコード(「映画がデータベースにアップロードされるたびにメールを受け取る」チェックボックスにチェックが入っていれば、自分のフォーム処理コードで購読します)、2)PHPで人々にメールを送る方法IEは、「Add Movie」フォームが提出されたときに、私が購読している人々に電子メールを送るsend_mail_to_list($ content)のような機能です。そのようなメーリングリスト管理ソフトウェアはありますか?

+1

申し訳ありませんが、これは私にとってメーリングリストのようなものです。 – John

+0

一部のスパムフィルタは、宛先:フィールドに受信者のアドレスが含まれていない電子メールのスパムスコアを上げます(BCCの場合)。 BCCを使用していない以外は、これについてはあまりできません。 –

+0

ここに役立つサービスがたくさんあります... Googleグループ? mailchimp?シルバーポップ?あなたがスパマーでない限り。 –

答えて

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)個々のメールを個別に送信するか、すべてのアドレスを 「bcc」フィールドに入力する必要がありますか?

確実に個別に。 Bccはあなたの電子メールを迷惑メールとみなします。

2)は、この一部のメールサーバは、「スパム」、それがどのようによく構造なし 問題として電子メールをマークすることはありませんか?もしそうなら、これを避けるために、さらに のアドレスを追加する方法や、 ドメインキーやUnixのcronジョブを設定する方法はありますか?

SPFレコードを使用すると役立ちます。サーバとの逆方向DNSがブラックリストに登録されていないことを確認してください。特に、共有ホスティングの場合はそうしてください。

0

私はこれがデフォルトではPHPでハイパースレッディングがないことを知っているので、私はこれをPHPで行っていません。

Rubyや.NETのような他の言語/フレームワークでは、個々のメールをハイパー/マルチスレッドで一緒に送信します。これは実行時に実行される点を除いて、あなたが知っている* nix cron jobsのアプローチに似ています。送信している5つのアドレスごとに1つのスレッドを作成してから、すべてのスレッドが順に5つのメールを送り出します。

この方法でも、ボトルネックはアプリケーションから使用しているメールサーバーに移動することに注意してください。だから、あなたがApacheで出荷されている組み込みのpostgreを使っているとしましょう。各スレッドは負荷を追加するので、大量のボリュームは扱えません。

もちろん、MailChimpを使うことができれば、このすべてを一緒に避けるべきです!

0

は、各ユーザーに個別のメールを送信し、それらのみに宛て。

DKIMSPFを設定するか、少なくとも適切なSPFレコードを作成してください。 DKIMはメールを実際に送信しているメールサーバをいくつか設定する必要がありますが、特に大規模なメールプロバイダにとっては配信性に大きく貢献します。

0

他の人の隣には、配送料金を制限できるメールのキューを維持しています。一度に何千もの電子メールを自分のドメインに配信しようとすると、一部の電子メールプロバイダは好きではありません。

これはいくつかのMTAで可能になるはずですが、これを実行するのに十分柔軟なものは見ていません。私がこれに使用したのは、PearクラスMail_Queue + cronジョブでした。

関連する問題