簡體   English   中英

調用流星的Email.send時出現語法錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM