2016-07-20 31 views
0

Ich verwende Google API PHP Client. Ich schreibe ein Programm, das Massennachrichten von einem Konto in ein anderes Konto importiert. So importieren, ich bin mit der Zeile:Google Mail-API-Import - Fehler 413 Request Entity Too Large

$service->users_messages->import('me', $message, $options); 

..wo $ message ist die rohe Botschaft, die von $service->users_messages->get() kommt.

Zuerst erhält das Programm die Liste der Nachrichten von einem Konto. Der Benutzer wählt die Nachrichten aus, die er importieren möchte, und klickt dann auf die Schaltfläche Importieren. Das Importieren führt eine Schleife für die ausgewählten Nachrichten durch und funktioniert einwandfrei, aber es gibt einige Nachrichten, die große Anhänge enthalten. Diese Nachrichten schlagen fehl und geben das Error 413 - Request-Objekt zu groß zurück.

Ich habe gelesen, dass ich angeben muss, dass der Upload-Typ mehrteilig sein sollte. Ich benutze Google API PHP Client und ich sehe keine Methoden, Klassen oder Optionen, um diesen Upload-Typ hinzuzufügen.

Alle Vorschläge werden hilfreich sein. Vielen Dank.

Antwort

0

Versuchen Sie, die Variable $ Nachricht zu diesem mail with attachment Code-Snippet zu setzen.

$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"; 
// The message needs to be encoded in Base64URL 
$mime = rtrim(strtr(base64_encode($strRawMessage), '+/', '-_'), '='); 
$msg = new Google_Service_Gmail_Message(); 
$msg->setRaw($mime); 

Überprüfen Sie auch diese curl implementation oder diese ajax implementation

+0

Danke, aber funktioniert immer noch nicht. Meine Nachricht hat das gleiche Format und sie werden erfolgreich importiert, mit Ausnahme von denen, die große Anhänge haben. –