3

私はphpを初めて使用し、最近メール機能を使用しようとしましたが、機能しません。これが私のコードです:

<?php

// Pick up the form data and assign it to variables
$name = $_POST['name'];
$email = $_POST['email'];
$topic = $_POST['topic'];
$comments = $_POST['comments'];

// Build the email (replace the address in the $to section with your own)

$to = 'tishsny@gmail.com';
$subject = "New message: $topic";
$message = "$name said: $comments";
$headers = "From: $email";

// Send the mail using PHPs mail() function
if( mail($to, $subject, $message, $headers) ) header("Location:../forms/success.html");
else header( "Location:../forms/failure.html" );
?>

sendmail のパスを php.ini ファイルに追加しましたが、まだ機能していません。メール関数は常に true を返しますが、メールが届きません。mail.log には、一連のタイムアウトが表示されます。出力の一部を次に示します。

postfix/qmgr[3523]: BB800B124A: from=<_www@Leticias-MacBook-Pro.local>, size=382, nrcpt=1 (queue active)
postfix/qmgr[3523]: CB34EB0E9F: from=<_www@Leticias-MacBook-Pro.local>, size=405, nrcpt=1 (queue active)
postfix/qmgr[3523]: D6C18B0D7B: from=<_www@Leticias-MacBook-Pro.local>, size=394, nrcpt=1 (queue active)
postfix/smtp[3527]: connect to gmail-smtp-in.l.google.com[2607:f8b0:400e:c01::1b]:25: No route to host
postfix/smtp[3533]: connect to gmail-smtp-in.l.google.com[2607:f8b0:400e:c01::1b]:25: No route to host
postfix/pickup[3522]: 8A9EEB1823: uid=70 from=<_www>
postfix/cleanup[3524]: 8A9EEB1823: message-id=<20130321193156.8A9EEB1823@Leticias-MacBook-Pro.local>
postfix/qmgr[3523]: 8A9EEB1823: from=<_www@Leticias-MacBook-Pro.local>, size=392, nrcpt=1 (queue active)
postfix/smtp[3526]: connect to mx3.hotmail.com[65.55.37.72]:25: Operation timed out
postfix/smtp[3531]: connect to gmail-smtp-in.l.google.com[74.125.141.27]:25: Operation timed out
postfix/smtp[3531]: connect to gmail-smtp-in.l.google.com[2607:f8b0:400e:c01::1b]:25: No route to host
postfix/smtp[3531]: connect to alt1.gmail-smtp-in.l.google.com[2607:f8b0:400e:c02::1b]:25: No route to host
4

3 に答える 3

0

ISP および/またはネットワーク/ホストのファイアウォールが、アウトバウンド SMTP 接続を許可していないようです。Operation Timed OutおよびNo route to hostに関するこれらのエラーが表示される理由はありません。

于 2013-03-21T20:29:45.097 に答える
0

考えられる理由は次のとおりです。

  1. ISP (Verizon、AT&T、Comcast、または学校など) が送信ポートをブロックしました (スパムやサイバー攻撃を防ぐため)。

これが最も可能性の高いケースです。基本的に、ホーム ネットワークでメール「ホスト」としてメールを送信することはできません。以前は gmail やその他の SMTP サーバー経由でリレー サーバーを設定できましたが、最近は ISP が賢くなり、リレー リクエストもブロックします (はい、送信または受信したすべてのデータを読み取ります)。

だから私のアドバイス:それがあなたがやりたいことなら、安全なVPNにお金を払ってください.

  1. あなたはホーム ネットワークにいませんが、リレー サーバー/ルーターがアウトバウンド リクエストをブロックしています。ファイアウォールでポートを転送する方法を見つける必要があります。ルーターまたはリレー サーバーのオペレーティング システム/ファームウェアによっては、ポートを転送する方法が何百万通りもある可能性があります。または、ファイアウォールを完全にオフにすることもできます。

  2. それは完全にあなたの手に負えません。あなたの IP はスパムボットとしてフラグが立てられています (誰かがあなたの IP を盗み、サイバー攻撃に使用した可能性があります)。IP を変更する必要があります (または安全な VPN の料金を支払う必要があります)。

于 2015-03-13T07:45:37.360 に答える
0

php.ini smtp セクションを投稿できますか?

GMail を使用している場合 (あなたのように見えます...)、SSL/TLS を使用する必要がありますが、PHP が SMTP をネイティブにサポートしているかどうかはわかりません。Sendmail でフォワーダーを使用してローカルで暗号化せずに送信し、Sendmail で TLS を使用して Gmail に転送することができます。

PHPMailer などのサードパーティ ソリューションの使用を検討することをお勧めします。Gmail の SSL/TLS をサポートしています。次の例をご覧ください。

http://phpmailer.worxware.com/index.php?pg=examplebgmail

PHPMailer は次の場所からダウンロードできます。

http://sourceforge.net/projects/phpmailer/

PHPMailer の別のチュートリアルは次のとおりです。

http://phpmailer.worxware.com/index.php?pg=tutorial#2

編集: マークが言ったように、ISP が送信ポート 25 をブロックしている可能性があります。Gmail はポート 465 で SMTP もサポートしています (ただし、TLS が必要です)。

于 2013-03-21T20:25:40.620 に答える