繁体   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