2009-06-29 11 views
1

私はPHPスクリプトを通してメールを送信できますか? 私はこのように気にいらをやろうとしています:PHPスクリプトを使ってメールを送信するには?

for($k=0;$k<=$x->length-1;$k++) 
{ 
    for($l=0;$l<=$j-1;$l++) 
    { 
     if($y->item($k)->nodeValue==$JobNoArr[$l] && $AcceptanceDateArr[$l]=='0000-00-00') 
     { 
      //echo $v->item($k)->nodeValue ; 
      $email = $v->item($k)->nodeValue . ","; 
      $to = $email; 
      $subject = "My subject"; 
      $txt = "Hello world!"; 
      $headers = "From: [email protected]" . "\r\n" . 
      "CC: [email protected]"; 
      mail($to,$subject,$txt,$headers); 
     } 
    } 
} 

この問題で私を助けてください。

ベスト Zeeshan

+1

コードがあります。どのように行動するのかとはどのように異なるのでしょうか?報告されるエラーは何ですか? – Quentin

+0

私は電子メールを送信しています。メールはgoogle idsに送られますが、基本的には仕事を探しているyahooや他のドメインには行きません。 –

+0

$ yはDOMXPath :: query()の結果と思われ、$ JobNoArr/$ AcceptanceDateArrは今のところデータベースクエリから来る可能性がありますか?その場合、ネストされたfor-loopsの "臭い"は不要です。データソースと特定のレコードを選択する方法(xmlとデータベースから)について少し詳しく説明できますか? – VolkerK

答えて

16

PHPのmail()機能を使用してメールを送信することを強くお勧めします。有効な電子メールを作成して配信することは、一見したように難しいです。エンコーディング、パーツのまとめ、検証&衛生、エラー報告(bool mail(...)以上)、認証のサポート、オンとオン... mail()機能はこれらの機能を提供していません。

SwiftMailerなどとお試しください。 PHPのmail()関数などを使用するように設定することができます。私は非常にそれをお勧めします。

+0

SwiftMailerはかなりいいです.Windows PHPのmail()関数が壊れているので、エンドユーザーはこれを使います。 – Kev

+2

Windows PHPのメール機能が壊れていません。私はいつも使っています。 –

+3

notepad.exeも壊れていませんが、C#開発のための私の最初の選択ではありません。 – VolkerK

3

最初

echo $result = mail($to,$subject,$txt,$headers); 

を行うと、uは何を得るのエラーを参照してください?

私はあなたがTHS行の末尾にカンマた理由などphpmailerの

クラスを使用することをお勧めしますか?

$email = $v->item($k)->nodeValue . ","; 

毎回1メールで送信します。

6

あなたは一度に多くのことをしようとしています。一度に1歩ずつ試してみてください。最初に簡単な電子メールを送信し、ハードコードされたパラメータを使用してそれを取得し、ネストされたループのコンテキスト内でトラブルシューティングを行います。

+0

私の目の前で-fがあるこの メール($ TOUSER、$件名、$本体、$ヘッダ、「[email protected]」) のように見えますコードはGoogleのようないくつかのドメインで動作しますが、それらのすべてではありません。 –

+3

あなたはスパムフィルターなどを打つかもしれません。 – Sampson

5

問題はメール機能が非常に信頼できない、特に大量のメールを送信する場合です。私はphpmailerのライブラリに探して推薦する

は(ダイレクトSMTP接続を使用しています):一部のメールが通過し、一部ではない場合、私はsendmailのを見てしまうので http://phpmailer.codeworxtech.com/

2

のphp-のメール機能は、MTAとしてsendmailのを使用していますエラーを記録します。

+0

実際にはありません。 PHPはsendmail APIを使用します。 Unix/Linux上の自己尊重のMTAは、ラッパーを使ってsendmailをエミュレートできます。 –

+1

正しい。それでも、私の指摘は、PHPのメール機能を介して送信されたメールは、システムのメーラーを経由して出てくることです。私にとって、これはエラーを探す最初の場所です。 –

1

共有Webホスト、または自宅のコンピュータ上にある場合は、サーバーのメインドメインは

server.your-isp-or-host.com 

スパムフィルタのようなものは、その後、電子メールは

からであると主張するでしょうになります
yourdomain.com 

実際に最初のアドレスから来た場合は、それを削除します。

これは、エラーのヒットアンドミスの性質を説明します。

専用サーバー、または適切に設定されたDNSを使用して自宅のコンピュータを指す静的IPの場合、上記は適用されません。

1

それがその後、Gmailにメールを送る動作するかどうか、それはあまりにも

あなたは問題が電子メールの送信をされていませんが、多分ヤフーがマーキングされ、それらをスパムとして、あるいはそれらをブロックすることがありますヤフーにメールを送信正常に動作する必要がありますゲートウェイで

あなたが電子メールアドレスの最後にコンマを追加していることがわかりました。そのポイントは何ですか?

その他の問題があるかもしれません。あなたのループは正しいですか?あなたが期待したすべてのケースをカバーしていますか?

何千通ものメールを送信していますか?電子メールをキューに入れているレートを処理できますか?

あなたのスクリプトはmax_execution時間に達して停止していますか?

+0

上記のどれも..私のスクリプトはGmailや他のメールサーバーではうまくいきますが、yahooではうまくいきません。私は何千ものメールを送信していませんが、数百もあります。 –

関連する問題