我想使用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
答案 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服务器进行身份验证时,您不需要收件人的帐户信息,而是需要一些关于您自己的凭据来授权发送/中继。