在 Google Apps 脚本中使用 Mandrill API

Posted

技术标签:

【中文标题】在 Google Apps 脚本中使用 Mandrill API【英文标题】:Use Mandrill API in Google Apps Script 【发布时间】:2013-10-21 15:53:48 【问题描述】:

我想在我的谷歌应用程序脚本中使用 mandrill 电子邮件发送 API。在谷歌脚本中,我必须使用 JSON 代码,但我不知道如何使用它。我是 Google 应用脚本的新手。

var m = new mandrill.Mandrill('XXXXXXXXXXX');
var from_email = "user4@gmail.com";
var to = '[

  "email": "recipient.email@example.com",
    "name": "Recipient Name"

],';

// create a variable for the API call parameters
var params = 
  "message": 
    "from_email":from_email,
    "to":["email":to],
    "subject": "Sending a text email from the Mandrill API",
    "text": "I'm learning the Mandrill API at Codecademy, it's very difficult."
  
;

function sendTheMail() 
  // Send the email!
  alert('this is a mail script');
  m.messages.send(params, function(res) 
    log(res);
  , function(err) 
    log(err);
  );

我不知道如何在 Google Apps 脚本中使用此代码。

【问题讨论】:

【参考方案1】:

您需要使用 urlfetchapp。

var url = "https://mandrillapp.com/api/1.0/messages/send.json";
var your_key = "xxxxxxxxxxxxx";
var from_email = "user4@gmail.com";
var to = [
    "email": "recipient.email@example.com",
    "name": "Recipient Name"
];

var params = 
    "key": your_key,
    "message": 
        "from_email":from_email,
        "to":["email":to],
        "subject": "Sending a text email from the Mandrill API",
        "text": "I'm learning the Mandrill API at Codecademy, it's very difficult."
    
;

var payload = JSON.stringify(params);

var options = 
    'method': 'post',
    'payload': payload,
    'contentType' : 'application/json'
;

var response = UrlFetchApp.fetch(url, options);

没有测试过这段代码,但应该是这样的。

【讨论】:

我收到了这个错误Request failed for https://mandrillapp.com/api/1.0/messages/send.json returned code 500. 请查看我的代码更改。您需要对 json 进行字符串化。尝试使用 chrome 扩展“邮递员”来尝试发布到 API。 我建议的唯一更改是:将 "to":["email":to], 替换为 "to":to, den 它可以正常工作... 嘿,如果我想发送模板,我该怎么办?而不是var response = UrlFetchApp.fetch(url, options); 我必须使用什么?【参考方案2】:

我粘贴示例代码示例以通过 Mandrill 发送带有来自 Google Drive 的附件文件的电子邮件。

function sendEmail() 

  var MANDRILL_API_KEY = "<<your key here>>";

  var files = [
    "<<Google Drive File ID 1>>",  
    "<<Google Drive File ID 2>>",  
    "<<Google Drive File ID 3>>"  
  ];

  var recipients = [
    
      "email": "ctrlq+to@labnol.org",
      "name": "Amit Agarwal",
      "type": "to"
    , 
      "email": "ctrlq+cc@labnol.org",
      "type": "cc"
    , 
      "email": "ctrlq+bcc@gmail.com",
      "type": "bcc"
    
  ];

  var attachments = [];

  for (var f in files) 
    var file = DriveApp.getFileById(files[f]);
    attachments.push(
      "type": file.getMimeType(),
      "name": file.getName(),
      "content": Utilities.base64Encode(file.getBlob().getBytes())
    );
  

  var params = 
    "key": MANDRILL_API_KEY,
    "message": 
      "from_email": "<<Sender's Email Address>>",
      "from_name": "<<Sender Name>>",
      "to": recipients,
      "attachments": attachments,
      "headers": 
        "Reply-To": "reply@example.com"
      ,
      "subject": "Enter email subject",
      "text"   : "Enter email body in plain text",
      "html"   : "Enter HTML content with <b>tags</b>"
    
  ;

  var response = UrlFetchApp.fetch(
    "https://mandrillapp.com/api/1.0/messages/send.json", 
      'method': 'POST',
      'payload': JSON.stringify(params),
      'contentType': 'application/json'
    );

  Logger.log(response.getContentText());

示例代码提取自website ctrlq of Amit Agarwal

【讨论】:

以上是关于在 Google Apps 脚本中使用 Mandrill API的主要内容,如果未能解决你的问题,请参考以下文章

在 Google Apps 脚本中使用 BigQuery 连接到 Google 电子表格

Google 表单 - 使用 Google Apps 脚本在项目中添加自定义按钮“更多信息”

如何在 Google Apps 脚本中使用服务帐户对 Google 表格进行身份验证

使用 Google Apps 脚本在 Blogger 中创建帖子

使用 Apps 脚本在带有日期的 Google 电子表格中存档

在 Google Apps 脚本中使用 Adwords API (MccApp)