2016-11-15 111 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

相關問題