[解決済み] PHPMailer で Gmail API 用の MIME メッセージをフォーマットする場合、 BCC アドレスに送信するにはどうすればよいですか?
質問
PHPMailerを使用してメールメッセージを作成しています。PHPMailer は MIME メッセージのフォーマットのみに使用しており、 送信には使用していません。
その後、PHPMailer オブジェクトから生のメッセージを取り出してから Gmail API に渡し、処理を行います。
//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' を参照し、メッセージ はありません。 がBCCアドレスに送信される。
を使用してメールを送信する場合 gmail ウェブインタフェース で、そこに「BCC」アドレスを指定すると、私は する 送信済みメッセージヘッダの 'undisclosed-recipients' を参照してください。 は がBCCアドレスに送信されます。
この問題の回避策をご存知の方はいらっしゃいますか?
解決方法は?
PHPMailer は BCC の受信者を内部で追跡しており、PHPMailer でメッセージを送信する場合、BCC 受信者を SMTPエンベロープ .
しかし、PHPMailer から生のメッセージを取り出すと、 PHPMailer が追跡していた内部の受信者リストが失われます。 そのため
生メッセージ
には、BCC 情報が含まれません。 また
To:
と
Cc:
ヘッダは適切な受信者を含み、GMAIL APIはおそらくこれらのヘッダを使って意図された受信者を推測するのでしょう。
BCC受信者を追加するには、メッセージを送信する前にGMAIL APIを使用して受信者を追加する必要があります。
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();
関連
-
[解決済み] [Solved] Fatal error: メンバ関数prepare()のNULLでの呼び出し
-
[解決済み】++と*+の意味は何ですか?
-
[解決済み】「セッションキャッシュリミッターを送信できません - ヘッダーはすでに送信されています」【重複】。
-
[解決済み】PHP 7.2 - Warning: count(): パラメータは配列かCountableを実装したオブジェクトでなければならない [解決済み]
-
[解決済み】php, mysql - データベースへの接続数が多すぎるエラー
-
[解決済み】XAMPPエラー: www.example.com:443:0 サーバー証明書に、サーバー名と一致するIDが含まれていません。
-
[解決済み】 $_SERVER['DOCUMENT_ROOT'] と $_SERVER['HTTP_HOST'] の違いについて]
-
[解決済み】未定義のメソッド mysqli_stmt::get_result を呼び出す。
-
thinkphp5 timestamp 非整形の数値に遭遇した。
-
[解決済み] mysqli_fetch_assoc() は、パラメータ 1 が mysqli_result であることを期待し、boolean が与えられる [重複] 。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】move_uploaded_fileは、「failed to open stream: Permission denied" というエラーが出る
-
[解決済み】予期せぬ例外。SQLSTATE[HY000] [1045] Access denied for user ****@'localhost' (using password: YES)
-
[解決済み】PHP 7.2 - Warning: count(): パラメータは配列かCountableを実装したオブジェクトでなければならない [解決済み]
-
[解決済み】Xampp ローカルホスト/ダッシュボード
-
[解決済み】 libapache2-mod-php7 パッケージが見つからない。
-
[解決済み】Laravel 5.2 Storage::makeDirectory($dir) でディレクトリが作成されない。
-
thinkphp5 timestamp 非整形の数値に遭遇した。
-
[解決済み] Uncaught Error: 未定義の関数 mysql_escape_string() の呼び出し。
-
[解決済み] Forbidden :このサーバーの /phpmyadmin にアクセスする権限がありません。
-
[解決済み] libapache2-mod-php7 パッケージの場所がわからない