PHP邮件程序发送1封额外的空邮件root@localhost
我目前在MediaTemple网格服务器上遇到此问题 我正在使用PHP Mailer,我有以下代码:PHP邮件程序发送1封额外的空邮件root@localhost,php,smtp,sendmail,phpmailer,mediatemple,Php,Smtp,Sendmail,Phpmailer,Mediatemple,我目前在MediaTemple网格服务器上遇到此问题 我正在使用PHP Mailer,我有以下代码: require_once("inc/class.phpmailer.php"); // Mail from contact form for me $mail = new PHPMailer(); $mail -> IsSMTP(); $mail -> CharSet = "UTF-8"; $mail -> SetFrom($_POST["email"],$_POST["n
require_once("inc/class.phpmailer.php");
// Mail from contact form for me
$mail = new PHPMailer();
$mail -> IsSMTP();
$mail -> CharSet = "UTF-8";
$mail -> SetFrom($_POST["email"],$_POST["name"]);
$mail -> AddReplyTo($_POST["email"],$_POST["name"]);
$mail -> AddBCC("myaddress@mydomain.yep");
$mail -> Subject = "Mail Subject";
$body = "... some html ...";
$mail -> MsgHTML($body);
// Automatic mail for the person that contacted me
$mail_customer = new PHPMailer();
$mail_customer -> IsSMTP();
$mail_customer -> CharSet = "UTF-8";
$mail_customer -> SetFrom("contact@mydomain.yep","Contact");
$mail_customer -> AddReplyTo("contact@mydomain.yep","Contact");
$mail_customer -> AddAddress($_POST["email"],$_POST["name"]);
$mail_customer -> Subject = "Thank you for contacting us!";
$body_customer = "... some html ...";
$mail_customer -> MsgHTML($body_customer);
$mail -> Send();
$mail_customer -> Send();
当这一切结束时,没有错误,但出于某种原因,我收到了三封电子邮件
这可能是什么原因造成的?我如何修复它?这与PHP邮件程序或服务器配置有关吗?尝试将第一封电子邮件包装到一个方法中,并使用if-else构造运行另一封 请看下面的示例代码,了解我的建议 试着用这种方式编写代码 注意:我还没有测试过这个
require_once('../class.phpmailer.php');
//MAIL SENDER 1
$mail = new PHPMailer();
$body = file_get_contents('contents.html');
$body = eregi_replace("[\]",'',$body);
$mail->AddReplyTo("name@yourdomain.com","First Last");
$mail->SetFrom('name@yourdomain.com', 'First Last');
$mail->AddReplyTo("name@yourdomain.com","First Last");
$address = "whoto@otherdomain.com";
$mail->AddAddress($address, "John Doe");
$mail->Subject = "PHPMailer Test Subject via mail(), basic";
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
$mail->MsgHTML($body);
$mail->AddAttachment("images/phpmailer.gif"); // attachment
$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
//RUN THE OTHER METHOD EMAIL
mail_customer();
}
//MAIL SENDER 2 WITHIN A METHOD
function mail_customer(){
$mail = new PHPMailer();
$body = file_get_contents('contents.html');
$body = eregi_replace("[\]",'',$body);
$mail->AddReplyTo("name@yourdomain.com","First Last");
$mail->SetFrom('name@yourdomain.com', 'First Last');
$mail->AddReplyTo("name@yourdomain.com","First Last");
$address = "whoto@otherdomain.com";
$mail->AddAddress($address, "John Doe");
$mail->Subject = "PHPMailer Test Subject via mail(), basic";
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
$mail->MsgHTML($body);
$mail->AddAttachment("images/phpmailer.gif"); // attachment
$mail->AddAttachment("images/phpmailer_mini.gif"); // attachment
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
//RUN THE OTHER METHOD EMAIL
echo 'Mail Sent';
}
}
我这样做了,但问题不在那里,你看,它没有给我一个错误消息,它确实发送邮件。问题是,它又发送了一个,这是不必要的。我与MT支持人员聊天,他们无法帮助我,但显然这可能与sendmail有关。不要将提交者的地址用作发件人地址-这将在所有yahoo和aol域中失败,并且在其他域中会越来越失败。从web服务器的地址发送。还要确保您使用的是最新的PHPMailer。在这两种情况下,您都在调用isSMTP,但没有设置主机,也没有提供ay用户名或密码属性。我从永远以来都是这样使用它的,它可以正常工作。这里的问题不是邮件发送,而是它发送了3封邮件,而不是2封,第三封是从root@localhost. 更奇怪的是,它只发送$mail而不发送$mail\u客户。减少您的问题-一次只做一件事,并准确地隔离它生成额外消息的位置。使用一个假的邮件服务器(请参阅PHPMailer文档中的指针),这样您就可以准确地看到发送的内容。一件非常奇怪的事情是,一开始我的邮件服务器没有isSMTP(),而且工作正常。。。第二天,当我添加isSMTP()时,所有的联系人表单都停止了工作,它们再次开始工作,但第三封“幻影”邮件开始发送,这可能是由于php邮件程序配置或服务器问题造成的吗?添加随机代码并不是追踪问题的明智方法。你希望它起作用是因为你做得对,而不是靠运气。如果要使用SMTP,请正确配置它。文档中有很多例子。