5

localhost php から電子メールを送信しようとしていますが、問題は電子メールで何も受信していないことです。何を設定すればよいですか?

これが私のコードです

$to="someone@gmail.com";
$name="jason";
$subject="test message";
$header="From: $name";
$message="blah blah blah";
$sentmail=mail($to,$subject,$message,$header);

echo $sentmail ? "email send" : "email send fail"?

結果は「メール送信」だったので

4

6 に答える 6

4

localhost からメールを送信しない理由は 2 つあります。

  1. ローカル環境にメール サーバーがセットアップされていない
  2. 電子メールの送信に SMTP サービスを使用していません。

したがって、メールサーバーを構成する必要がありますが、これは便利な解決策ではないと思います.

SMTP サービスを使用することをお勧めします。これを行うには、PHPMailerを使用するとよいでしょう。

PHPMailer クラスを使用した例を次に示します。

$mail = new PHPMailer();
$mail->IsSMTP();
$mail->CharSet = 'UTF-8';

$mail->Host       = "mail.example.com"; // SMTP server example
$mail->SMTPDebug  = 0;                     // enables SMTP debug information (for testing)
$mail->SMTPAuth   = true;                  // enable SMTP authentication
$mail->Port       = 25;                    // set the SMTP port for the GMAIL server
$mail->Username   = "username"; // SMTP account username example
$mail->Password   = "password"; 

このクラスは、 PHPの代わりとして、あらゆる種類の電子メールに使用できます: mail() 。

于 2013-07-25T04:55:42.070 に答える
2

mail 関数は、メールの配信が正常に受け入れられた場合は TRUE を返し、それ以外の場合は FALSE を返します。

メール機能は、メールが受信トレイに届いたかどうかを確認しません

http://php.net/manual/en/function.mail.php

メールが届いたかどうかは確認できませんが、受信者がメールを開封したかどうかはトラッキング ピクセルで確認できます https://support.google.com/dfp_premium/answer/1347585?hl=ja

于 2013-07-25T04:39:38.460 に答える
0

メールを送信するには、ローカル マシンにメール サーバーを統合する必要があります。すべてのパラメータが正しい場合、php メール関数は true を返します。配信ステータスはチェックされません。

これを読んでください、http: //www.zenddeveloper.com/how-to-send-emails-from-localhost-apachephp-server/ およびhttp://roshanbh.com.np/2007/12/sending-e-mail- from-localhost-in-php-in-windows-environment.html

于 2013-07-25T04:45:08.843 に答える
0

ヘッダーに content-type が必要です。簡単にするために、単純な関数を作成してから呼び出すことができます。次に例を示します。

 function sendMail($to, $title, $url, $from, $username, $password) {
    $headers  = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
    $headers .= 'From: '.$title.' <'.$from.'>' . "\r\n";
    $subject = 'Welcome to '.$title;
    $message = 'Thank you for joining <strong>'.$title.'</strong><br /><br />Your username: <strong>'.$username.'</strong><br />Your Password: <strong>'.$password.'</strong><br /><br />You can log-in at: <a href="'.$url.'" target="_blank">'.$title.'</a>';
    return @mail($to, $subject, $message, $headers);
}
于 2013-07-25T05:18:12.403 に答える
0

デフォルトでは、PHP の関数はLinux 上のプログラムにmail()メールを配信します。sendmail

sendmail が機能するには、MTA が適切に構成され、機能している必要があります。たとえば、postfix は構成が比較的簡単な MTA です。

MTA を構成する場合、インターネット上のメール サーバーとしてメールを直接送信するか、メールを別のサーバーに中継するように構成できます。

メールを直接配信するように独自の MTA を設定するのは、気楽な人向けではありません。電子メールの送信は複雑になり、gmail や yahoo などの主要なメール サーバーでメールを受信できるようにするには、多くの作業が必要です。

ISP が送信メール サーバーを提供し、メールを中継してくれる場合は、代わりにすべてのメールをそのサーバー経由で中継するように postfix を設定して、設定の手間を省くことができます。postfix を使用する場合は、postfix 構成の null クライアントでの Postfixの例のように設定するだけです。

メール サーバーをどのように構成するかに関係なく、主に覚えておくべきことは、送信ネットワークで受信メールをリレーするように設定しないことです (つまり、オープン リレーとして設定します)。null メーラーの設定例では、行inet_interfaces = loopback-onlyがこれを実現しています。

postfix などを MTA として設定する代わりに、PHP 独自のビルトイン SMTP サポートを使用することもできます。これは、基本的に、メールをリレーに転送するだけの MTA として PHP 自体を使用していることを意味します。

postfix のような専用の MTA を使用する利点は、信頼性です。外部メールリレーへの到達に一時的な問題がある場合、Postfix は電子メールをキューに入れることができます。また、メールがキューに入れられるとすぐに戻るので、PHP メール関数はより高速に実行され、メールが外部メール リレーに配信されるまで待つ必要がなくなります。

于 2013-07-25T05:30:09.183 に答える
0

localhost でメールを送信するには、メール サーバーが必要です。PHP を確認してください: send mail in localhost

于 2013-07-25T05:02:34.923 に答える