Отправлять почту с вложением с использованием нового API Gmail, но он не отображается для входящих сообщений получателя

Мы интегрируем GMail с использованием новейшего API, предоставляемого ими, в рамках разработки почтового клиента в нашем приложении. Мы используем клиентскую библиотеку PHP, предоставляемую Google.

См. Ссылку https://developers.google.com/api-client-library/php/

В этом я пытаюсь отправить почту с приложением. Здесь мы создали текст, совместимый с сообщением / rfc822, и передали его с параметром «raw». Здесь проблема, которую я обнаружил, после выполнения кода, когда я проверил отправленное письмо на почту, которую я отправил через GMail API, вложения отображаются правильно. Но он не получен / отображен для почтового ящика отправителя.

Смотрите код для получения дополнительной информации:

require_once DOCUMENT_ROOT . '/../library/google/src/Google/Client.php'; require_once DOCUMENT_ROOT . '/../library/google/src/Google/Service/Gmail.php'; function encodeRecipients($recipient){ $recipientsCharset = 'utf-8'; if (preg_match("/(.*)<(.*)>/", $recipient, $regs)) { $recipient = '=?' . $recipientsCharset . '?B?'.base64_encode($regs[1]).'?= <'.$regs[2].'>'; } return $recipient; } $isAccessCodeExpired = 0; $arrAccessToken = array(); $session = new Zend_Session_Namespace(); $client = new Google_Client(); $client->setClientId($this->client_id); $client->setClientSecret($this->client_secret); $client->setRedirectUri($this->redirect_uri); $client->setAccessType('offline'); $client->setApprovalPrompt('force'); $client->addScope("https://mail.google.com/"); $client->addScope("https://www.googleapis.com/auth/gmail.compose"); $client->addScope("https://www.googleapis.com/auth/gmail.modify"); $client->addScope("https://www.googleapis.com/auth/gmail.readonly"); if ($this->getRequest()->getParam('code')) { $code = $this->getRequest()->getParam('code'); $client->authenticate($code); $session->gmail_access_token = $client->getAccessToken(); //$redirect = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']; $redirect = BASE_PATH . '/oauth2callback'; header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL)); } $isAccessCodeExpired = $client->isAccessTokenExpired(); if (isset($session->gmail_access_token) && $session->gmail_access_token != "" && $isAccessCodeExpired !== 1) { $client->setAccessToken($session->gmail_access_token); $objGMail = new Google_Service_Gmail($client); $strMailContent = 'This is a test mail which is sent via using Gmail API client library.<br/><br/><br/>Thanks,<br/>GMail API Team.'; $strMailTextVersion = strip_tags($strMailContent, ''); $strRawMessage = ""; $boundary = uniqid(rand(), true); $subjectCharset = $charset = 'utf-8'; $strToMailName = 'To User Name'; $strToMail = 'toemail@gmail.com'; $strSesFromName = 'From User Name'; $strSesFromEmail = 'fromemail@gmail.com'; $strSubject = 'Test mail using GMail API - with attachment - ' . date('M d, Y h:i:s A'); $strRawMessage .= 'To: ' . encodeRecipients($strToMailName . " <" . $strToMail . ">") . "\r\n"; $strRawMessage .= 'From: '. encodeRecipients($strSesFromName . " <" . $strSesFromEmail . ">") . "\r\n"; $strRawMessage .= 'Subject: =?' . $subjectCharset . '?B?' . base64_encode($strSubject) . "?=\r\n"; $strRawMessage .= 'MIME-Version: 1.0' . "\r\n"; $strRawMessage .= 'Content-type: Multipart/Alternative; boundary="' . $boundary . '"' . "\r\n"; $filePath = '/home/server/Downloads/credentials.csv'; $finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension $mimeType = finfo_file($finfo, $filePath); $fileName = 'credentials.csv'; $fileData = base64_encode(file_get_contents($filePath)); $strRawMessage .= "\r\n--{$boundary}\r\n"; $strRawMessage .= 'Content-Type: '. $mimeType .'; name="'. $fileName .'";' . "\r\n"; $strRawMessage .= 'Content-ID: <' . $strSesFromEmail . '>' . "\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 .= chunk_split(base64_encode(file_get_contents($filePath)), 76, "\n") . "\r\n"; $strRawMessage .= '--' . $boundary . "\r\n"; $strRawMessage .= "\r\n--{$boundary}\r\n"; $strRawMessage .= 'Content-Type: text/plain; charset=' . $charset . "\r\n"; $strRawMessage .= 'Content-Transfer-Encoding: 7bit' . "\r\n\r\n"; $strRawMessage .= $strMailTextVersion . "\r\n"; $strRawMessage .= "--{$boundary}\r\n"; $strRawMessage .= 'Content-Type: text/html; charset=' . $charset . "\r\n"; $strRawMessage .= 'Content-Transfer-Encoding: quoted-printable' . "\r\n\r\n"; $strRawMessage .= $strMailContent . "\r\n"; //Send Mails //Prepare the message in message/rfc822 try { // The message needs to be encoded in Base64URL $mime = rtrim(strtr(base64_encode($strRawMessage), '+/', '-_'), '='); $msg = new Google_Service_Gmail_Message(); $msg->setRaw($mime); $objSentMsg = $objGMail->users_messages->send("me", $msg); print('Message sent object'); print($objSentMsg); } catch (Exception $e) { print($e->getMessage()); unset($_SESSION['access_token']); } } 

Пожалуйста, помогите мне … Спасибо заранее.

Solutions Collecting From Web of "Отправлять почту с вложением с использованием нового API Gmail, но он не отображается для входящих сообщений получателя"