[英]Getting a syntax error when invoking meteor's Email.send
我正在嘗試設置使用流星和Mailgun發送電子郵件。 以前,我使用默認的“流星”選項,如果部署了該應用程序,則發送電子郵件,因此它們自己的方法應該很好。 問題是此應用很可能會在本地運行,因此我需要設置一個smtp服務器。 我正在嘗試使用提供的默認沙箱mailgun,因為我尚不知道我的域是什么,但突然我收到了語法錯誤。 這是流星控制台所說的。 不幸的是,我對此一無所知。 我的代碼只有一部分出現在meteor.methods中。
I20150825-08:50:51.482(2)? Exception while invoking method 'sendEmail' SenderError: Mail from command failed - 501 Syntax error
I20150825-08:50:51.484(2)? at Object.Future.wait (/home/m/.meteor/packages/meteor-tool/.1.1.4.1ih17fx++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/server-lib/node_modules/fibers/future.js:398:15)
I20150825-08:50:51.484(2)? at smtpSend (packages/email/email.js:76:1)
I20150825-08:50:51.484(2)? at Object.Email.send (packages/email/email.js:153:1)
>I20150825-08:50:51.485(2)? at [object Object].Meteor.methods.sendEmail (app/server/methods.js:11:19)
I20150825-08:50:51.485(2)? at maybeAuditArgumentChecks (packages/ddp/livedata_server.js:1617:1)
I20150825-08:50:51.485(2)? at packages/ddp/livedata_server.js:648:1
I20150825-08:50:51.485(2)? at [object Object]._.extend.withValue (packages/meteor/dynamics_nodejs.js:56:1)
I20150825-08:50:51.485(2)? at packages/ddp/livedata_server.js:647:1
I20150825-08:50:51.485(2)? at [object Object]._.extend.withValue (packages/meteor/dynamics_nodejs.js:56:1)
I20150825-08:50:51.485(2)? at [object Object]._.extend.protocol_handlers.method (packages/ddp/livedata_server.js:646:1)
I20150825-08:50:51.485(2)? - - - - -
I20150825-08:50:51.486(2)? at SMTPClient._actionMAIL (/home/m/.meteor/packages/email/.1.0.6.1rj8k8w++os+web.browser+web.cordova/npm/node_modules/simplesmtp/lib/client.js:879:23)
I20150825-08:50:51.486(2)? at SMTPClient._onData (/home/m/.meteor/packages/email/.1.0.6.1rj8k8w++os+web.browser+web.cordova/npm/node_modules/simplesmtp/lib/client.js:329:29)
I20150825-08:50:51.486(2)? at CleartextStream.emit (events.js:95:17)
I20150825-08:50:51.486(2)? at CleartextStream.<anonymous> (_stream_readable.js:765:14)
I20150825-08:50:51.486(2)? at CleartextStream.emit (events.js:92:17)
I20150825-08:50:51.486(2)? at emitReadable_ (_stream_readable.js:427:10)
I20150825-08:50:51.486(2)? at _stream_readable.js:420:7
I20150825-08:50:51.486(2)? at process._tickCallback (node.js:442:13)
更改MAIL_URL變量后,我的問題開始了:
process.env.MAIL_URL = 'smtp://postmaster%40SANDBOX:PASSWORD@smtp.mailgun.org:587';
該錯誤在11:19顯示語法錯誤,在我的文件中是。 在Email.send中
if (Meteor.isServer) {
Meteor.startup(function () {
process.env.MAIL_URL = 'smtp://postmaster%40SANDBOX:PASSWORD@smtp.mailgun.org:587';
});
Meteor.methods({
sendEmail: function (to, from, subject, text) {
check([to, from, subject, text], [String]);
// Let other method calls from the same client start running,
// without waiting for the email sending to complete.
this.unblock();
Email.send({
to: to,
from: from,
subject: subject,
text: text
});
});
}
這是一個以寄存器形式對此方法的示例調用:
Template.register.events({
'submit form': function (event) {
event.preventDefault();
var rEmail = $('[id=registerEmail]').val();
var rPassword = $('[id=registerPassword]').val();
var passwordConfirm = $('[id=passwordConfirm]').val();
var rName = $('#registerName').val();
var rSurname = $('#registerSurname').val();
if (isEmail(rEmail) && areValidPasswords(rPassword, passwordConfirm)) {
var idUser = Accounts.createUser({
email: rEmail,
password: rPassword,
profile: {
'name': rName,
'surname': rSurname
}
}, function (error) {
if (error) {
window.alert(error.reason);
} else {
Router.go("home");
}
}
);
Meteor.call('sendEmail',rEmail,'SentFrom','Subject','Content');
Meteor.setTimeout(function(){Router.go('dashboard')}, 2000);
}
else
return false;
}
});
我使用的是Meteor文檔中提到的確切方法,並且在更改smtp之前有效。
您的from
參數必須采用正確的電子郵件地址格式(“ ******@****.**”),以便發送電子郵件。 現在,您將“ SentFrom”作為發件人地址!
再看一個例子 :
Meteor.call('sendEmail',
'alice@example.com',
'bob@example.com',
'Hello from Meteor!',
'This is a test of Email.send.');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.