是否可以通过 Sendgrid 发送没有主题的电子邮件?我尝试将主题字段留空,但收到一条错误消息,上面写着
TypeError: Cannot read property 'map' of undefined
这是我的代码...
var helper = require('sendgrid').mail;
var fromEmail = new helper.Email("[email protected]");
var toEmail = new helper.Email("[email protected]");
//I set the subject to null
var subject = null;
var content = new helper.Content('text/html', "my message");
var mail = new helper.Mail(fromEmail, subject, toEmail, content);
var sg = require('sendgrid')('-----------------');
var request = sg.emptyRequest({
method: 'POST',
path: '/v3/mail/send',
body: mail.toJSON()
});
sg.API(request, function (error, response) {
});
我尝试将主题设置为
null
和"";
,但都返回了错误消息。
有什么想法吗?
您无法通过 API 发送带有空
subject
的电子邮件。请参阅此处的文档:https://sendgrid.com/docs/API_Reference/api_v3.html
如果您向下滚动到主题参数,您会看到它显示:
电子邮件的全局或“消息级别”主题。这可能会被个性化[x].subject 覆盖。 最小长度 1
它还说这是必需的。如果您查看
subject
的 personalization
参数,它可以覆盖电子邮件的主要 subject
,它指向关于主题限制的 SO 答案:电子邮件主题长度限制是什么?
所以基本上该库的编写方式是假设该地图上存在主题并且会出错。
为了测试它,我做了一个像这样的快速卷曲:
curl -X POST \
https://api.sendgrid.com/v3/mail/send \
-H 'authorization: Bearer MYAPIKEY' \
-H 'cache-control: no-cache' \
-H 'content-type: application/json' \
-d '{
"personalizations": [
{
"to": [
{
"email": "[email protected]"
}
],
}
],
"from": {
"email": "[email protected]"
},
"content": [
{
"type": "text/plain",
"value": "Hello, World!"
}
]
}
并得到这样的回应:
{
"errors": [
{
"message": "The subject is required. You can get around this requirement if you use a template with a subject defined or if every personalization has a subject defined.",
"field": "subject",
"help": "http://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/errors.html#message.subject"
}
]
}
我发现发送
"subject": " "
(单个空格)有效地发送了一个空的主题标头。
我通过向我的 GMail 帐户和我自己托管的 smtp 服务器发送消息来进行检查。我预计标题为
Subject:<space><space><newline>
(一个空格分隔符和一个内容空间),但在这两种情况下我都收到了 Subject:<space>\n
,即没有内容。