<?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中的不兼容上下文
答案 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
。