【问题标题】:Send emails using Sendgrid with google appscript使用带有谷歌应用脚​​本的 Sendgrid 发送电子邮件
【发布时间】:2016-05-16 07:58:47
【问题描述】:

我正在创建一个 googlesheet 插件来发送邮件。对于发送邮件,我正在使用 sendgrid。 我找不到使用 Google Appscript 发送邮件的任何文档或示例代码。这是我正在使用的代码,但它并不好。

var data = {

        "api_user":"username",
        "api_key":"ioioi",
        "to":[],
        "tonnage":[],
        "cc":[],
        "ccname":[],
        "bcc":[],
        "subject":sub,
        "from":from,
        "html":htmlBody
      }

      var headers = { "Accept":"application/json", 
                     "Content-Type":"application/json"
                    };



        data = JSON.stringify(data);

        var options = {
          "method": "POST",
          "payload": data,
          "headers": headers,
          "muteHttpExceptions": true
        };

var res = UrlFetchApp.fetch("https://api.sendgrid.com/api/mail.send.json", options);

有没有人知道使用 googl appscript 通过 sendgrid 发送电子邮件的想法或代码?

【问题讨论】:

    标签: google-apps-script sendgrid email


    【解决方案1】:

    试试下面的代码。它对我有用

       var SENDGRID_KEY ='Your API KEY';
    
      var headers = {
        "Authorization" : "Bearer "+SENDGRID_KEY, 
        "Content-Type": "application/json" 
      }
    
      var body =
      {
      "personalizations": [
        {
          "to": [
            {
              "email": "email id of the sender"
            }
          ],
          "subject": "Hello, World!"
        }
      ],
      "from": {
        "email": "From email id"
      },
      "content": [
        {
          "type": "text",
          "value": "Hello, World!"
        }
      ]
    }
    
      var options = {
    
        'method':'post',
        'headers':headers,
        'payload':JSON.stringify(body)
    
    
      }
    
    
     var response = UrlFetchApp.fetch("https://api.sendgrid.com/v3/mail/send",options);
    
    
     Logger.log(response); 
    

    还要确保您在 SendGrid 中创建的 API 密钥具有发送电子邮件所需的所有凭据

    【讨论】:

    • 谢谢,这行得通,只是一些电子邮件正文没有发送。我做了一些搜索,发现 (stackoverflow.com/a/51408775/1899661) 内容/类型应该是“text/html”或“text/plain”。我出于我的目的使用了“text/plain”。
    【解决方案2】:

    对于将来使用事务性电子邮件模板遇到此问题的任何人:

    https://sendgrid.com/docs/ui/sending-email/how-to-send-an-email-with-dynamic-transactional-templates/

    这是发送的功能(类似于 Nikil Mathew 的回答,但用于带有动态数据的交易电子邮件模板):

    export const sendBySendGrid = (toEmail, templateId, dynamicTemplateData) => {
      const headers = {
        Authorization: `Bearer ${process.env.SENDGRID_API_KEY}`,
        'Content-Type': 'application/json',
      }
    
      const body = {
        from: {
          email: process.env.SENDGRID_FROM_EMAIL,
          name: process.env.SENDGRID_FROM_NAME,
        },
        personalizations: [
          {
            to: [
              {
                email: toEmail,
              },
            ],
            dynamic_template_data: dynamicTemplateData,
          },
        ],
        template_id: templateId,
      }
    
      const options = {
        method: 'POST',
        headers,
        payload: JSON.stringify(body),
      }
    
      const response = UrlFetchApp.fetch('https://api.sendgrid.com/v3/mail/send', options)
    
      Logger.log(response)
    }
    

    您可以使用您的 SendGrid 凭据更新 process.env.SENDGRID_API_KEYprocess.env.SENDGRID_FROM_EMAILprocess.env.SENDGRID_FROM_NAME

    【讨论】:

      【解决方案3】:

      以下是目前在 Google Apps 脚本中对我有用的内容,包括在我的 SendGrid 模板中使用动态模板和为“车把”插入动态数据:

      var SENDGRID_KEY ='API_KEY';
      
      var headers = {
        "Authorization" : "Bearer "+SENDGRID_KEY, 
        "Content-Type": "application/json" 
      }
      
      function sendEmail_1() {
        
        var body = {
            "personalizations": [
              {
                "to": [
                  {
                    "email": "test@test.com",
                    "name": "Test Name"
                  }
                ],
                "bcc": [
                  {
                    "email": "test@test.com"
                  }
                ],
                "dynamic_template_data": 
                  {
                    "firstName": "Marco Polo"
                  }
              }
            ],
            
            "from": 
              {
                "email": "test@test.com",
                "name": "Test Name"
              },
            
            "reply_to": {
                "email": "test@test.com"
              },
            
            "template_id":"TEMPLATE_ID" 
          }
        
        var options = {
          'method':'post',
          'headers':headers,
          'payload':JSON.stringify(body)
        }
        
        var response = UrlFetchApp.fetch("https://api.sendgrid.com/v3/mail/send",options);
      }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-22
        • 2013-11-15
        • 1970-01-01
        • 2015-01-28
        相关资源
        最近更新 更多