我尝试使用带有Azure移动服务的SendGrid发送电子邮件。我在这里使用示例代码作为参考:
http://azure.microsoft.com/en-us/documentation/articles/store-sendgrid-nodejs-how-to-send-email/
exports.post = function(request, response) {
var SendGrid = require('sendgrid');
var toEmail = 'myemail@mydomain.com';
var mail = new SendGrid.Email({
to: toEmail,
from: toEmail,
subject: 'Hello SendGrid',
text: 'This is a sample email message.'
});
var sender = new SendGrid('my_user','my_ key');
};
我收到了一个创建发件人的TypeError。 Email对象按预期创建。我不确定我做错了什么。从查看sendgrid.js中的代码,导出看起来是正确的。有什么想法吗?
这是错误:
脚本错误' /api/my_api.js'。 TypeError:object不是函数
注意: 我已经使用npm
添加了sendgrid来自sendgrid.js
var Sendgrid = function(api_user, api_key, options) {
}
module.exports = Sendgrid;
答案 0 :(得分:1)
根据github文档:
var sendGrid = require('sendgrid')('my_user', 'my_key');
var mail = new sendGrid.Email({
to: toEmail,
from: toEmail,
subject: 'Hello SendGrid',
text: 'This is a sample email message.'
});
答案 1 :(得分:0)
sendgrid.Email
是通过实例化模块返回的对象的方法。要访问sendgrid.Email
,您必须通过要求SendGrid来调用返回的函数。
您的代码应如下所示:
exports.post = function(request, response) {
var sendgrid = require('sendgrid');
var sender = new sendgrid('my_user','my_ key');
var toEmail = 'myemail@mydomain.com';
var mail = new sender.Email({
to: toEmail,
from: toEmail,
subject: 'Hello SendGrid',
text: 'This is a sample email message.'
});
};
编辑:更正的方法名称。
答案 2 :(得分:0)
未正确导入SendGrid包。我被抛弃了错误,因为正确创建了Email对象。
我重新检查了我的package.json并用npm install更新了项目。一切都开始了。
答案 3 :(得分:0)
上面的一些答案对我有所帮助,但我仍然需要弄清楚这一点。
这是我使用sendgrid修复对象时不是函数错误。这显然是特定于版本的,因此您可能需要根据您使用的sendgrid版本调整版本号。
在azure移动服务项目的package.json文件中添加sendgrid作为依赖项。
“依赖项”:{ “sendgrid”:“^ 1.9.2” }, “devDependencies”:{ “sendgrid”:“^ 1.9.2” },
https://github.com/sendgrid/sendgrid-nodejs的指示清楚地说明了这一点,但不知怎的,我忽略了它。