Вложение будет дублироваться в почтовом клиенте apple, когда почта отправляется через php-код gmail api - PullRequest
0 голосов
/ 18 июня 2019

Я использую код Gmail Api в php для отправки писем клиентам.Почта содержит несколько вложений, и все работает хорошо, за исключением клиентов, которые используют приложение Apple Mail.Они видят дублированные вложения.То есть, если у почты 4 разных вложения, все, что они видят в приложении apple mail, это 4 одинаковых дублированных вложения.Пожалуйста, смотрите мой код ниже.

$objGMail = new Google_Service_Gmail($this->googleauth->client);
$strRawMessage = "";
$boundary = uniqid(rand(), true);
$subjectCharset = $charset = 'utf-8';

$strRawMessage .= 'To: ' .$toEmailsName . " <" . $ToEmail . ">" . "\r\n"; 
$strRawMessage .= 'Cc: ' .$ccEmailsName . " <" . $CcEmail . ">" . "\r\n";  
$strRawMessage .= 'Bcc: ' .$BccEmailsName . " <" . $BccEmail . ">" . "\r\n";
$strRawMessage .= 'From: '.$fromName . " <" . $fromEmail . ">" . "\r\n";   
$strRawMessage .= 'Subject: =?' . $subjectCharset . '?B?' . base64_encode($EmailSubject) . "?=\r\n";         
$strRawMessage .= 'MIME-Version: 1.0' . "\r\n";  
$finfo = finfo_open(FILEINFO_MIME_TYPE); 

//Attachments
if (isset($post['UploadedFileName'])) {
    for ($i = 0; $i < count($post['UploadedFileName']); $i++) {
        if ($post['UploadedFileName'][$i] <> "") {                                                                 
            $filePath = './attachments/' . $post['UploadedFileName'][$i];
            $mimeType = finfo_file($finfo, $filePath);                   
            $fileName = $post['UploadedFileName'][$i];                  
            $fileData = chunk_split(base64_encode(file_get_contents($filePath)), 76, "\n") . "\r\n";       

            $strRawMessage .= 'Content-type: Multipart/Mixed; boundary="' . $boundary . '"' . "\r\n";                                                                                                  
            $strRawMessage .= "\r\n--{$boundary}\r\n";
            $strRawMessage .= 'Content-Type: '. $mimeType .'; name="'. $fileName .'";' . "\r\n";            
            $strRawMessage .= 'Content-ID: <' . $fromEmail . '>' . "\r\n";            
            $strRawMessage .= 'Content-Description: ' . $fileName . ';' . "\r\n";
            $strRawMessage .= 'Content-Disposition: attachment; filename="' . $fileName . '"; size=' . filesize($filePath). ';' . "\r\n";
            $strRawMessage .= 'Content-Transfer-Encoding: base64' . "\r\n\r\n";               
            $strRawMessage .=  $fileData;               
            $strRawMessage .= "--{$boundary}\r\n";                                                                                                 
        }
    }
}

$strRawMessage .= 'Content-Type: text/html; charset=' . $charset . "\r\n";
$strRawMessage .= 'Content-Transfer-Encoding: quoted-printable' . "\r\n\r\n";
$strRawMessage .= $EmailBody . "\r\n";
$mime = rtrim(strtr(base64_encode($strRawMessage), '+/', '-_'), '=');
$msg = new Google_Service_Gmail_Message();
$msg->setRaw($mime);
$objSentMsg = $objGMail->users_messages->send("me", $msg);
...