9

我正在使用以下内容发送适用于本地主机但不适用于我的服务器的电子邮件。

// server
Meteor.startup(function () {
    process.env.MAIL_URL="smtp://uername%40gmail.com:password@smtp.gmail.com:465/"; 
});

我的日志中出现以下错误(谷歌似乎出于某种原因阻止了它,有没有办法阻止它?

[162.243.52.235] 534-5.7.14 Learn more at
534 5.7.14 https://support.google.com/mail/bin/answer.py?answer=78754 l10sm1017845qae.41 - gsmtp
    at SMTPClient._actionAUTHComplete (/opt/meteor/app/programs/server/npm/email/main/node_modules/simplesmtp/lib/client.js:826:23)
    at SMTPClient._onData (/opt/meteor/app/programs/server/npm/email/main/node_modules/simplesmtp/lib/client.js:329:29)
    at CleartextStream.EventEmitter.emit (events.js:95:17)
    at CleartextStream.<anonymous> (_stream_readable.js:746:14)
    at CleartextStream.EventEmitter.emit (events.js:92:17)
    at emitReadable_ (_stream_readable.js:408:10)
    at _stream_readable.js:401:7
    at process._tickCallback (node.js:415:13)

这是我认为发送启动电子邮件发送的事件。我知道meteor现在设置为使用mailgun,有没有办法修改它只使用mailgun而不是没有process.env的meteor?

Template.forgotPassword.events({
    'submit #forgotPasswordForm': function(e, t) {
        e.preventDefault();

        var forgotPasswordForm = $(e.currentTarget),
            email = trimInput(forgotPasswordForm.find('#forgotPasswordEmail').val().toLowerCase());

        if (isNotEmpty(email) && isEmail(email)) {
            Accounts.forgotPassword({email: email}, function(err) {
                if (err) {
                    if (err.message === 'User not found [403]') {
                        Session.set('alert', 'This email does not exist.');
                    } else {
                        Session.set('alert', 'We\'re sorry but something went wrong.');
                    }
                } else {
                    Session.set('alert', 'Email Sent. Please check your mailbox to reset your password.');

                }
            });
        }
        return false;
    },

    'click #returnToSignIn': function(e, t) {
        Session.set('showForgotPassword', null);
        return false;
    },
});

已安装的软件包

在此处输入图像描述

4

3 回答 3

9

您需要对您的用户名和密码进行 URL 编码,否则 Meteor 会将两个“@”符号相互混淆。

您可以在 JS 控制台中执行此操作(使用encodeURIComponent(username)),通常会得到类似的结果

user%40gmail.com:password@smtp.gmail.com:465

您可以以同样的方式使用 Mailgun、Mandrill 或任何其他 smtp 提供程序。这只是导致问题的用户名格式。

于 2014-06-24T16:45:01.317 回答
9

我遇到了类似的问题。该方法发送电子邮件在本地工作,但不适用于托管模块。就我而言,这是由于阻止了谷歌安全(当我住在法国时,从西雅图访问我的 gmail 帐户可能对谷歌来说似乎很可疑)。我浏览了几页来授权与我的 gmail 帐户的不太严格的连接。在此页面上,我看到了阻塞。所以我允许不太安全的应用程序允许访问我的帐户

如果它帮助某人..

于 2015-08-07T10:18:31.963 回答
5

只需使用电子邮件包

meteor add email

然后发送电子邮件将起作用。我的在我的配置中使用端口 587。

Meteor.startup(function () {
    process.env.MAIL_URL = 'smtp://user%40gmail.com:password@smtp.gmail.com:587';
});
于 2014-06-24T16:45:37.440 回答