我正在使用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"
}
}
}
}
}
});
}
非常感谢您的帮助。
最佳
答案 0 :(得分:3)
要发送SendGrid交易模板,您有不同的选项
在这种情况下,我们可以使用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
属性被替换为文本模板的 <%body%> ,text
被替换为< HTML模板的strong> &lt;%body%&gt; 。如果html
属性存在,但不存在text
,则生成的电子邮件将仅包含模板的文本版本,而不包含HTML版本。
因此,在您的代码中,您还需要提供html
属性,这就是全部。
这可能是您的服务器代码:
http
您可以使用// 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