簡體   English   中英

我正在嘗試使用process.env和smtp gmail在meteor中發送電子郵件

[英]I am trying to send a email in meteor with process.env and smtp gmail

我使用以下內容發送適用於localhost而不是我的服務器的電子郵件。

// 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而不是meteor而沒有process.env?

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;
    },
});

已安裝的軟件包

在此輸入圖像描述

您需要對您的用戶名和密碼進行URL編碼,否則Meteor會將兩個“@”符號相互混淆。

你可以在你的JS控制台(使用encodeURIComponent(username) )中執行此操作,並且通常會得到類似的結果

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

您可以以相同的方式使用Mailgun,或Mandrill或任何其他smtp提供程序。 它只是導致問題的用戶名格式。

我遇到了類似的問題。 該方法在本地發送電子郵件,但不在托管模數上發送。 就我而言,這是由於一個阻止谷歌安全(從西雅圖訪問我的gmail帳戶,而我住在法國可能看起來很可疑谷歌)。 我瀏覽了幾頁來授權與我的Gmail帳戶建立不太嚴格的連接。 這個頁面上,我看到了堵塞。 所以我允許安全性較低的應用程序允許訪問我的帳戶

如果它可以幫助某人..

只需使用電子郵件包

meteor add email

然后發送電子郵件將有效。 我的配置中使用端口587。

Meteor.startup(function () {
    process.env.MAIL_URL = 'smtp://user%40gmail.com:password@smtp.gmail.com:587';
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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