2017-02-10 2 views
0

Следующий код javascript успешно отправляет сообщение электронной почты через API Gmail. Однако форматирование таблицы, в частности настройки ширины таблицы и столбца (ячейки), похоже, игнорируются.Отправка HTML-форматированного письма с использованием API Gmail и Javascript

function sendMail(email) { 
    var to = email; 
    var subject = "HTML formatted email"; 
    var content = ""; 
    content += "<html><body>"; 
    content += "<table width='100%'><tr><td>"; // Outer table 
    content += "<table width='60%'>"; // Nested table 
    content += "<tr><td width='70%'>This is a row</td><td width='30%'>999999</td></tr>"; 
    content += "<tr><td width='70%'>So is this</td><td width='30%'>9999</td></tr>"; 
    content += "</table>"; 
    content += "</td></tr></table>"; 
    content += "</body></html>"; 
    var email = 
      "From: 'me'\r\n" + 
      "To: " + to + "\r\n" + 
      "Subject: " + subject + "\r\n" + 
      "Content-Type: text/html; charset=utf-8\r\n" + 
      "Content-Transfer-Encoding: quoted-printable\r\n\r\n" + 
      content; 
    var base64EncodedEmail = window.btoa(email).replace(/\+/g, "-").replace(/\//g, "_"); 
    var request = gapi.client.gmail.users.messages.send({ 
     "userId": "me", 
     "resource": { 
      "raw": base64EncodedEmail 
     } 
    }); 
    request.execute(); 
} 

сообщение электронной почты выглядит следующим образом:

This is a row 999999 
So is this 9999 

Все, что я исследовал на отправку HTML сообщения в формате электронной почты говорит, чтобы использовать вложенные таблицы и встроенный стиль. Почему мой стиль не работает?

+0

Попробуйте удалить знак '%'. 'width = '400'' должен сделать трюк. –

ответ

2

После долгих поисков, экспериментов и испытаний, я, наконец, понял, что мне нужно, чтобы установить значение Content-Transfer-кодирование в base64:

var email = 
     "From: 'me'\r\n" + 
     "To: " + to + "\r\n" + 
     "Subject: " + subject + "\r\n" + 
     "Content-Type: text/html; charset='UTF-8'\r\n" + 
     "Content-Transfer-Encoding: base64\r\n\r\n" + 
     "<html><body>" + 
     content + 
     "</body></html>"; 

Надеется, что это спасает других с подобным вопросом некоторое времени.

+0

изменение передачи контента изменилось для меня .. и сэкономило мой день – PHPCoder