ZOHO 邮件的 Nodemailer

Nodemailer with ZOHO mail

我正在尝试使用 Nodemailer 设置 ZOHO 邮件。邮件配置正确,我使用以下代码发送邮件:

var transporter = nodemailer.createTransport({
    host: 'smtp.zoho.eu',
    port: 465,
    secure: true, //ssl
    auth: {
            user:'info@myaddress.be',
            pass:'supersecretpassword'
    }
});


sendMail = function(req,res) {


var data = req.body;

transporter.sendMail({
    from: data.contactEmail,
    to: 'info@myaddress.be',
    subject: data.contactSubject,
    text: data.contactMsg
});

res.json(data);

};

我联系了官方支持,但到目前为止没有回复。也许这里有人有这方面的经验。问题是,当使用这些设置时,我收到一条消息,指出变量 'data.contactEmail' 中的地址不允许中继。当我将发件人电子邮件也更改为 info@myaddress.be 时,我确实收到了电子邮件,但当然我不知道是谁发送的,也无法回复。

有人知道如何使 'from' 地址与未知地址一起使用吗?喜欢约翰@gmail.com ?

解决方案:

您应该为您的服务器创建一个电子邮件帐户:bot@myaddress.be

当您要转发邮件时,制作一个包含主题和消息的自定义 MAILBODY

var MAILBODY ='\n[suject]:\n'+data.contactSubject+'\n\n[msg]:\n'+data.contactMsg;

因此您将发送原始 contactEmail 作为邮件的主题 并使用邮件的文本(正文)来设置邮件主题和邮件内容。

transporter.sendMail({
    from: 'bot@myaddress.be',
    to: 'info@myaddress.be',
    subject: data.contactEmail,
    text: MAILBODY
});

解决原因:

示例机器人帐户将能够向您自己发送电子邮件,其中包含您真正需要的所有详细信息。 (因为您控制该电子邮件帐户/您的域)

您提供的凭据是针对您自己的帐户的,您正在尝试从未知帐户发送电子邮件。这可能只有在您拥有未知帐户的凭据时才有可能(假设他们允许对其他 clients/apps 进行开放访问)。 您根本无法代表您没有凭据的帐户发送电子邮件。