私はPHPMailerを使用して電子メールメッセージを作成しています。 PHPMailerをMIMEメッセージのフォーマットにのみ使用しており、送信は行っていません。
次に、PHPMailerオブジェクトから生のメッセージを抽出してから、GmailAPIに渡して処理します。
//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("[email protected]", "From Name");
//Set an alternative reply-to address
$mail->addReplyTo("[email protected]", "Reply Name");
//Set to address
$mail->addAddress("[email protected]", "Some Name");
//Set CC address
$mail->addCC("[email protected]", "Some CC Name");
//Set BCC address
$mail->addBCC("[email protected]", "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のドキュメントによると、CCとBCCはWin32環境で送信する場合にのみ機能します。
ただし、MIME形式のメッセージは、Gmail APIを介して「TO」アドレスと「CC」アドレスに正常に送信されますが、「BCC」アドレスには送信されません。
要約すると、このコードを使用してメールを送信し、Gmail APIに「BCC」アドレスを提供すると、しない送信されたメッセージヘッダーの「undisclosed-recipients」を参照してください。メッセージis not BCCアドレスに送信されます。
Gmail Webインターフェイスを使用してメールを送信し、そこに「BCC」アドレスを指定すると、do送信されたメッセージヘッダーの「undisclosed-recipients」を参照してください。メッセージis BCCアドレスに送信されます。
この問題の回避策を知っている人はいますか?
PHPMailerはBCC受信者を内部で追跡し、PHPMailerでメッセージを送信する場合は、 SMTPエンベロープ の間にBCC受信者を指定します。
ただし、PHPMailerから生のメッセージを抽出すると、PHPMailerが追跡していた内部受信者リストが失われます。 生のメッセージ にはBCC情報は含まれていません。 To:
およびCc:
ヘッダーには適切な受信者が含まれ、GMAILAPIはおそらくこれらのヘッダーを使用して目的の受信者を推測します。
BCC受信者を追加するには、メッセージを送信する前に、GMAILAPIを使用してこれらの受信者を追加する必要があります。
GMAIL APIコードを提供していませんが、次の概要に従う可能性があります。
$message = new Message();
# construct message using raw data from PHPMailer
$message->setSubjectBody(...);
$message->setTextBody(...);
$message->setHtmlBody(...);
# *** add the BCC recipients here ***
$message->addBcc("[email protected]");
# send the message
$message->send();
この質問を見つけたが、Gmail APIを使用して送信せず、PhpMailerを使用して生のMIMEメッセージを作成した人に:
$ phpMailer-> isMail()を設定すると(そうです、それはセッターです)、生のMIMEメッセージにBCC:が含まれます。
PhpMailerオブジェクトがSMTPまたはmailメソッドに設定されていても、実際に電子メールを送信するために使用することはないので、違いはないと思います。
追加するだけです
$mail->addBCC('[email protected]');