我遇到MailApp.sendEmail()问题。 我尝试在谷歌电子表格中通过脚本发送电子邮件。我的脚本适用于我的帐户,但不适用于我朋友的帐户。我收到这样的消息:
“邮件被拒绝。有关详细信息,请参阅https://support.google.com/mail/answer/69585。 最终收件人:rfc822; xx@xx.xx 行动:失败 状态:5.0.0 诊断代码:smtp;消息被拒绝。有关详细信息,请参阅https://support.google.com/mail/answer/69585。 Last-Attempt-Date:Wed,201 Mar Mar 2018 05:41:31 -0700(PDT)“
我使用了Martin Hawksey Tutarial脚本(经过一些修改):
var TO_ADDRESS = "xxx@gmail.com";
// spit out all the keys/values from the form in HTML for email
function formatHtmlMailBody(obj, order) {
var result = "html text";
// loop over all keys in the ordered form data
for (var idx in order) {
var key = order[idx];
result += key + " " + obj[key];
}
return result;
}
function formatTextMailBody(obj, order) {
var result = "text";
for (var idx in order) {
var key = order[idx];
result += key + "\n" + obj[key] + "\n\n";
}
return result;
}
function doPost(e) {
try {
Logger.log(e); // the Google Script version of console.log see: Class Logger
record_data(e);
var mailData = e.parameters;
var dataOrder = JSON.parse(e.parameters.formDataNameOrder);
var sendEmailTo = (typeof TO_ADDRESS !== "undefined") ? TO_ADDRESS : mailData.formGoogleSendEmail;
MailApp.sendEmail(
String(sendEmailTo),
'title',
formatTextMailBody(mailData, dataOrder), { // body
htmlBody: formatHtmlMailBody(mailData, dataOrder), // advanced options
name: "name",
replyTo: String(mailData.Email)
}
);
//second mail
try {
var htmlBodyToSender = "html text";
var textBodyToSender = "text";
MailApp.sendEmail(
String(mailData.Email), //to
'title', //subject
textBodyToSender, { // body
htmlBody: htmlBodyToSender, // advanced options
name: "name",
replyTo: String(sendEmailTo)
}
);
}
catch (error) {
Logger.log(error);
}
return ContentService // return json success results
.createTextOutput(
JSON.stringify({
"result": "success",
"data": JSON.stringify(e.parameters)
}))
.setMimeType(ContentService.MimeType.JSON);
} catch (error) { // if error return this
Logger.log(error);
return false;
}
}
答案 0 :(得分:1)
交货状态通知
消息内容受"An Extensible Message Format for Delivery Status Notifications"控制,因为它是失败电子邮件的传递状态通知(DSN)。让我们逐字段解析错误消息:
failed
,delayed
,delivered
,relayed
或{{1} }。在您的情况下,它表明电子邮件发送失败。expanded
错误仅表示“其他或未定义的协议状态”,无需进一步说明。 500
或failed
的“动作”字段显示)。对于您的情况,没有什么太具体的信息,Google只是指向可能的退回原因列表。问题
从上面可以看到,该错误并不表示您的代码有任何错误。这也解释了为什么该脚本对某些帐户“有效”的原因:问题可能出在Google的基础架构上,还是在目标收件人的安全配置上。
由于第一个通常带有更具体的DSN,因此您应检查受影响帐户的电子邮件安全配置。如果一切看起来正常,请切换到delayed
的类似sendEmail
方法,该方法可以为您提供更细粒度的控件,或者使用advanced service,可以让您从头开始构造消息。 / p>