PHP のメールを使用していくつかのスクリプトをテストする必要があります。これを最終的にローカルで機能させたいと思います。私はMAMPを使用しています。サードパーティのソフトウェアをインストールせずにこれを行う方法はありますか?
私はこれについていくつかの検索を行いましたが、魅力的なものは見つかりませんでした。
ありがとう
特にメールの送信をテストしようとしていますか、それとも残りのコードをテストしていますか?
前者の場合、次のように構成する必要があります。
SMTP = smtp.example.com
smtp_port = 25
sendmail_from = me@example.com
php.ini ファイル (phpinfo() で場所を確認) で、適切な値に置き換えます。
メール送信プロセス以外のコードをテストするには、2 つのインクルード ファイルを作成することをお勧めします。
<?php
// for live usage/mail send testing
function ori_mail()
{
return call_user_func_array('mail',func_get_args());
}
および他のコードをテストするため
function ori_mail()
{
file_put_contents('debug_mail_scripts.txt'
,date('r') . ':' . var_export(func_get_args(), true)
, FILE_APPEND);
}
そして、関連するものをテストに含めます。
SMTP サーバーとの統合のテスト、およびコードの配信可能性のテストはかなり複雑ですが、PHP のテストとは別に行う必要があることに注意してください。
C.
私がしていることは、phpmailerクラス(警告:恐ろしいウェブサイト!)を使用して、アカウントを持っている実際のSMTPサーバーを指定することです。したがって、mail()は使用しませんが、smtpを使用します。このように、ローカルサーバーにいるのか実サーバーにいるのかは関係ありません。ただし、そのSMTPメールサーバーへのSMTPアクセスが機能している必要があります。実際に本番メールサーバー(アプリケーションが稼働するときに使用されるサーバー)を使用するのが最善です。このようにして、メールサーバーが返信先フィールドなどを台無しにしていることに気付いたときに、ぎりぎりの驚きはありません。
数か月前、ローカル マシンで電子メール通知の自動送信を含むアプリケーションを開発しているときに、同様の問題が発生しました。Sendmail を OSX にインストールするのにかなりの時間を費やし、最終的には正しく動作させることができませんでした..
私のアプローチは、php のネイティブ メール機能の一時的な代替としてPEAR メールを使用することでした。基本的に、 send-mailという関数を定義でき(以下のコードを参照)、アプリをサーバーにデプロイすると、その関数の呼び出しを mail() の呼び出しに置き換えることができます。
<?php
require_once 'Mail.php';
function send_mail($recipient,$subject,$body){
$host = "yourmailserver.net";
$username = "you@yourmailserver.net";
$password = "password";
$port = 25;
$headers = array ('From' => "Your agent <noreply@yoursite.net>",
'To' => $recipient,
'Subject' => $subject
);
$smtp = Mail::factory(
'smtp',
array ('host' => $host,
'auth' => true,
'port' => $port,
'username' => $username,
'password' => $password)
);
$smtp->send($recipient, $headers, $body);
}
?>
gmail アカウントを使用して、gmail の SMTP サーバー経由でテスト メールを送信できます。
これを行うには、phpmailer クラス ( http://phpmailer.worxware.com/ ) を使用できます。このクラスをダウンロードすると、examples/ フォルダに基本的な gmail の例があります。