我使用了两个PHP电子邮件脚本并通过我的SMTP服务器进行路由,当我执行此操作时,它会发送两封相同的电子邮件。
当我使用mail()时,这不会发生,但我宁愿使用SMTP。
为什么会出现这种情况的任何想法?
答案 0 :(得分:1)
如果您多次设置“收件人”和/或“收件人”标头,SMTP服务器可能会将其解释为单独的电子邮件地址,因此您将收到多封电子邮件。
我建议使用PEAR Mail类。使用非常简单,并为您处理大部分工作。它支持多种后端,包括SMTP。同样,如果要扩展类以发送HTML电子邮件,Mail_Mime类可以非常好地处理它,提供设置纯文本正文和HTML正文的方法(如果收件人不支持HTML)。
答案 1 :(得分:0)
function send_email($from, $fromname, $to, $subject, $body, $alt = '')
{
require_once('class.phpmailer.php');
//include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded
$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch
$mail->IsSMTP(); // telling the class to use SMTP
try
{
$mail->Host = 'localhost'; // SMTP server
$mail->SMTPDebug = 2; // enables SMTP debug information (for testing)
//$mail->AddReplyTo($from, $fromname);
$mail->AddAddress($to);
$mail->SetFrom($from, $fromname);
$mail->Subject = $subject;
//$mail->AltBody = $alt; // optional - MsgHTML will create an alternate automatically
$mail->MsgHTML($body);
$mail->Send();
echo 'Message Sent OK';
}
catch (phpmailerException $e)
{
echo $e->errorMessage(); //Pretty error messages from PHPMailer
}
catch (Exception $e)
{
echo $e->getMessage(); //Boring error messages from anything else!
}
}
到目前为止,这是当前的功能
答案 2 :(得分:0)
因此,如果你只使用PHPMailer而不编辑它的代码,那不是你的脚本的错。也许检查你的SMTP服务器的配置?
答案 3 :(得分:0)
根据你的代码,如果它是有错的类,你会期望两次获得“Message Sent OK”(我不明白为什么会发生这种情况)。如果你不这样做,那么我会看你的SMTP服务器(也许是通过支持电话)。
我假设您已禁用回复以在此情况下将其排除在原因之外?注意:我并不是说这会影响任何事情(除了你可能被归类为垃圾邮件)。
顺便说一下,我前段时间从PHPMailer搬到Swift Mailer&从来没有回头。如果你没有从支持中获得任何快乐,那么我至少尝试使用Swift Mailer进行测试。
答案 4 :(得分:0)
我同意da5id所说的,为什么不把第二条错误信息拿出来。你还检查了接收器他们是否真的得到2条消息?