Кемеровские программисты php общаются здесь
Anonymous
Отправка почты с вложением с использованием Gmail API в PHP
Сообщение
Anonymous » 08 июн 2025, 18:02
Когда я пытаюсь отправить почту с помощью php.text, также отправьте в качестве вложения с именем noname.html. Пожалуйста, предоставьте мне решение. Мой код такой. Любая помощь будет оценена. < /P>
Код: Выделить всё
$client->setAccessToken($_SESSION['gmail_access_token']);
$objGMail = new Google_Service_Gmail($client);
$strMailContent = 'This is a test mail which is sent via[/b] using Gmail API client library.[b]
Thanks,
Premjith K.K..[/b]';
// $strMailTextVersion = strip_tags($strMailContent, '');
$strRawMessage = "";
$boundary = uniqid(rand(), true);
$subjectCharset = $charset = 'utf-8';
$strToMailName = 'NAME';
$strToMail = 'name@gmail.com';
$strSesFromName = 'Premjith GMAIL API';
$strSesFromEmail = 'premji341800@gmail.com';
$strSubject = 'Test mail using GMail API - with attachment - ' . date('M d, Y h:i:s A');
$strRawMessage .= 'To: ' .$strToMailName . " " . "\r\n";
$strRawMessage .= 'From: '.$strSesFromName . " " . "\r\n";
$strRawMessage .= 'Subject: =?' . $subjectCharset . '?B?' . base64_encode($strSubject) . "?=\r\n";
$strRawMessage .= 'MIME-Version: 1.0' . "\r\n";
$strRawMessage .= 'Content-type: Multipart/Mixed; boundary="' . $boundary . '"' . "\r\n";
$filePath = 'abc.pdf';
$finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension
$mimeType = finfo_file($finfo, $filePath);
$fileName = 'abc.pdf';
$fileData = base64_encode(file_get_contents($filePath));
$strRawMessage .= "\r\n--{$boundary}\r\n";
$strRawMessage .= 'Content-Type: '. $mimeType .'; name="'. $fileName .'";' . "\r\n";
$strRawMessage .= 'Content-ID: ' . "\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']);
}
< /code>
При изменении строки кода
$ strrawmessage. = 'content-type: multipart /mixed; Boundary = "'. $ Boundary.' ''. "\ r \ n"; < /code>
to
$ strrawmessage. = 'content-type: multipart /alternative; Boundary = "'. $ Boundary.' ''. "\ r \ n"; mail Отправить как html только без вложения. Пожалуйста, помогите мне
Подробнее здесь:
https://stackoverflow.com/questions/493 ... api-in-php
1749394968
Anonymous
Когда я пытаюсь отправить почту с помощью php.text, также отправьте в качестве вложения с именем noname.html. Пожалуйста, предоставьте мне решение. Мой код такой. Любая помощь будет оценена. < /P> [b] [code]$client->setAccessToken($_SESSION['gmail_access_token']); $objGMail = new Google_Service_Gmail($client); $strMailContent = 'This is a test mail which is sent via[/b] using Gmail API client library.[b] Thanks, Premjith K.K..[/b]'; // $strMailTextVersion = strip_tags($strMailContent, ''); $strRawMessage = ""; $boundary = uniqid(rand(), true); $subjectCharset = $charset = 'utf-8'; $strToMailName = 'NAME'; $strToMail = 'name@gmail.com'; $strSesFromName = 'Premjith GMAIL API'; $strSesFromEmail = 'premji341800@gmail.com'; $strSubject = 'Test mail using GMail API - with attachment - ' . date('M d, Y h:i:s A'); $strRawMessage .= 'To: ' .$strToMailName . " " . "\r\n"; $strRawMessage .= 'From: '.$strSesFromName . " " . "\r\n"; $strRawMessage .= 'Subject: =?' . $subjectCharset . '?B?' . base64_encode($strSubject) . "?=\r\n"; $strRawMessage .= 'MIME-Version: 1.0' . "\r\n"; $strRawMessage .= 'Content-type: Multipart/Mixed; boundary="' . $boundary . '"' . "\r\n"; $filePath = 'abc.pdf'; $finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension $mimeType = finfo_file($finfo, $filePath); $fileName = 'abc.pdf'; $fileData = base64_encode(file_get_contents($filePath)); $strRawMessage .= "\r\n--{$boundary}\r\n"; $strRawMessage .= 'Content-Type: '. $mimeType .'; name="'. $fileName .'";' . "\r\n"; $strRawMessage .= 'Content-ID: ' . "\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']); } < /code> При изменении строки кода $ strrawmessage. = 'content-type: multipart /mixed; Boundary = "'. $ Boundary.' ''. "\ r \ n"; < /code> to $ strrawmessage. = 'content-type: multipart /alternative; Boundary = "'. $ Boundary.' ''. "\ r \ n"; [/code] mail Отправить как html только без вложения. Пожалуйста, помогите мне Подробнее здесь: [url]https://stackoverflow.com/questions/49378400/sending-mail-with-attachment-using-gmail-api-in-php[/url]