【发布时间】:2023-03-17 21:15:01
【问题描述】:
我正在使用 pear 在 PHP 中发送邮件。我遵循了此处的示例 (http://pear.php.net/manual/en/package.mail.mail.send.php)。但是,我收到此错误消息。
严格标准:非静态方法 Mail::factory() 不应在第 43 行的 C:\xampp\htdocs\functions.php 中静态调用
所以我一直试图让这条严格标准消息不显示。
这是我的代码:
$smtpinfo["host"] = "********";
$smtpinfo["port"] = "587";
$smtpinfo["auth"] = true;
$smtpinfo["username"] = $mail_username;
$smtpinfo["password"] = $mail_password;
## This line below is causing the problem ##
$mail =& Mail::factory("smtp", $smtpinfo); // <-- Line 43
我读过很多Stack Overflow Q&A 说只需在$mail 的开头添加@。确实如此,它使错误消失了,但我觉得这只是隐藏了错误,并没有真正解决问题。
@$mail =& Mail::factory("smtp", $smtpinfo);
如何不静态调用上述方法?
即使此页面上的文档 (http://pear.php.net/manual/en/package.mail.mail.send.php) 上写着 This function cannot be called statically.... 但他们给出的示例与我调用该方法的方式相同?!
请不要回答只是在前面添加@以删除严格的标准或E_ALL & ~E_STRICT ...这不是解决方案!
【问题讨论】:
-
+1 用于实际尝试找出解决方案,而不是选择使用邪恶的
@运算符隐藏错误消息。 -
在文档中,它说不能静态调用
send函数。这意味着,您不能使用Mail:::send()。工厂部分需要是静态的 -
@HüseyinBABAL 很好……但是为什么 PHP 给我一个关于工厂的错误?