簡體   English   中英

這個PHP腳本使用Pear Mail發送郵件有什么問題?

[英]What is wrong with this PHP script to send mail using Pear Mail?

我有這個腳本:

require_once "Mail.php";

 $from = "Stephen <username@nvrforget.com>";//Google apps domain
 $to = "username@gmail.com";
 $subject = "Hi!";
 $body = "Hi,\n\nHow are you?";

 $host = "mail.nvrforget.com";
 $username = "username@nvrforget.com";
 $password = "password";

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

我想出了這個錯誤:

Non-static method Mail::factory() should not be called statically 

知道如何解決這個問題嗎? Pear Mail安裝在服務器上。

不應靜態調用非靜態方法Mail :: factory()

這是來自PHP的非致命通知 ,因為PEAR Mail是史前的 ,並且尚未更新為使用五年前在PHP5中引入的static關鍵字。

查看文檔后 ,您對Mail::factory調用看起來完全正確且正常。

您沒有告訴我們send的調用是成功還是失敗。 如果它成功,但郵件永遠不會被傳遞,請檢查SMTP服務器日志。 如果它失敗了,那么實際的錯誤信息是什么? Mail::send文檔包含一個完整的錯誤列表。

您可能需要考慮使用更現代的郵件發送庫,例如Swiftmailer

在所有梨/郵件電話上添加@。 有時你可能最終得到Mail :: factory()不應該被稱為靜態錯誤

也許這與失蹤的&符號有關?

我在文檔示例中注意到,工廠的用法如下所示:

// Create the mail object using the Mail::factory method
$mail_object =& Mail::factory('sendmail', $params);

請注意使用=&的分配

暫無
暫無

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

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