1

私はすべての電子メールがmail()関数を介して送信されるphpプロジェクトに取り組んでいます。ローカルホストでmail()関数が失敗するため、これらの電子メールを準備してテストすることは非常に問題です。送信する前に電子メールを印刷するようにコードを常に書き直し、確認して、サーバー上で正常に送信されると想定する必要があります。

そのような状況をどうにかして管理する方法はありますか?コードを少し変更することなく、または少し変更を加えて、メッセージをハードディスクに保存したり、実際の受信者ではなく特定の1つの電子メールアドレスにのみ送信したりする方法があれば、とてもうれしく思います。いくつかの便利なソフトウェアやアドバイスはとてもありがたいです。

ありがとう!

PSローカルホストでは、WAMPパッケージをWebサーバーとして使用しています。

4

4 に答える 4

9

http://www.toolheap.com/test-mail-server-tool/

Windows用のテストメールサーバーツールは素晴らしいです!ローカルホストでメールを送信するたびに、そのメールがお気に入りのメールリーダー(Outlook、ポストボックスなど)にポップアップ表示されます。

私はこれをWAMPですべてのWebアプリをテストするためだけに使用しています!

サーバーを変更する必要はありません。ダウンロードしてインストールするだけで、メールを送信して実際の動作を確認できます。

ああ-そしてそれは無料です!

于 2012-05-28T08:30:58.553 に答える
7

これがこの問題を回避するために私が見つけた解決策です。1. sendmail.phpファイルをwampディレクトリのどこかに作成します(例:d:\ wamp \ apps \ sendmail.php)。ソースは次のとおりです。

/* Path where emails will be stored */
define('DST', 'd:/wamp/tmp/sendmail/');
/* Extract the message from the stdin */
$message = '';
while(($line = fgets(STDIN)) !== false) {
    $message .= $line;
}
/* Save message to file */
file_put_contents(DST.date('Y-m-d_H-i-s_').md5($message).'.eml', $message);

2. php.iniのsendmail_pathパラメーターのコメントを解除し、次のように編集します。

sendmail_path = "D:\wamp\bin\php\php5.3.5\php.exe D:\wamp\apps\sendmail.php"

mail()関数を介して送信されるすべてのメッセージがキャプチャされ、指定されたディレクトリに保存されます。

于 2012-05-28T08:21:40.507 に答える
2

fakemailをインストールします。ローカルSMTPサーバーとして機能し、すべてのメールをフォルダーに保存します。

于 2012-05-23T08:13:22.223 に答える
2

mail()次のように関数をラップできます。

function my_send_mail(/*...*/) {
   if (is_localhost()) {
      // just save the mail to text.
   } else {
      // call mail() and send mail
   }
}

また、mail()を直接使用する代わりに、この関数を使用してください。

于 2012-05-23T08:16:36.177 に答える