簡體   English   中英

PHP發送電子郵件梨失敗

[英]PHP send email PEAR fail

使用GMail SMTP服務器從PHP頁面發送電子郵件

我正在嘗試使它起作用。 根據給定鏈接中的答案,“它是有效的代碼,請使用它”。 除非它對我不起作用。

尤其是:

<?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中靜態調用

嚴格標准:非靜態方法PEAR :: isError()不應被靜態調用,假設$ this來自365行的F:\\ xampp \\ php \\ PEAR \\ Mail \\ smtp.php中不兼容的上下文

嚴格的標准:非靜態方法PEAR :: isError()不應被靜態調用,假設$ this來自第450行的F:\\ xampp \\ php \\ PEAR \\ Net \\ SMTP.php中不兼容的上下文

嚴格標准:非靜態方法PEAR :: isError()不應靜態調用,假定第467行的F:\\ xampp \\ php \\ PEAR \\ Net \\ SMTP.php中的不兼容上下文中的$ this

雖然phpinfo()提供了注冊的套接字:

tcp,udp,ssl,sslv3,sslv2,tls

但最重要的是,沒有發送電子郵件。

嘗試在$from$to設置正確的電子郵件地址

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

從PEAR Mail文檔中:

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);

找出問題。 對於GMail,他們在其網站上說:

TLS / STARTTLS的端口:587

SSL連接埠:465

如果您在發送郵件時遇到麻煩,但已確認郵件客戶端中的SMTP加密處於活動狀態,請嘗試在其他端口(465或587)上配置SMTP服務器。

因此,即使我使用SSL,我也將端口從465更改為587。 我不知道為什么這對我有用,但確實如此。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM