我正在尝试将数据从表单发送到电子邮件。我做了以下事情:
- 浏览:http://pear.php.net/package/Mail/download/1.2.0b5
- 下载了测试版文件1.2.0b5
- 将文件解压缩并放入XAMPP htdocs文件夹
- 创建以下代码:
醇>
<?php // Pear Mail Library
require_once "Mail.php";
$from = '<johannes.gmail.com>';
$to = '<john.pick@gmail.com>';
$subject = 'Hi!';
$body = "Hi,\n\nHow are you?";
$headers = array(
'From' => $from,
'To' => $to,
'Subject' => $subject
);
$smtp = Mail::factory('smtp', array(
'host' => 'smtp.gmail.com',
'port' => '465',
'auth' => true,
'username' => 'readgreen@gmail.com',
'password' => 'bon3dfredds'
));
$mail = $smtp->send($to, $headers, $body);
if (PEAR::isError($mail)) {
echo('<p>' . $mail->getMessage() . '</p>');
} else {
echo('<p>Message successfully sent!</p>');
}
?>
但是我收到以下错误:
严格标准:非静态方法不应在第22行的C:\ xampp \ htdocs \ Mail Tester \ Untitled-1.php中静态调用Mail :: factory()
严格标准:非静态方法PEAR :: isError()不应该 静态调用,假设$ this来自不兼容的上下文 第365行的C:\ xampp \ htdocs \ Mail Tester \ Mail \ smtp.php
严格标准:非静态方法PEAR :: isError()不应该 静态调用,假设$ this来自不兼容的上下文 第339行的C:\ xampp \ php \ PEAR \ Net \ SMTP.php
严格标准:非静态方法PEAR :: isError()不应该 静态调用,假设$ this来自不兼容的上下文 第344行的C:\ xampp \ php \ PEAR \ Net \ SMTP.php任何帮助都会很大 理解
答案 0 :(得分:1)
我有同样的问题,但我不认为这是一个实际问题。我的代码执行得很好。它根本不应该是一个问题,并且可以抑制错误。真正的问题似乎是梨邮件模块是为PHP4编写的,并且自2010年以来一直没有更新。您可以通过official bug report查看针对Mail模块的讨论。如果您愿意,可以更新为专门解决此问题而创建的PHP5友好Mail2 module。
此外,在我的代码中,我必须指定服务器URL的协议。
'host' => 'smtp.gmail.com'
应该成为
'host' => 'ssl://smtp.gmail.com'
这是我开始工作的唯一方式。
答案 1 :(得分:0)
$host
的值应为"smtp.gmail.com"
。
答案 2 :(得分:-1)
http://pear.php.net/bugs/bug.php?id=19491
使用上面的链接,它似乎对我有用..
只需在前面添加静态关键字 function isError
在文件PEAR.php
中