Как отправить на адрес BCC при использовании PHPMailer для форматирования сообщения MIME для Gmail API?

Я использую PHPMailer для создания сообщения электронной почты. Я использую PHPMailer только для форматирования сообщений MIME, а не для отправки.

Затем я извлекаю необработанное сообщение из объекта PHPMailer перед передачей его в API Gmail для обработки.

//Create a new PHPMailer instance
$mail = new PHPMailer;

//Tell PHPMailer to use SMTP
$mail->isSMTP();
$mail->IsHTML(true);

//Disable SMTP debugging
// 0 = off (for production use)
$mail->SMTPDebug = 0;

//Set who the message is to be sent from
$mail->setFrom("fromaddress@domain.com", "From Name");

//Set an alternative reply-to address
$mail->addReplyTo("replyaddress@domain.com", "Reply Name");

//Set to address
$mail->addAddress("address@domain.com", "Some Name");

//Set CC address
$mail->addCC("ccaddress@ccdomain.com", "Some CC Name");

//Set BCC address
$mail->addBCC("bccaddress@ccdomain.com", "Some BCC Name");

//Set the subject line
$mail->Subject = "Test message";

//Set the body
$mail->Body = file_get_contents("/messagestore/some.html");

//Attach a file
$mail->addAttachment("/messagestore/some.pdf","some.pdf","base64","application/pdf");

//generate mime message
$mail->preSend();

//get the mime text
$mime = $mail->getSentMIMEMessage();

//do the google API dance
$newMailMessage = new Google_Service_Gmail_Message();
$data = base64_encode($mime);
$data = str_replace(array('+','/','='),array('-','_',''),$data); // url safe
$newMailMessage->setRaw($data);
$gmailService = new Google_Service_Gmail($google_client);
$gmailService->users_messages->send('me', $newMailMessage);

Согласно PHPMailer docs, CC и BCC функционируют только для отправки в среде Win32.

Однако мои сообщения в формате MIME успешно передаются через API Gmail по адресам «TO» и «CC», но не по адресу «BCC».

Подводя итог, Когда я отправляю электронную почту, используя этот код и я предоставляю адрес BCC для API Gmail, я не делайте см. «неопределенные получатели» в заголовке отправленного сообщения и сообщение не является передается на адрес BCC.

Когда я отправляю письмо используя веб-интерфейс Gmail и я предоставляю адрес «BCC» там, я делать см. «неопределенные получатели» в заголовке отправленного сообщения и сообщение является передается на адрес BCC.

Кто-нибудь знает обходной путь для этой проблемы?

3

Решение

PHPMailer будет отслеживать получателей BCC внутри, и если вы отправите сообщение с помощью PHPMailer, он определит получателей BCC во время SMTP-конверт.

Однако, когда вы извлекаете необработанное сообщение из PHPMailer, вы теряете внутренний список получателей, который отслеживал PHPMailer. сырое сообщение не включает информацию о BCC. To: а также Cc: Заголовки будут включать соответствующих получателей, и API GMAIL, вероятно, использует эти заголовки для вывода предполагаемых получателей.

Чтобы добавить получателей BCC, вам нужно будет использовать GMAIL API, чтобы добавить этих получателей перед отправкой сообщения.

Вы не предоставили свой код API GMAIL, но он может соответствовать следующему принципу:

$message = new Message();

# construct message using raw data from PHPMailer
$message->setSubjectBody(...);
$message->setTextBody(...);
$message->setHtmlBody(...);

# *** add the BCC recipients here ***
$message->addBcc("secret.recipient@google.com");

# send the message
$message->send();
13

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector