5

PHPを使用して大量のメールを送信する場合は、各サブスクライバーに電子メールを送信する(すべての電子メールアドレスでforループを実行する)か、BCCにすべてをコンマ区切りのリストに追加してのみ送信する方がよいでしょう。 1通のメール?

ありがとうございました。

4

4 に答える 4

4

SMTPサーバーでは、BCCフィールドのアドレス数が制限されている可能性があります(スパムを回避するため)。私は安全なルートを選び、個々の加入者に電子メールを送信します。これにより、必要に応じて各サブスクライバーの電子メールをカスタマイズすることもできます。

また、mail()は、バルクメールを送信するための最良の方法ではないことにも注意してください(呼び出されるたびにSMTPサーバーへの新しい接続を開くため)。PEAR::Mailを調べてみてください。

于 2011-02-14T16:00:18.193 に答える
1

ベストプラクティスは、受信者ごとに電子メールを送信することです。

Linuxメールサーバーの場合、大量のスループットを処理できるため、がらくたサーバーでない限り、ボリュームは問題になりません。

共有ウェブサーバーの場合、ホストは満足できない可能性があります。この場合、私はそれをチャンクに分割し、送信を広げます。それが専用の場合は、あなたがするようにしてください:)

于 2011-02-14T16:05:45.770 に答える
1

BCC受信者の1人に対して何らかの理由で送信プロセスが失敗した場合(たとえば、原因が解決できないドメインである可能性があります)、操作全体がキャンセルされます(99%の場合、望ましくない動作です)。

PHPループでメールを送信しますが、いずれかのメールが送信に失敗した場合でも、他のメールが送信されます。

于 2011-02-14T16:06:52.297 に答える
1

他の人が言うように、受信者ごとに1つのメールがより適しています。

ライブラリに汚い仕事をさせたい場合は、SwiftMailerhttp://swiftmailer.orgを試してみてください。

ドキュメントから直接例を次に示します。

require_once 'lib/swift_required.php';

//Create the Transport
$transport = Swift_SmtpTransport::newInstance('localhost', 25);

//Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);

//Create a message
$message = Swift_Message::newInstance('Wonderful Subject')
  ->setFrom(array('john@doe.com' => 'John Doe'))
  ->setTo(array('receiver@domain.org', 'other@domain.org' => 'A name'))
  ->setBody('Here is the message itself')
  ;

//Send the message
$numSent = $mailer->batchSend($message);

printf("Sent %d messages\n", $numSent);

/* Note that often that only the boolean equivalent of the
   return value is of concern (zero indicates FALSE)

if ($mailer->batchSend($message))
{
  echo "Sent\n";
}
else
{
  echo "Failed\n";
}

*/

また、優れたAntifloodプラグインがあります:http ://swiftmailer.org/docs/antiflood-plugin-howto

于 2011-02-14T16:43:30.373 に答える