我正在处理 Google Apps 脚本。我正在尝试按如下方式发送电子邮件:
function test_sendmail(){
var subject = "subject";
var body = "https://www.google.com/";
var emailBody = body;
var options = {
htmlBody: body
}
var recipient = "XXXXXXXXX@gmail.com";
MailApp.sendEmail(recipient, subject, emailBody, options);
}
"XXXXXXXXX@gmail.com"
(电子邮件地址 A)无效,但这只是为了向您展示示例。我在 GAS 执行中使用了真实的电子邮件地址。
GAS 执行由编写代码的另一个 G-suite 域谷歌帐户(电子邮件地址 B)运行。
邮箱A在GAS编辑器中对包含上述代码的电子表格具有编辑权限。
但是,来自上述函数的电子邮件并没有通过电子邮件地址 A。我在电子邮件地址 B 中收到了这封电子邮件。
了解更多: https://support.google.com/mail/answer/6596?visit_id=637267406328019079-2003975007&rd=1
然后,我将邮箱地址替换为邮箱地址B,并尝试发送,确实发送成功。
其次,我更改了 URL 部分:
var body = "https://www.google.com/";
到:
var body = "";
然后,邮件成功到达邮箱地址 A 和 B。
结果如下:
从 1 周或 2 周前开始,最近发生了向电子邮件地址(如电子邮件地址 A)发送带有 URL 的电子邮件失败。在此之前,这4个案例已经成功完成。我不知道为什么最近开始出现这种情况。
我检查了发件人电子邮件地址 B 是否在收件人电子邮件地址 A 的联系人列表中。
但是当我搜索它时,它出现了,所以它出现在所有联系人
中。
添加了 1 个: 我尝试向电子邮件地址 C 发送电子邮件,这是与电子邮件地址 B 在同一域中的另一个 G-suite 邮件地址,但电子邮件地址 C 没有电子表格和编辑器的权限。
即使它没有电子表格的权限,它也成功发送到电子邮件 C。
新增 2 个: 我尝试将电子邮件发送到电子邮件地址 D,这是另一个既不是 G-suite 域也不是 @google.com 地址的电子邮件地址。结果与电子邮件地址 A 相同。
最佳答案
Gmail 反垃圾邮件算法很复杂。为防止您的脚本发送的消息被它们阻止,请遵循 Prevent mail to Gmail users from being blocked or sent to spam 上的指南。
可能的解决方法
我的一个客户遇到了同样的问题,我用 GmailApp.sendEmail(recipient,subject,body,options)
替换了 MailApp.sendEmail(message)
显然这有效(10 分钟后没有退回消息)
Rafa Guillermo 在评论中添加:
Just want to add that in this case if this is an ongoing issue you should get your admin to contact G Suite support
如果您无法访问 G Suite 支持,我认为您可以使用 Google 反馈向 Google 报告此问题(打开 Gmail 网络用户界面 > 单击设置按钮(齿轮图标)> 发送反馈)
相关
- MailApp.sendEmail() in Google Apps Script not sending email (看起来这是关于这个问题的第一个 Q/A,也建议用 GmailApp 替换 MailApp)
- Message blocked when sending email from Google Script
关于email - MailApp.sendEmail 方法无法通过正文中包含 URL 的帐户 - 消息被阻止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62156903/