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

 Смежные вопросы

  • Нет связанных вопросов^_^