2016-06-23 1 views
0

Я использую клиент узел GoogleAPI GMAIL, чтобы отправить по электронной почте с помощью следующего кода:Узел Google API тело электронной почты

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); 
}); 

Электронная почта отправляется, но тело сообщения появляется в файле, вам нужно скачать. Как я могу предотвратить прикрепление файла и показать текст в самом письме?

+0

Не могли бы вы попробовать без mimeType в медиа-объекте? –

ответ

2

Ваша линия:

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

на самом деле должен быть:

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

Вам нужно закодировать base64 почты затем сделать ваши замены вместо их выполнений, а затем кодирование в base64.

+0

это было, спасибо. вы не знаете, почему эта ошибка произошла? – wootscootinboogie

+1

Google API ожидает URL-безопасного содержимого с кодировкой base64, но ваша библиотека не использует безопасный для URL-адрес алфавит. Символы «+» и «/», используемые в стандартной кодировке base64, имеют специальные значения в URL-адресах. Ваше решение состоит в том, чтобы закодировать в base64, а затем заменить «+» и «/» в закодированном контенте, но ваша последняя позиция в скобках не удаляла эти символы из кодированного контента, поэтому тип содержимого был неправильным и неизвестным, поэтому помещался в файл по умолчанию. – HiDeo

Смежные вопросы