2016-06-23 8 views
0

ich den Knoten googleapi gmail Client bin mit einer E-Mail mit dem folgenden Code senden:Knoten google api Körper der E-Mail

var email_lines = ["Content-Type: text/plain; charset=\"UTF-8\"\n", 
     "MIME-Version: 1.0\n", 
     "Content-Transfer-Encoding: 7bit\n", 
     "to: ", "[email protected]", "\n", 
     "from: ", "[email protected]", "\n", 
     "subject: ", "the subject", "\n\n", 
     "this is the best message" 
    ].join(''); 
    var email = base64.encode(email_lines.trim().replace(/\+/g, '-').replace(/\//g, '_')); 

gmail.users.messages.send({ 
    userId: "[email protected]", 
    resource :{ 
    raw: email 
    }, 
    media:{ 
    mimeType: "message/rfc822" 
    } 
},(err,data,body)=>{ 
    console.log(err); 
}); 

Die E-Mail gesendet wird, aber der Körper der Nachricht zeigt in einer Datei auf, dass Sie müssen herunterladen. Wie kann ich den Dateianhang verhindern und den Text in der E-Mail selbst anzeigen lassen?

+0

Könnten Sie versuchen, ohne den MimeType im Medienobjekt? –

Antwort

2

Ihre Linie:

var email = base64.encode(email_lines.trim().replace(/\+/g, '-').replace(/\//g, '_')); 

eigentlich sein sollte:

var email = base64.encode(email_lines.trim()).replace(/\+/g, '-').replace(/\//g, '_'); 

Sie müssen kodieren dann tun Sie Ihre Ersatz anstatt sie zu tun und dann kodiert, base64 base64 Ihre E-Mail.

+0

das war es, danke. Hast du eine Idee, warum dieser Fehler passiert ist? – wootscootinboogie

+1

Google API erwartet URL-sicheren base64-codierten Inhalt, aber Ihre Bibliothek verwendet das URL-sichere Alphabet nicht. Die in der Standard-base64-Codierung verwendeten Zeichen "+" und "/" haben in URLs eine besondere Bedeutung. Ihre Lösung besteht darin, in base64 zu codieren und dann '+' & '/' im codierten Inhalt zu ersetzen, aber Ihre letzte Klammerposition löschte diese Zeichen nicht aus dem codierten Inhalt, so dass der Inhaltstyp falsch und unbekannt war, also in eine Datei einfügen standardmäßig. – HiDeo

Verwandte Themen