检查我的邮件是否已发送

时间:2013-04-16 18:30:00

标签: php email xampp

<?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>");

            }           

?>

添加@减少了一些错误,但仍有三个错误:

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()不应该静态调用,假设来自第265行C:\ xampp \ php \ pear \ Net \ SMTP.php中的不兼容上下文的$ this

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

2 个答案:

答案 0 :(得分: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');

}

或者,如果您在邮件标题中设置了回复,则可以检查是否有任何退回邮件,这样可以确定邮件尚未发送。

答案 1 :(得分:1)

您必须为xampp安装邮件服务器,例如Mercury。或者你必须enter your (external) SMTP credentials into your php.ini