2012-07-07 203 views
0

Send email using the GMail SMTP server from a PHP pagePHP发送电子邮件PEAR失败

我试图让这个工作。根据给定链接中的答案“这是工作代码,所以使用它”。除了它不适合我。

特别是:

<?php 

     require_once "Mail.php"; 

     $from = "<xxxxx.gmail.com>"; 
     $to = "<xxxxx.gmail.com>"; 
     $subject = "Hi!"; 
     $body = "Hi,\n\nHow are you?"; 

     $host = "smtp.gmail.com"; 
     $port = "465"; 
     $username = "[email protected]"; 
     $password = "*****"; 

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

    ?> <!-- end of php tag--> 

产地:

严格的标准:非静态方法的Mail ::厂()不应该 F中静态调用:\ XAMPP \ htdocs中\测试\ index.php on line 23

严格标准:非静态方法PEAR :: isError()不应该是 静态调用,假设$ this来自不兼容的上下文 F:\ XAMPP \ PHP \ PEAR \在线邮件\ smtp.php 365个

严格的标准:非静态方法PEAR :: ISERROR()不应该被 静态调用,在不兼容的情况下假设$这 F:\ XAMPP \ PHP \ PEAR \ NET \ SMTP.php上线450个

严格的标准:非静态方法PEAR :: ISERROR()不应该被 静态调用,在 假设$这种在不兼容的情况下˚F :\ xampp \ php \ PEAR \ Net \ SMTP.php在线467

虽然phpinfo()给出了已注册的套接字:

TCP,UDP,SSL,SSLV3,SSLV2,TLS

但最重要的,没有电子邮件发送。

回答

0

尝试设置正确的电子邮件地址在$from$to

'[email protected]' instead of '<PeterMorgan.gmail.com>' 

梨邮件文档:

include('Mail.php'); 

$recipients = '[email protected]'; 

$headers['From'] = '[email protected]'; 
$headers['To']  = '[email protected]'; 
$headers['Subject'] = 'Test message'; 

$body = 'Test message'; 

$params = ... // set smtp values here 
       // http://pear.php.net/manual/en/package.mail.mail.factory.php 

$mail_object =& Mail::factory('smtp', $params); 

$mail_object->send($recipients, $headers, $body); 
+0

我试过了。似乎没有工作。在显示'strict'消息之前,它需要等待大约25秒才能加载。它没有说连接失败或被拒绝......它只是不发送.. :( – Bingo 2012-07-08 10:43:59

0

想通了这个问题。对于Gmail他们说,在他们的网站:

端口为TLS/STARTTLS:587

SSL的端口:465

如果您无法顺利寄送邮件,但您已确认 加密对于邮件客户端中的SMTP有效,请尝试在不同的端口(465或587)上配置您的SMTP服务器 。

因此,我将端口从465更改为587,即使我正在使用SSL。我不知道为什么这对我有用,但确实如此。