PHPMailer向错误的收件人发送电子邮件

时间:2016-11-15 16:29:53

标签: php phpmailer

我遇到的情况是,在会员接受任务后,我会向客户发送2封不同的电子邮件,一封发送给客户,另一封发送给会员。在函数中我调用2个函数,一个发送到客户端,一个发送给成员。发生的事情是第二封电子邮件被发送给会员和客户,但客户端,第一封电子邮件,只收到预期的电子邮件。

我想到的是,因为这两个函数同时发生,所以addAddress()函数如何将两个电子邮件地址都传递给第二封电子邮件。我的证明是我改变了功能的顺序,所以会员先发送,客户发送第二,他们都收到客户电子邮件,在客户发送之前,会员发送第二。

我的问题是,在发送第二封电子邮件之前,如何在第一封电子邮件中断几秒钟,以阻止这种情况发生。

以下是代码的基本设置。

function memberAccept()
{
    // SQL to mark in DB that member accept task

    $this->memberEmail($id)
    $this->clientEmail($id)
}

function memberEmail($id)
{
    // SQL to gather information about member inner join with task 

    $subject = 'Email';
    $body = 'Email to member'
    $this->sendEmail($member['email'], $subject, $body)
}

function clientEmail($id)
{
    // SQL to gather information about client inner join with task

    $subject = 'Email';
    $body = 'Email to client'
    $this->sendEmail($client['priemail'], $subject, $body)
}

sendEmail()在另一个设置为使用PHPMailer函数发送电子邮件的类中。

1 个答案:

答案 0 :(得分:6)

在您的情况下,您必须在为邮件添加新收件人之前使用以下功能:

$mailer->ClearAllRecipients( ); // clear all

基本上,问题在于,当您添加第一个收件人时,邮件程序已成功传递邮件,但该对象尚未销毁。因此,当发送下一封邮件时,会员的电子邮件仍在收件人中,因此在添加新收件人之前,请更改您的代码以调用此ClearAllRecipients函数。