0
<?php
            @require_once"Mail.php";

            $from="from email"; //enter email of sender
            $to="recepient email"; //enter to email
            $subject="subject";

            $body="content";

            $host="ssl://smtp.gmail.com";
            $port="465";
            $username="your gmail account user name";
            $pwd="your gmail account password";

            $headers = array ('From' => $from,
                            'To' => $to,
                            'Subject' => $subject);

            $headers["Content-Type"] = 'text/html; charset=UTF-8';

            $smtp = @Mail::factory('smtp',
                                   array ('host' => $host,
                                             'port' => $port,
                                             'auth' => true,
                                             'username' => $username,
                                             'password' => $pwd));

            //Send Email using pear sned option
            $mail = @$smtp->send($to, $headers, $body);

                //If any errors occurs
            if (@PEAR::isError($mail)) {
               ("<p>" . $mail->getMessage() . "</p>");
            }
            else {
             echo("<p>Message successfully sent!</p>");

            }           

?>

添加@reduce一些错误但仍然有三个错误即将到来,它们是:

Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in C:\xampp\php\pear\Net\SMTP.php on line 491

严格标准:不应静态调用非静态方法 PEAR::isError(),假设 $this 来自第 265 行 C:\xampp\php\pear\Net\SMTP.php 中的不兼容上下文

严格标准:不应静态调用非静态方法 PEAR::raiseError(),假设 $this 来自第 267 行 C:\xampp\php\pear\Net\SMTP.php 中的不兼容上下文

4

2 回答 2

1

您要么必须为 xampp 安装邮件服务器,例如Mercury。或者您必须将您的(外部)SMTP 凭证输入到您的php.ini.

于 2013-04-16T18:42:16.197 回答
1

您可以检查邮件是否已成功移交给 MTA,您无法真正检测或检查邮件是否已成功交付给收件人。那是另一种情况。

检查邮件是否已发送:

if (mail('abc@gmail.com',$subject,$body,'From: me@example.org'))
    return true;
else
    return false;

所以你的功能将是:

 function email($to,$subject,$body)
 {
     if (mail('abc@gmail.com',$subject,$body,'From: me@example.org'))
        return true;
    else
        return false;
 }

由于 mail 函数总是返回布尔值,因此 tt 可以简化为:

function email($to,$subject,$body)
{
   return  mail('abc@gmail.com',$subject,$body,'From: me@example.org');

}

或者,如果您在邮件标题中设置了回复,那么您可以检查是否有任何退回的邮件,这将使您可以肯定地说邮件尚未送达。

于 2013-04-16T18:33:42.683 回答