Чтобы отправить ваши электронные письма, вы сначала должны получить каждое из них и преобразовать его в объект BLOB с типом содержимого «message / rfc822» (который является типом mime для файлов .eml) [1]:
В вашем коде вы получаете первое сообщение каждого потока, потому что идентификатор потока совпадает с идентификатором сообщения первого сообщения в этом потоке, но если у потока есть больше сообщений (например, ответов), он не найдетих.Вам нужно использовать функцию getMessages () [2] для каждого потока, чтобы получить все сообщения.
После получения объекта Message вы можете использовать функцию getRawContent [3] для каждого сообщения, чтобы получить строку закодированных данных.С помощью этой строки мы можем создать объект Blob [4], который будет являться файлом .eml.
Я не могу сказать, какой у вас доступ со стороны файлового сервера, поэтому яразработали эти два различных способа решения вашей проблемы для загрузки / отправки файлов .eml в зависимости от того, что вам удобнее:
Чтобы проверить, правильно ли создан файл BLOB-объекта .eml, я отправляю его себе каквложение с использованием функции sendEmail [5].
Другой способ - сохранить все файлы в массиве (messagesArray) и получить URL-адрес вашего сервера для отправки массива через POST.В этом случае используется функция UrlFetchApp.fetch () [6].
Вот полный код с обеими опциями:
function myeMailExportToEML() {
var threads = GmailApp.search('label:TestExportEML’);
GmailApp.markThreadsRead(threads);
Logger.log(threads)
var messagesArray = []
for (var i=0; i< threads.length; i++) {
var messages = threads[i].getMessages();
for (var j=0; j< messages.length; j++) {
var myID = messages[j].getId();
var msg = GmailApp.getMessageById(myID);
var msgRaw = msg.getRawContent();
var msgBlob = Utilities.newBlob(msgRaw, 'message/rfc822', 'example.eml');
//Sends email with the .eml file attached
GmailApp.sendEmail('RECIPIENT EMAIL', 'Attachment example', 'Please see the attached file.', {
attachments: msgBlob,
name: 'Automatic Emailer Script'
})
messagesArray.push(msgBlob);
}
}
//make a post request to the server sending the .eml file in the request body(I didn't test this part)
var formData = {
'mail': messagesArray
};
var options = {
'method' : 'post',
'payload' : formData
};
UrlFetchApp.fetch('https://example.com/post', options);
}
[1] https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types
[2] https://developers.google.com/apps-script/reference/gmail/gmail-thread#getMessages()
[3] https://developers.google.com/apps-script/reference/gmail/gmail-message#getRawContent()
[4] https://developers.google.com/apps-script/reference/utilities/utilities#newBlob(String,String,String)
[5] https://developers.google.com/apps-script/reference/gmail/gmail-app#sendEmail(String,String,String,Object)
[6] https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app