当前位置: 首页 > 知识库问答 >
问题:

如何通过邮件服务器和nodejs从我的服务器发送电子邮件

韦熙云
2023-03-14

我有一个服务器与静态IP在我的家里,我服务我自己的网页与一个域和所有工作良好。

在我的网页,你可以通过电子邮件和密码注册。当您注册一个名为nodemailer的节点模块,从google帐户发送电子邮件时,问题是google帐户有一个发送电子邮件的限制。

所以我需要将nodemailer模块连接到我自己家里的服务器上。

我在谷歌上搜索,但没有类似的答案。

如何在NodeJS中使用后缀??

http://www.costfix.org/

或者如何与nodemailer一起使用haraka模块

https://github.com/baudehlo/haraka

所以我重复我的问题,我需要发送一封电子邮件从我的服务器到任何电子邮件用户注册在我的网站。

例如...

用户jose@gmail.com在我的网站上注册

nodemailer配置是...

exports.newRegistration=function(parametros,callback)
{
    var mailOptions = 
    {
        from: "<myemailingoogle@gmail.com>",//my email
        to: parametros.useremail,//user email
        subject: 'Welcome '+parametros.useremail+'.',
        html:   '<br><b>Hello</b><br>'+ // html 

    };
    var smtpTransport = nodemailer.createTransport("SMTP",
    {
        service: "Gmail",
        secureConnection: true,
        auth:
        {
            user: "myemailingoogle@gmail.com",
            pass: "7ftera359c28a",
        },
    });
    smtpTransport.sendMail(mailOptions, function(err, response)
    {
        if(err)
        {
            smtpTransport.close();
            console.warn(err);
            return callback(err,null);
        }else{
            smtpTransport.close();
            return callback(null,response);
        }
    });
}

电子邮件发送还可以,但它有一个限制每天。

所以我需要用一个电子邮件服务器来发送我的邮件,没有限制....TNX

编辑2

我使用apt-get安装mailutils

现在我试着

mail mymailin@gmail.com
Cc: // press enter
Subject: Welcome

Hello Mail.

// Ctrl+D

这会向我的邮箱发送电子邮件,而我收到的垃圾邮件来自root@mail.mydomain.com

所以,postfix起作用了,但是我还是不能用emailjs或者NodeMailer发邮件...

当我尝试用emails或nodemailer发送电子邮件时,我会得到以下信息

smtp: '535 5.7.8 Error: authentication failed: generic failure\n'

我在谷歌搜索错误,并且是和身份验证登录错误,我无法登录到系统。所以我尝试使用telnet

telnet localhost 25
ehlo localhost
250-mydomain.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail to: myuserin@gmail.com
501 5.5.4 Syntax: MAIL FROM:<address>
mail from: info@mydomain.com
250 2.1.0 Ok
rcpt to: myuserin@gmail.com
451 4.3.0 <myuserin@gmail.com>: Temporary lookup failure
data
554 5.5.1 Error: no valid recipients
AUTH LOGIN
503 5.5.1 Error: MAIL transaction in progress

我再试一次

220 mydomain.com ESMTP Postfix (Ubuntu)
ehlo localhost
250-mydomain.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
AUTH LOGIN
334 VXNlcm5hbWU6
UbuntuUser
535 5.7.8 Error: authentication failed: another step is needed in authentication

并再次使用root

220 mydomain.com ESMTP Postfix (Ubuntu)
ehlo localhost
250-mydomain.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
auth login
334 VXNlcm5hbWU6
root
334 UGFzc3dvcmQ6
rootPassword
535 5.7.8 Error: authentication failed: another step is needed in authentication

这是日志文件

Jun 20 15:50:16 myname postfix/smtpd[12528]: warning: localhost[127.0.0.1]:             SASL login authentication failed: another step is needed in authentication

就这样...这里面的问题出在哪里???

共有1个答案

马和硕
2023-03-14

我也必须这样做,但我正在Azure虚拟Ubuntu Linux服务器上运行节点服务器。我想如果您运行的是Ubuntu,那么在您的家庭服务器上同样的步骤也会起作用。以下是我发现的工作:

我使用以下指南安装了postfix电子邮件服务器:

https://help.ubuntu.com/community/postfix

一开始看起来很费力,但对我来说很容易。

我发现从node.js发送传出电子邮件的最简单的方法是使用emailjs:

http://github.com/eleith/emailjs.git

我发现发送的电子邮件最后往往被标记为垃圾邮件。为了帮助避免这种情况,您可以转到管理您的域名的任何地方(我使用enom),然后配置一个SPF记录,以帮助您的发送电子邮件看起来合法。

下面是我的node.js模块,用于使用emailJS发送电子邮件:

    var email   = require("emailjs");

    postfixSend = function postfixSend(emailInfo, callback) {

        var server  = email.server.connect({
            user:    "yourEmailAccountUser", 
            password: "yourPassword", 
            host:    "localhost", 
            ssl:     false
        });

        server.send({
            text:    emailInfo.msg, 
            from:    emailInfo.from, 
            to:      emailInfo.to,
            subject: emailInfo.subject
            }, function(err, message) {
                callback(err);
        });

    }

    exports.postfixSend = postfixSend;
 类似资料:
  • 我试图发送电子邮件使用gmail smtp使用javax.mail.下面是我的代码 代码工作正常当我在本地服务器上运行它时,但当我尝试在Elastic beanstek上运行它时(我的服务器在AWS EBS上运行),身份验证失败异常即将到来注意:我已打开从Google A/c设置访问不太安全的应用程序,但我仍然收到此错误 javax.mail.身份验证失败异常:534-5.7.14请通过您的网络浏

  • 我创建了下一个类: 我在我的服务中声明它是一项服务。yml 在我的控制器中,调用服务: 电子邮件已发送,但页面仍在加载30秒,我有一个来自开发人员工具栏的警报:加载Web调试工具栏时发生错误(404:未找到)。您想打开分析器吗?如果接受消息,Symfony分析器不显示任何错误。如果取消,消息开发人员工具栏不会出现。 我做错了什么? 非常感谢。

  • 我正在使用JavaMail API在J中发送电子邮件。如果我在没有代理的情况下通过网络使用它,效果很好,但我们学院使用代理服务器,这就是为什么它在学院不起作用的原因。我认为我们的大学代理服务器只支持HTTP和HTTPS代理,不支持SOCKS代理。我用过 我还试着设置 但它仍然不起作用,出现了类似这样的错误 我知道JavaMail不支持通过web代理服务器访问邮件服务器。请告诉我如何重新爱上它?或者

  • 我可以成功地使用下面的代码从控制器发送电子邮件: 我必须如何修改代码以从服务类使用它?

  • 问题内容: 有没有一种方法可以为PHP 配置WAMP服务器以启用该功能? 问题答案: 从本地主机配置工作的电子邮件客户端是一件很麻烦的事情,我花了数小时无奈地尝试它。我确信更有经验的人可能会提供帮助,或者他们也许会同意我的看法。