为什么我需要一个用户名&用于向gmail smtp服务器发送电子邮件的密码

时间:2011-09-06 11:25:27

标签: node.js smtp gmail

我想使用node.js创建一个简单的smtp代理,然后收到邮件,然后将它们发送到自定义的Gmail帐户。但是当我连接到gmail smtp服务器时,我需要使用用户名&密码。但是:发件人应该如何知道接收者的用户名和密码?

为什么我的smtp客户端无法在没有此类身份验证的情况下向gmail地址发送电子邮件?

我错过了什么吗?

我的代码:

var tls = require("tls");
var fs = require("fs");

var o = {
    cert:fs.readFileSync("/certificate.pem"),
    key:fs.readFileSync("/key.pem")
};

var c = tls.connect(465,"smtp.gmail.com",o,function(){
    c.once("data",function(d){
        c.write("HELO cloudstudios.ch\r\n");
        c.once("data",function(d){
            c.write("MAIL FROM:<test@cloudstudios.ch>\r\n");

        });
    });
    c.on("data",function(d){
        console.log(d+"");
    });
});

输出:

220 mx.google.com ESMTP u14sm14212124eeh.1

250 mx.google.com at your service

530-5.5.1 Authentication Required. Learn more at
530 5.5.1 http://mail.google.com/support/bin/answer.py?answer=14257 u14sm14212124eeh.1

3 个答案:

答案 0 :(得分:2)

您使用的是错误的服务器。 smtp.gmail.com用于转发Gmail用户的出站电子邮件,并要求他们进行身份验证。发往Gmail用户的入站电子邮件应通过gmail.com的MX记录中指定的服务器进行,​​该服务器不需要身份验证 - 目前最高优先级的服务器是gmail-smtp-in.l.google.com,但是可随时更改。

答案 1 :(得分:1)

你是误会。您需要的是SMTP服务器的一些有效凭据集,告知服务器您实际上已被授权使用它。经过身份验证和授权后,您可以使用SMTP服务器向任何人发送电子邮件。

以前任何人都可以完全免费使用SMTP服务器,但由于滥用发送未经请求的电子邮件,许多大型SMTP服务器已经开始只接纳注册用户。

对于GMail,您将提供您自己的帐户详细信息。或者,您可以只查找不需要身份验证的其他SMTP服务器。您的网站托管服务商通常会为您提供一个。

答案 2 :(得分:1)

SPAM。如果任何人都可以通过谷歌的邮件服务器进行发布,而无需通过这种或那种方式进行身份验证,那么他们只会成为(大规模)垃圾邮件中继。

当您对SMTP服务器进行身份验证时,您不需要收件人的帐户信息,而是需要一些关于您自己的凭据来授权发送/中继。