使用pear mail.php包通过gmail smtp发送php表单信息,但是我收到错误

时间:2013-11-27 13:25:07

标签: php forms smtp pear

我正在尝试将数据从表单发送到电子邮件。我做了以下事情:

  
      
  1. 浏览:http://pear.php.net/package/Mail/download/1.2.0b5
  2.   
  3. 下载了测试版文件1.2.0b5
  4.   
  5. 将文件解压缩并放入XAMPP htdocs文件夹
  6.   
  7. 创建以下代码:
  8.   
<?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任何帮助都会很大   理解

3 个答案:

答案 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