5

有没有办法从 Twilio 功能发送电子邮件?我知道我们可以使用 sendgrid。我正在寻找一个更简单的解决方案。

4

2 回答 2

5

Twilio 布道者在这里。

到目前为止,您可以在Twilio Function中使用SendGrid。下面的代码为我完成了这项工作,我只是通过一个函数发送了一封电子邮件

exports.handler = function(context, event, callback) {
    const sgMail = require('@sendgrid/mail');
    sgMail.setApiKey(process.env.SENDGRID_API_KEY);
    const msg = {
      to: 'sjudis@twilio.com',
      from: 'test@example.com',
      subject: 'Sending with SendGrid is Fun',
      text: 'and easy to do anywhere, even with Node.js',
      html: '<strong>and easy to do anywhere, even with Node.js</strong>',
    };
    sgMail.send(msg)
    .then(() => {
        callback(null, 'Email sent...');
    })
    .catch((e) => {
        console.log(e);
    })
};

上述电子邮件很可能以垃圾邮件告终,因为test@example.com它不是一个非常值得信赖的电子邮件地址。如果您想从自己的域发送电子邮件,则需要额外的配置。

要在函数内部运行代码,您必须确保安装邮件依赖项并在函数配置sendgrid/mail中提供 sendgrid 令牌。

Twilio 功能配置

如果您想使用此功能为例如消息提供动力,您必须确保您返回有效的TwiML。:) 当您创建一个新函数时,您将获得展示如何执行此操作的示例。

希望有帮助。:)

于 2019-03-21T17:31:42.123 回答
0

另一种方法是使用 SendGrid API

const got = require('got');

exports.handler = function(context, event, callback) {
  const requestBody = {
    personalizations: [{ to: [{ email: context.TO_EMAIL_ADDRESS }] }],
    from: { email: context.FROM_EMAIL_ADDRESS },
    subject: `New SMS message from: ${event.From}`,
    content: [
      {
        type: 'text/plain',
        value: event.Body
      }
    ]
  };

  got.post('https://api.sendgrid.com/v3/mail/send', {
    headers: {
      Authorization: `Bearer ${context.SENDGRID_API_KEY}`, 
      'Content-Type': 'application/json'
    },
    body: JSON.stringify(requestBody)
  })
  .then(response => {
    let twiml = new Twilio.twiml.MessagingResponse();
    callback(null, twiml);
  })
  .catch(err => {
    callback(err);
  });
 };
};

来源:https ://www.twilio.com/blog/2017/07/forward-incoming-sms-messages-to-email-with-node-js-sendgrid-and-twilio-functions.html

于 2021-08-20T12:37:19.950 回答