【问题标题】:Sending Mails using the Mailjet API with GAS使用带有 GAS 的 Mailjet API 发送邮件
【发布时间】:2022-01-04 22:30:49
【问题描述】:

我想使用 Mailjet 通过 Google Apps 脚本发送邮件。问题是根本没有关于如何将此 API 与 GAS 一起使用的文档。

你们中是否有人知道一些关于 Mailjet 使用的文档,或者你们中是否有人知道发送邮件的网站,例如 Sendgrid 或 Mailjet,我们可以找到在 GAS 中使用 API 的文档?

我尝试使用以下代码使用 JetMail 发送基本电子邮件,但无法正常工作:

var mailjeturl = "https://api.mailjet.com/v3.1/send";

var mailjetparams = {
    "Messages":[{
      "From": {"Email": 'myemail@domain.com',"Name": 'Robert'},
      "To": [{"Email": 'theiremail@domain.com'}],
      "Subject": 'subject',
      "HTMLPart": 'this message',
}

var mailjetoptions = {
    'method': 'post',
    'contentType': 'application/json',
    'payload': JSON.stringify(mailjetparams)
};

var response = JSON.parse(UrlFetchApp.fetch(mailjeturl, mailjetoptions))

我实际上不知道在哪里写我的密钥。

提前感谢您的回答,

叮当

【问题讨论】:

  • 您没有在请求中发送 API 密钥。您是否从 mailjet 获得了公共和私人安全密钥?你需要得到这些,它们需要在请求中。您的mailjetparams 实际上看起来不错,(与 CURL 信息相比)但您需要发送授权信息。它可能看起来像这样:"muteHttpExceptions": true, "headers": { "Authorization": "Bearer " + $MJ_APIKEY_PUBLIC:$MJ_APIKEY_PRIVATE } 但我只是在猜测。我不知道授权的确切语法。

标签: google-apps-script mailjet


【解决方案1】:

mailjet 的 CURL 示例如下所示:

curl -s \
    -X POST \
    --user "$MJ_APIKEY_PUBLIC:$MJ_APIKEY_PRIVATE" \
    https://api.mailjet.com/v3.1/send \
    -H 'Content-Type: application/json' \
    -d '{
        "Messages":[
            {
                "From": {
                    "Email": "pilot@mailjet.com",
                    "Name": "Mailjet Pilot"
                },
                "To": [
                    {
                        "Email": "passenger1@mailjet.com",
                        "Name": "passenger 1"
                    }
                ],
                "Subject": "Your email flight plan!",
                "TextPart": "Dear passenger 1, welcome to Mailjet! May the delivery force be with you!",
                "HTMLPart": "<h3>Dear passenger 1, welcome to Mailjet!</h3><br/>May the delivery force be with you!"
            }
        ]
    }'

你错过了:

--user "$MJ_APIKEY_PUBLIC:$MJ_APIKEY_PRIVATE"

部分。

您可以在 SO 看到以下帖子:

StackOverflow - How to use UrlFetchApp with credentials? Google Scripts

但 mailjet 可能有特定的语法。

【讨论】:

    【解决方案2】:

    如果您希望使用 GAS 与外部 API 进行交互,请查看此处的一些文档:

    https://developers.google.com/apps-script/guides/services/external

    关于与 MailJet 的 API 交互,我会说以 ES2015 Javascript 包装器为起点,看看它是否适合 GAS。见这里:

    https://github.com/mailjet/mailjet-apiv3-nodejs-es2015

    【讨论】:

    • 非常感谢您的回答 ScottMcC。我将查看 GAS 文档的链接。但是,关于Mailjet的api的使用,问题是在网上找到的所有代码都使用Mailjet包,而这些包在GAS上是不可用的。 ://
    • 默认情况下 GAS 不支持 API,但如果您设置库文件或向 MailJet 的 API 发出适当的 GET 或 POST 请求,您应该能够让它工作
    【解决方案3】:

    你必须做一些修改。

    1. 添加授权信息
    2. 确保电子邮件是否存在“myemail@domain.com”

    我已经输入了正确的 mailjet 用户名和密码,并添加了我公司的 noreply 域,它可以工作!

    var encoding = Utilities.base64Encode(user + ":" + userPwd);
    
    var mailjetUrl = "https://api.mailjet.com/v3.1/send";
    
    var mailjetParams = {
          "Messages":[{
            "From": {"Email": '...'},
            "To": [{"Email": '...'}],
            "Subject": 'subject',
            "HTMLPart": 'message'}]
    }
    
    var mailjetOptions = {
          'method': 'post',
          'contentType': 'application/json',
          'payload': JSON.stringify(mailjetParams),
          "headers": {"Authorization": "Basic " + encoding},
    }
    
    var response = JSON.parse(UrlFetchApp.fetch(mailjetUrl, mailjetOptions));
    Logger.log(response);
    

    【讨论】:

      猜你喜欢
      • 2018-05-01
      • 1970-01-01
      • 2020-08-29
      • 1970-01-01
      • 2021-11-01
      • 2012-11-01
      • 1970-01-01
      • 2020-11-21
      • 1970-01-01
      相关资源
      最近更新 更多