2012-01-13 10 views
3

私はPHPでユーザーが招待メールを送信できるウェブサイトを構築しています。彼らは一度に複数を送ることができます。PHPで多数の電子メールを安全に送信する

私は、PHPのmail()関数を使用すると、簡単に迷惑メールとマークされる可能性があるため、悪い選択だと言われます。電子メールがスパムとしてマークされないようにこのスクリプトを設定できる方法はありますか?

私はかなりの読書をしました。今日読んだことから、メールがスパムとしてマークされているかどうかに影響するいくつかの要因が考えられます。電子メールが実際に発信された場所と比較して送信されたと言うドメイン。ヘッダーの書式設定。送信された電子メールの頻度。

私たちが使用しているメールアドレスは、Gmail Appsにあります。だから、送信したメールがスパムを「見せ」ないとGmailから送信した場合、送信されるメールの頻度を制限することができます(10分ごとに10回)。問題なく?

EDIT

これは、ニュースレターのためではありません。招待メールのスパムとしてマークされる心配も必要ですか?

+0

*任意の一括メールのスパムとしてマークされることに心配する必要があります。あなたの意図は重要ではありません。 – meagar

+0

ええ、だれかが500人の友人を招くことはまずありません。 – Martin

答えて

2

あなたの結論は正しいが、あなたの推論は正しくはない。 PHPのメール機能では、他のものと同じ電子メールを送信するため、電子メールがスパムとしてマークされることはありません。

phpのメール機能の問題は、非常に低レベルなので、正しく使用する方法がわからず、電子メールインジェクションの脆弱性が残っていると、サイトを使ってスパムメッセージを送信する可能性があります。これにより、サーバがスパイスのソースとしてブラックリストに登録される可能性があります。あなたの余分なヘッダーフィールド(From:など)から\ nと\ rを取り除く限り、安全でなければなりません。

もう1つの問題は、メールに独自の有効なヘッダーを追加する必要があることです。

さらにもう1つの問題は、mail()を呼び出すたびにsmtpサーバーと接続したり切断したりすることですが、1回の通話で複数のメールを送信できる方法があると思います。これはおそらくrfc282を見て、それを行う方法を考え出すことになるので、複雑になります。

0

あなたはSMTPサーバーを使用する必要があり、その後、phpのための任意のPHPライブラリを使用して接続します。ここではあなたがあなたのドメインの有効なmx.recordを必要とするいくつかの有用なライブラリといくつかの例を持っているだけでなく、最初は

+0

私は良いと信頼できると聞いたので、私はphpmailerに向かっています。私のMXレコードはGmailであり、私は(phpmailer.worxware.comのツールを使って)ブラックリストに載っていないことを確認しており、DNSは良好です。だから私が心配しなければならないのは、送信された電子メールの頻度だけです。 – Martin

+1

実際には料金について心配する必要があります... Gmailには毎日の上限があります:http://support.google.com/a/bin/answer.py?hl=es&hlrm=en&answer=166852 –

+0

(ここのリンク先英語)http://support.google.com/a/bin/answer.py?hl=ja&hlrm=en&answer=166852 – thwd

0

... あなたの場合メール機能を使用すると、次のような有効なヘッダーを送信する必要があります。

function send_mail($from = FALSE,$to = FALSE, $msg = FALSE, $subject = FALSE, $html= TRUE){ 
    if($from && $to && $msg && $subject){ 
     if ($html){ 
      $header = 'MIME-Version: 1.0' . "\r\n"; 
      $header .= 'Content-type: text/html; charset=UTF-8' . "\r\n"; 
     } 
      $header .= 'From: '.$from. "\r\n";   
      $header .= 'Reply-To: '.$from. "\r\n"; 
      $header .= 'X-Mailer: PHP/' . phpversion(); 
      return mail ($to,$subject,$msg,$header); 
    } 
    return "fail"; 
} 
+0

MXレコードはGmailにあります。だから私が頻繁にメールを送信しないようにすることだけが残っていますか? – Martin

+0

gabrielのようにsmptが必要なgmailアカウントを使用している場合は、その周波数だけでなく、その内容も。私は彼らが私のサーバーから欲しいメールをユーザーに送ることはできません。 – Abadon

関連する問題