使用meteor触发sendgrid模板电子邮件

时间:2017-11-10 07:38:46

标签: meteor sendgrid sendgrid-templates

我正在使用sendgrid发送电子邮件。我想将模板作为电子邮件发送给用户。下面的代码只是发送简单的基于文本的电子邮件,而不是定义标题部分和使用模板ID。

if (Meteor.isServer) {
    Email.send({
        from: "from@mailinator.com",
        to: "abc@mail.com",
        subject: "Subject",
        text: "Here is some text",
        headers: {"X-SMTPAPI": {
            "filters" : {
                "template" : {
                    "settings" : {
                        "enable" : 1,
                        "Content-Type" : "text/html",
                        "template_id": "3fca3640-b47a-4f65-8693-1ba705b9e70e"
                    }
                }
            }
        }
        }



    });
}

非常感谢您的帮助。

最佳

1 个答案:

答案 0 :(得分:3)

要发送SendGrid交易模板,您有不同的选项

1)通过SendGrid SMPT API

在这种情况下,我们可以使用Meteor电子邮件包(正如您所尝试的那样)。

要添加meteor电子邮件包,我们需要输入以下内容:

enum FieldValue {
    case string(String)
    case int(Int)
}

func csvStringToArray(stringCSV: String) -> [[FieldValue]] {

    // create an empty 2-D array to hold the CSV data.
    var dataArray: [[FieldValue]] = []

    // parse the CSV into rows.
    var csvRows: [String] = stringCSV.components(separatedBy: "\n") 

    print(csvRows)
    // ["a,b,c,d,99", "j,k,l,m,98", "w,x,y,z,97", etc]

    // append each row (1-D array) to dataArray (filling the 2-D array).
    for i in csvRows {
        let csvRowValues: [FieldValue] = i.components(separatedBy: ",").map{
            if let value = Int($0) { 
                return FieldValue.int(value)
            }
            return FieldValue.string(value)
        }
    dataArray.append(csvRowValues)
    print(csvRowValues)
    print(dataArray) 
    return dataArray
}

在这种情况下,根据SendGrid docs

  

meteor add email 属性被替换为文本模板的 &lt;%body%&gt; text被替换为< HTML模板的strong> &lt;%body%&gt; 。如果html属性存在,但不存在text,则生成的电子邮件将仅包含模板的文本版本,而不包含HTML版本。

因此,在您的代码中,您还需要提供html属性,这就是全部。

这可能是您的服务器代码

http

2)通过SendGrid Web API v3

您可以使用// Send via the SendGrid SMTP API, using meteor email package Email.send({ from: Meteor.settings.sendgrid.sender_email, to: userEmail, subject: "your template subject here", text: "template plain text here", html: "template body content here", headers: { 'X-SMTPAPI': { "filters": { "templates": { "settings": { "enable": 1, "template_id": 'c040acdc-f938-422a-bf67-044f85f5aa03' } } } } } }); 包来使用SendGrid Web API v3(here docs)。在这种情况下,我们可以使用Meteor http包。

在shell中添加Meteor http包类型:

meteor http

然后在服务器代码中,您可以使用

meteor add http