[英]How to send the email from Google Apps Script using GMAIL API?
I am trying to automise sending of the Emails from my account using Gmail API in Google Apps Script.我正在尝试使用 Google Apps 脚本中的 Gmail API 自动从我的帐户发送电子邮件。
Here is my code:这是我的代码:
function email_checker() {
var yourEmailAddress = "###@gmail.com";
var myEmailAddress = "support@###.com";
var subject = "testing mail";
var forScope = GmailApp.getInboxUnreadCount();
var htmlBody = '<html><body>' + '<h1>HI</h1>' + '</body></html>';
var message = 'From: Me <' + myEmailAddress + '>\r\n' +
'To: Me <' + myEmailAddress + '>\r\n' +
'Subject: ' + subject + '\r\n' +
'Content-Type: text/html; charset=utf-8\r\n' +
'Content-Transfer-Encoding: quoted-printable\r\n\r\n' +
htmlBody;
var draftBody = Utilities.base64Encode(message);
draftBody = draftBody.replace(/\//g, '_').replace(/\+/g, '-');
var params = {
method: "post",
contentType: "application/json",
headers: {
"Authorization": "Bearer " + ScriptApp.getOAuthToken()
},
muteHttpExceptions: true,
payload: JSON.stringify({
"message": {
"raw": draftBody
}
})
};
var resp = UrlFetchApp.fetch("https://gmail.googleapis.com/upload/gmail/v1/users/me/messages/send", params);
Logger.log(resp.getContentText());
}
I am getting the following error: Media type 'application/json' is not supported.我收到以下错误:不支持媒体类型“应用程序/json”。
Can anyone please advise on what I am doing wrong?任何人都可以请教我做错了什么吗?
Thank you.谢谢你。
I believe your goal and your current situation as follows.我相信你的目标和你目前的情况如下。
multipart/alternative
.需要使用multipart/alternative
创建请求正文。message/rfc822
.使用message/rfc822
需要内容类型。payload
.创建的请求体可以直接用于payload
。When above points are reflected to your script, it becomes as follows.当以上几点反映到你的脚本中时,它变成如下。
function email_checker() {
var yourEmailAddress = "###@gmail.com";
var myEmailAddress = "support@###.com";
var subject = "testing mail";
var forScope = GmailApp.getInboxUnreadCount();
var htmlBody = '<html><body>' + '<h1>HI</h1>' + '</body></html>';
var message = 'MIME-Version: 1.0\r\n' +
'From: Me <' + myEmailAddress + '>\r\n' +
'To: Me <' + myEmailAddress + '>\r\n' +
'Subject: ' + subject + '\r\n' +
'Content-type: multipart/alternative; boundary=boundaryboundary\r\n\r\n' +
'--boundaryboundary\r\n' +
'Content-type: text/html; charset=UTF-8\r\n' +
'Content-Transfer-Encoding: quoted-printable\r\n\r\n' +
htmlBody + "\r\n\r\n" +
'--boundaryboundary--';
var params = {
method: "post",
contentType: "message/rfc822",
headers: {
"Authorization": "Bearer " + ScriptApp.getOAuthToken()
},
muteHttpExceptions: true,
payload: message
};
var resp = UrlFetchApp.fetch("https://gmail.googleapis.com/upload/gmail/v1/users/me/messages/send", params);
Logger.log(resp.getContentText());
}
If you want to use the endpoint of POST https://gmail.googleapis.com/gmail/v1/users/{userId}/messages/send
, please modify your script as follows.如果您想使用POST https://gmail.googleapis.com/gmail/v1/users/{userId}/messages/send
的端点,请按如下方式修改您的脚本。
From从
var params = { method: "post", contentType: "application/json", headers: { "Authorization": "Bearer " + ScriptApp.getOAuthToken() }, muteHttpExceptions: true, payload: JSON.stringify({ "message": { "raw": draftBody } }) }; var resp = UrlFetchApp.fetch("https://gmail.googleapis.com/upload/gmail/v1/users/me/messages/send", params); Logger.log(resp.getContentText());
To到
var params = { method: "post", contentType: "application/json", headers: { "Authorization": "Bearer " + ScriptApp.getOAuthToken() }, muteHttpExceptions: true, payload: JSON.stringify({"raw": draftBody}) }; var resp = UrlFetchApp.fetch("https://gmail.googleapis.com/gmail/v1/users/me/messages/send", params); Logger.log(resp.getContentText());
In this case, var draftBody = Utilities.base64Encode(message); draftBody = draftBody.replace(/\\//g, '_').replace(/\\+/g, '-');
在这种情况下, var draftBody = Utilities.base64Encode(message); draftBody = draftBody.replace(/\\//g, '_').replace(/\\+/g, '-');
var draftBody = Utilities.base64Encode(message); draftBody = draftBody.replace(/\\//g, '_').replace(/\\+/g, '-');
can be also modified to var draftBody = Utilities.base64EncodeWebSafe(message);
也可以修改为var draftBody = Utilities.base64EncodeWebSafe(message);
. .
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.