【问题标题】:Why do I need a username & password to send an email to Gmail smtp server为什么我需要用户名和密码才能向 Gmail smtp 服务器发送电子邮件
【发布时间】:2011-11-11 06:10:54
【问题描述】:

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

为什么我的 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

【问题讨论】:

    标签: node.js smtp gmail


    【解决方案1】:

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

    【讨论】:

    • 你是对的!我会尝试使用 mx 记录中的 smtp 服务器。
    【解决方案2】:

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

    过去,任何人都可以完全免费使用 SMTP 服务器,但由于滥用发送不请自来的电子邮件的行为猖獗,许多大型 SMTP 服务器开始只接受注册用户。

    对于 GMail,您将提供您自己的 帐户详细信息。或者,您可以只寻找不需要身份验证的不同 SMTP 服务器。您的虚拟主机通常会为您提供一个。

    【讨论】:

      【解决方案3】:

      垃圾邮件。如果有人可以通过 google 的邮件服务器发帖而无需以一种或另一种方式进行身份验证,那他们就只是一个(大量)垃圾邮件中继。

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

      【讨论】:

      • 所以...每个想要​​向 gmail 用户发送电子邮件的 smtp 服务器都需要一个帐户吗?这太疯狂了:S 当每个 smtp 服务器都需要它时,那么每个 smtp 服务器都需要一个用于每个 smtp 服务器的帐户... WTF?
      • 不仅适用于 gmail,而且是通用的。提供商之间很可能就可能不通过“公共” smtp 主机的批量传输达成了协议。此外,当您从特定 IP/主机发送时,某些提供商不需要显式身份验证(即,当我从连接到该 ISP 的 DSL 调制解调器后面发送时,我的 DSL 提供商不需要传出 SMTP 身份验证) - 但那是仍然是间接“身份验证”的一种。如果我在“互联网”上并想通过他们的 SMTP 主机进行中继,我需要进行身份验证。否则会很糟糕。
      猜你喜欢
      • 2011-12-14
      • 1970-01-01
      • 1970-01-01
      • 2019-01-20
      • 2016-09-07
      • 1970-01-01
      • 1970-01-01
      • 2015-05-10
      • 1970-01-01
      相关资源
      最近更新 更多