2016-11-15 112 views
1

我有一种情况,我发送2个不同的电子邮件,一个给客户,一个给成员接受任务后的成员。在这个函数中,我要调用2个函数,一个发送给客户端,另一个发送给成员。发生的事情是,第二封电子邮件正在发送给成员和客户端,但客户端(第一封电子邮件)只能收到预期的电子邮件。PHPMailer发送电子邮件给错误的收件人

我的想法是,因为这两个函数都在同时发生,所以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

1.您需要显示包装代码,因为这不是原生的PHPMailer接口。 2.除非您在请求中产生过程,否则我怀疑您的功能“同时发生” – bassxzero

回答

5

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

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

基本上,问题是,当你添加一个收件人,邮件成功传递邮件,但对象还没有被销毁。因此,当发送下一封邮件时,成员的电子邮件仍在收件人中,因此请在添加新收件人之前更改您的代码以调用此ClearAllRecipients功能。

+0

谢谢,应该这样做! – Jeff

相关问题