【发布时间】:2018-05-05 23:04:38
【问题描述】:
我想使用 gmail api 发送带有所有 html 的电子邮件。 这是 html 的预览: https://docs.google.com/drawings/d/1J0nzeTol6VFr8sB1TlMDbTrSVanDncQ8FOelP_SvmY0/edit
但是当我将电子邮件发送到我的测试帐户然后我检查收件箱中的电子邮件时,电子邮件中的所有样式都丢失了。 这是邮件发送后的截图。 https://docs.google.com/drawings/d/1yfzmlqzMhJMWbJth-o6mfgSJcGAtUIKr41hpvzlFQGE/edit?usp=sharing
我想获得电子邮件中的所有样式。 我也尝试了字符集 iso-8859-1,但结果仍然相同。
这是我的 php 代码:
$service = new Google_Service_Gmail($this->client);
$user = 'me';
$strSubject = $subject;
$strRawMessage = "From: <".$from.">\r\n";
$strRawMessage .= "To: <".$to.">\r\n";
$strRawMessage .= 'Subject: =?utf-8?B?' . base64_encode($strSubject) . "?=\r\n";
$strRawMessage .= "MIME-Version: 1.0\r\n";
$strRawMessage .= "Content-Type: text/html; charset=utf-8\r\n";
$strRawMessage .= 'Content-Transfer-Encoding: quoted-printable' . "\r\n\r\n";
$strRawMessage .= $message."\r\n";
// The message needs to be encoded in Base64URL
$mime = rtrim(strtr(base64_encode($strRawMessage), '+/', '-_'), '=');
$msg = new Google_Service_Gmail_Message();
$msg->setRaw($mime);
//The special value **me** can be used to indicate the authenticated user.
$service->users_messages->send("me", $msg);
【问题讨论】:
-
通过将
'Content-Transfer-Encoding: quoted-printable'更改为'Content-Transfer-Encoding: base64'修复 -
所以,如果我没看错的话,您就是在以 Microsoft 的名义设计网络钓鱼电子邮件。不错。