【问题标题】:How do I use smtp.gmail.com in Google Apps Script?如何在 Google Apps 脚本中使用 smtp.gmail.com?
【发布时间】:2020-10-23 08:08:12
【问题描述】:

是否可以在 Google Apps 脚本中使用 smtp.gmail.com

我收到此错误:

例外:地址不可用:http://smtp.gmail.com

代码如下:

var user = 'user@gmail.com';
var password = 'thisisapassword';

var emailData = {
              'to': 'recipient@example.com',
              'subject': 'This works!',
              'content': '<b>Testing successful</b>'
            };
            
            var url = "smtp.gmail.com";
            var request = {method:'POST',
                          contentType: 'text/html', 
                          payload: emailData, 
                          headers:{"Authorization":"Basic " + Utilities.base64Encode(user + ":" + password), 
                          muteHttpExceptions: true}};
            
            UrlFetchApp.fetch(url, request);

【问题讨论】:

  • POST 是一个 HTTP 协议命令。 SMTP 是一种不同的协议。它不是 HTTP。
  • 这能回答你的问题吗? Can I send email using javascript
  • smtpjs 是一个网络服务,所以不行。如果 SMTP 是不同的协议,是否有与 Python smtplib 等效的 js 库?
  • 如果您仔细查看我作为重复链接的另一个问题,Web 服务解决方案是公认的答案,但那里提供了其他不使用 Web 服务的答案。你应该检查那些。否则,您应该进行互联网搜索。我确信从 js 与 SMTP 交互有不同的方式。

标签: google-apps-script smtp


【解决方案1】:

在 Apps 脚本中,您可以使用 Class MailApp 发送电子邮件。

您可以使用例如sendEmail(recipient, subject, body, options) 方法:

// Send an email with two attachments: a file from Google Drive (as a PDF) and an HTML file.
var file = DriveApp.getFileById('1234567890abcdefghijklmnopqrstuvwxyz');
var blob = Utilities.newBlob('Insert any HTML content here', 'text/html', 'my_document.html');
MailApp.sendEmail('mike@example.com', 'Attachment example', 'Two files are attached.', {
    name: 'Automatic Emailer Script',
    attachments: [file.getAs(MimeType.PDF), blob]
});

【讨论】:

  • MailApp 和 GmailApp 都仅限于从当前用户发送。 AFAIK,如果您想从另一个用户帐户发送电子邮件,则需要 smtp,因此我对它在 Apps 脚本中的使用提出了疑问。
  • 你想完成什么?它是一个网络应用程序,它在用户运行它时发送电子邮件?如果是这种情况并且您有 G Suite 帐户,您是否使用 Service Accounts 进行了检查
  • 目标只是一个从不同用户帐户发送电子邮件的脚本。虽然使用 Python 脚本(请参阅:smtplib)完成此任务很简单,但我希望有一种方法可以在留在 Apps 脚本环境中的同时做到这一点,因为它:更容易/更清洁/更快/更简单/隐藏。
  • @Avid 你能做到吗?您是否尝试过使用服务帐户或寻找外部 js 库?
  • 服务帐户可能有点过于宽松,因为它需要域范围的委派并授予服务帐户对所有内容的访问权限。有一个用于发送消息的 Node.js 库(请参阅:Nodemailer),虽然我不确定是否可以直接在 Apps 脚本中使用它或者是否需要进行一些修改?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-07
  • 1970-01-01
  • 2017-08-28
  • 1970-01-01
  • 1970-01-01
  • 2016-06-26
相关资源
最近更新 更多