我使用gmail-api从我的数据库向不同的联系人发送电子邮件。 当我发送消息时,样式不会发生,因为这是相同的符号" ="失去了。
例如,将其放入消息中
<img src="mysite.com/image.jpg"/>
但是我得到了这个我把=
<img src"mysite.com/image.jpg"/>
这是我的功能的一部分,我为消息制作字符串
$strSubject = $data['subject'];
//$strRawMessage = "From: myAddress<pblanco@mysite.com>\r\n";
$strRawMessage = "From: <".$data['from'].">\r\n"; //email consultor
//$strRawMessage .= "To: toAddress <pblanco@mysite.com>\r\n";
$strRawMessage .= "To: <".$data['to'].">\r\n"; //email destinatario
$strRawMessage .= 'Subject: =?utf-8?B?' . base64_encode($strSubject) . "?=\r\n"; //asunto
$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 .= $data['message']."\r\n"; //mensaje
// The message needs to be encoded in Base64URL
$msg = $this->createMessage($strRawMessage);
在这里,我对消息进行编码
public function createMessage($string){
//$mime = rtrim(strtr(base64_encode($string), '+/', '-_'), '=');
$mime = strtr(base64_encode($string), array('+' => '-', '/' => '_'));
$message = new Google_Service_Gmail_Message();
$message->setRaw($mime);
return $message;
}
我在我的函数createMessage()上尝试了不同的方法,但我仍然遇到这个问题。
答案 0 :(得分:2)
由于您使用“quoted printable”作为内容编码,因此等号是转义字符,必须明确编码为=3D
。
请参阅:https://en.wikipedia.org/wiki/Quoted-printable
任何8位字节值都可以用3个字符编码:an = follow 由两个十六进制数字(0-9或A-F)表示字节的数字 值。例如,ASCII换页符(十进制值12) 可以用“= 0C”和ASCII等号(十进制值)表示 61)必须用= 3D表示。除可打印ASCII以外的所有字符 必须编码字符或行尾字符(但也=) 这种时尚。
答案 1 :(得分:1)
要解决此问题,我将=转换为十六进制(=十六进制为3D)
$strRawMessage .= strtr($data['message'], array('=' => '=3D'))."\r\n";
这样我就不会在收到消息时丢失角色。