1

pear と php スクリプトを使用してメールを送信しようとしています。1日以上検索しましたが、まだ問題を見つけていません。このコードを Web サイトで実行しても、何も起こりません。すぐにロードして停止します。いくつかのエコー コマンドを実行したところ、コードが具体的に次の場所で停止することがわかりました。

$mail = $smtp->send($to, $headers, $body);

それだけです。他に何も起こりません。エラー入力などはありません。エコーがこの直前に発生し、その後にエコーが発生していないことがわかります。私は pear と pear メールをインストールしました。コマンドラインに「pear」と入力すると、どこにでもメニューが表示されるので、正しくインストールしたと思います。ルーターとファイアウォールを介してポート 465、tcp を開きました。私はWindows XPマシンを使用しています。望ましくないことが起こっているかどうかを確認するためのエラー ログがどこにあるのかわかりません。私のサーバーは、この Windows ボックスでホストされている apache 2.2 です。

 <?php

 require_once "Mail.php";

 $from = "user1@gmail.com";
 $to = "user2@yahoo.com";
 $subject = "Hi!";
 $body = "Hi,\n\nHow are you?";

 $server = "ssl://smtp.gmail.com";
 $username = "user1@gmail.com";
 $password = "pass";

 $headers = array (
   "From" => $from,
   "To" => $to,
   "Subject" => $subject);
 $smtp = Mail::factory("smtp",
   array ("host" => $server,
         "port" => 465,
         "auth" => true,
         "username" => $username,
         "password" => $password));
 $mail = $smtp->send($to, $headers, $body);
 if (PEAR::isError($mail)) {
   echo("<p>" . $mail->getMessage() . "</p>");
  } else {
   echo("<p>Message successfully sent!</p>");
  }
 ?>
4

2 に答える 2

1

Gota は、これらの問題が 10 時間の作業を要し、非常に単純であることが気に入っています。

そのため、PEAR を構成したときは正しく実行しました。パッケージ mail、mail_mime、および net_socket をインストールしました。net_smtp をインストールしようとしましたが、「パッケージ pear のリリースがありません...」というランダムなエラーが表示されましたパッケージがインストールされたことを意味し、それ以外に何もできないと思いました。このバグがどのように発生したかは正確にはわかりませんが、基本的に、「C:\Documents and Settings\user\Local Settings\Temp」フォルダーに pear フォルダーが生成されました。この pear という名前のフォルダーを削除し、「pear install net_smtp」を正常に実行しました。その後、php コードを実行すると、すべてがうまく機能しました (gmail smtp サーバー経由でメールを正常に送信できました)。

助けてくれてありがとう、そして私はこれを理解できてとても安心しました! :)

于 2012-06-24T04:22:13.437 に答える
0

接続はアウトバウンドであるため、ポート転送する必要はありません。ISP が接続をブロックしている可能性があります。送信ポート 25 で一般的で、465 ではそれほど多くありませんが、発生します。
とにかく、あなたのコードはうまく見えます。

于 2012-06-23T17:43:05.297 に答える