Gmail APIを使用してPHPmailerを使用してメールを送信しています。このプロセスは標準のメールだけを送信するのにはうまくいきましたが、Gmail APIを使用して添付ファイル付きのメールを送信したいと考えています。 $mail->addAttachment($urlString, $name);
を使用してみると、エラーRequest Entity Too Large Error 413
が返されます(添付ファイルのサイズは20MBを超えることはありませんので、Gmail APIの35MBの制限内に収まるはずです)。PHPメーラーを使用したGmail APIは複数の添付ファイルを送信できません
検索の結果、大容量のGmail添付ファイル(5MB以上35MB未満のもの)を送信するためには「/アップロードURI」を使用していなかったことがわかりました。問題は、私はGmail APIの使い方をよく知っておらず、基本的にはコードを他の場所からコピーして自分の用途に合わせて少し変更しているだけなので、URIを変更する方法はわかりませんそれ。ここで
はそれが標準の電子メールと連携し、私がこれまで持っているものです。
function($agent, $assistantName='', $assistantEmail='', $subject, $body, $attachments=''){
$key = realpath(dirname(__FILE__).'/Services/Google/Gmail.json');
$useremail = '[email protected]';
$toAddress = $agent->email;
$agentFirst = $agent->first_name;
$client = new Google_Client();
putenv('GOOGLE_APPLICATION_CREDENTIALS='.$key);
$client->useApplicationDefaultCredentials();
$user_to_impersonate = $useremail;
$client->setSubject($user_to_impersonate);
$client->addScope('https://www.googleapis.com/auth/gmail.compose');
if ($client->isAccessTokenExpired()) {
$client->refreshTokenWithAssertion();
}
//prepare the mail with PHPMailer
$mail = new PHPMailer();
$mail->CharSet = "UTF-8";
$mail->Encoding = "base64";
$subject = $subject;
$msg = $body;
$from = $useremail;
$fname = "My Name";
$mail->From = $from;
$mail->FromName = $fname;
$mail->AddAddress($toAddress, $agentFirst);
$mail->AddCC($assistantEmail, $assistantName);
$mail->AddReplyTo($from,$fname);
if ($attachments != '') {
foreach ($attachments as $name => $urlString) {
$mail->addAttachment($urlString, $name);
}
}
$mail->Subject = $subject;
$mail->Body = $msg;
$mail->IsHTML(true);
$mail->preSend();
$mime = $mail->getSentMIMEMessage();
$m = new Google_Service_Gmail_Message();
$data = base64_encode($mime);
$data = str_replace(array('+','/','='),array('-','_',''),$data); // url safe
$m->setRaw($data);
$service = new Google_Service_Gmail($client);
$email = $service->users_messages->send($useremail, $m);
return json_encode($email);
}
私は本当にどこここから行くかわからないので、任意の助けをいただければ幸いです。
gmailのメールを完全に受け入れるには時間がかかります。私の解決策は、500-2000の範囲で挑戦的です。 – Ruttyj
良い気分です。 –