0

PHP ページから GMail SMTP サーバーを使用してメールを送信する

私はこれを機能させようとしています。指定されたリンクの回答によると、「それは機能するコードなので使用してください」。それが私にはうまくいかないことを除いて。

特に:

<?php

       require_once "Mail.php";

        $from = "<xxxxx.gmail.com>";
        $to = "<xxxxx.gmail.com>";
        $subject = "Hi!";
        $body = "Hi,\n\nHow are you?";

        $host = "smtp.gmail.com";
        $port = "465";
        $username = "xxxxx@gmail.com";
        $password = "*****";

        $headers = array ('From' => $from,
          'To' => $to,
          'Subject' => $subject);
        $smtp = Mail::factory('smtp',
          array ('host' => $host,
            'port' => $port,
            '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>");
         }

    ?>  <!-- end of php tag-->

プロデュース:

厳格な基準: 非静的メソッド Mail::factory() は、23 行目の F:\xampp\htdocs\test\index.php で静的に呼び出されるべきではありません

厳格な基準: 365 行目の F:\xampp\php\PEAR\Mail\smtp.php の互換性のないコンテキストから $this を想定して、非静的メソッド PEAR::isError() を静的に呼び出すべきではありません

厳格な基準: 450 行目の F:\xampp\php\PEAR\Net\SMTP.php の互換性のないコンテキストから $this を想定して、非静的メソッド PEAR::isError() を静的に呼び出すべきではありません

厳格な基準: 467 行目の F:\xampp\php\PEAR\Net\SMTP.php の互換性のないコンテキストから $this を想定して、非静的メソッド PEAR::isError() を静的に呼び出すべきではありません

phpinfo() は登録されたソケットを提供します:

tcp、udp、ssl、sslv3、sslv2、tls

しかし、最も重要なことは、メールが送信されないことです。

4

2 に答える 2

0

問題を理解しました。GMail については、ウェブサイトで次のように述べています。

TLS/STARTTLS のポート: 587

SSL のポート: 465

メールの送信に問題があり、メール クライアントで SMTP の暗号化が有効になっていることを確認した場合は、SMTP サーバーを別のポート (465 または 587) に設定してみてください。

そのため、SSL を使用しているにもかかわらず、ポートを 465 から 587 に変更しました。なぜこれが私にとってうまくいくのかわかりませんが、うまくいきます。

于 2012-07-08T10:52:02.910 に答える
0

$fromとに正しいメールアドレスを設定してみてください$to

'PeterMorgan@gmail.com' instead of '<PeterMorgan.gmail.com>'

PEAR メールのドキュメントから:

include('Mail.php');

$recipients = 'joe@example.com';

$headers['From']    = 'richard@example.com';
$headers['To']      = 'joe@example.com';
$headers['Subject'] = 'Test message';

$body = 'Test message';

$params = ... // set smtp values here
              // http://pear.php.net/manual/en/package.mail.mail.factory.php

$mail_object =& Mail::factory('smtp', $params);

$mail_object->send($recipients, $headers, $body);
于 2012-07-07T15:52:59.867 に答える