使用 Mailjet API 和 GAS 发送邮件

Sending Mails using the Mailjet API with GAS

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

你们中有人知道一些关于 Mailjet 使用的文档吗,或者你们中有谁知道一个网站可以发送像 Sendgrid 或 Mailjet 这样的邮件,我们可以找到使用 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))

我真的不知道把我的钥匙写在哪里

提前感谢您的回答,

叮当声

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

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

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

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

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 看到以下 post:

Whosebug - How to use UrlFetchApp with credentials? Google Scripts

但是 mailjet 可能有特定的语法。

你必须做一些修改。

  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);