【问题标题】:Send email using Nodemailer with GoDaddy hosted email使用带有 GoDaddy 托管电子邮件的 Nodemailer 发送电子邮件
【发布时间】:2017-12-04 19:52:51
【问题描述】:

我正在尝试使用 nodemailer 和通过 GoDaddy 配置的自定义电子邮件地址发送电子邮件。这是 c-panel 中“自定义配置”页面的屏幕截图:

和我的代码:

const nodemailer = require('nodemailer');

var transporter = nodemailer.createTransport({
  service: 'Godaddy',
  secureConnection: false,
  auth: {
    user: 'info@mywebsite.com',
    pass: 'mypassword'
  }
});

var mailOptions = {
  from: 'info@mywebsite.com',
  to: 'otheremail@gmail.com',
  subject: 'Sending Email using Node.js',
  text: 'That was easy!',
  html: '<h1>Welcome</h1><p>That was easy!</p>'
};

transporter.sendMail(mailOptions, function(error, info){
  if (error) {
    console.log(error);
  } else {
    console.log('Email sent: ' + info.response);
  }
});

还有我的错误日志:

{ Error: connect EHOSTUNREACH 173.201.192.101:25
    at Object.exports._errnoException (util.js:1012:11)
    at exports._exceptionWithHostPort (util.js:1035:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1080:14)
    code: 'ECONNECTION',
    errno: 'EHOSTUNREACH',
    syscall: 'connect',
    address: '173.201.192.101',
    port: 25,
    command: 'CONN' }

我尝试更改端口号,使其与非 SSL 相比更安全,使用我的网站地址作为主机,以及我能想到的几乎所有其他内容。我已经使用其中一个 webmail 客户端成功地从 godaddy 电子邮件发送了一封电子邮件。有没有其他人遇到过这种情况或对尝试的事情有建议?

【问题讨论】:

    标签: shared-hosting nodemailer


    【解决方案1】:

    上面提出的解决方案似乎不再有效,它们都不适合我。以下解决方案对我有用:

    const nodemailer = require('nodemailer');
    const os = require('os');
    
    let mailerConfig = {
        host: os.hostname(),
        port: 25,
    };
    let transporter = nodemailer.createTransport(mailerConfig);
    transporter.sendMail({
        from: '<from>',
        to: '<to>',
        subject: '<subject>',
        text: '<text>'
    }, (err, info) => {
        console.log(info);
        console.log(err);
    });
    

    【讨论】:

    • 非常感谢。在过去的两天里,我试图弄清楚这一点,但没有任何效果。我尝试输入共享主机的 IP 地址,但没有成功。如果可以分享,您在哪里找到的?
    • 错误消息有助于解决问题。错误是说我的主机(我输入了我的域名)与主机名不匹配。这足以暗示我需要使用“主机名”的输出。端口 25 来自 Godaddy 关于同一问题的博客文章。
    【解决方案2】:

    我正在尝试使用 GoDaddy SMTP 设置从 Google Cloud Function 使用 nodemailer 发送电子邮件。我的 GoDaddy 主机上没有启用 Office365。今天(2019 年 11 月 12 日),上述选项均不适合我。需要启用 TLS。

    我必须使用以下配置:

    const mailTransport = nodemailer.createTransport({    
        host: "smtpout.secureserver.net",  
        secure: true,
        secureConnection: false, // TLS requires secureConnection to be false
        tls: {
            ciphers:'SSLv3'
        },
        requireTLS:true,
        port: 465,
        debug: true,
        auth: {
            user: "put your godaddy hosted email here",
            pass: "put your email password here" 
        }
    });
    

    然后,我可以发送如下测试邮件:

    const mailOptions = {
                from: `put your godaddy hosted email here`,
                to: `bharat.biswal@gmail.com`,
                subject: `This is a Test Subject`,
                text: `Hi Bharat    
    
                Happy Halloween!
    
                If you need any help, please contact us.
                Thank You. And Welcome!
    
                Support Team
                `,
    
            };
    
    mailTransport.sendMail(mailOptions).then(() => {
                console.log('Email sent successfully');
            }).catch((err) => {
                console.log('Failed to send email');
                console.error(err);
            });
    

    【讨论】:

    • 这很有魅力。一个小时后,我降落在这里。谢谢 !只是为了未来的人们,这也适用于 AWS Lamda。
    • @BharatBiswal,您的代码正在本地主机上运行。但是当我从数字海洋服务器运行它时,它显示连接超时的错误。
    • 请从数字海洋服务器 ping smtpout.secureserver.net。
    • 也为我工作。谢谢!
    • 感谢它运行良好...
    【解决方案3】:

    我意识到这是一篇旧帖子,但由于 GoDaddy SMTP 服务器已更改,因此只是想补充一下,以防万一其他人遇到此问题并遇到与我相同的问题。 @tirmey 的回答对我不起作用,但确实如此。

    let nodemailer = require('nodemailer');
    
    let mailerConfig = {    
        host: "smtp.office365.com",  
        secureConnection: true,
        port: 587,
        auth: {
            user: "username@email.com",
            pass: "password"
        }
    };
    let transporter = nodemailer.createTransport(mailerConfig);
    
    let mailOptions = {
        from: mailerConfig.auth.user,
        to: 'SomePerson@email.com',
        subject: 'Some Subject',
        html: `<body>` +
            `<p>Hey Dude</p>` +
            `</body>`
    };
    
    transporter.sendMail(mailOptions, function (error) {
        if (error) {
            console.log('error:', error);
        } else {
            console.log('good');
        }
    });
    

    【讨论】:

    • 不应再被标记为解决方案,因为它已过时。查看此处提供的其他解决方案
    • 这很好用,唯一的问题是你会遇到错误:` SmtpClientAuthentication is disabled for the Tenant。 ` 此时您必须致电 GoDaddy 支持,他们将为您启用 SMTP 中继。
    • 谢谢埃文。它像魔术一样工作。我打电话给 Godaddy,并要求他们“为该域上的电子邮件地址启用 SMTP 中继”。 5分钟就够了。
    【解决方案4】:

    您应该对您的传输器进行一些更改:

     var smtpTrans = nodeMailer.createTransport({    
        service: 'Godaddy',
        host: "smtpout.secureserver.net",  
        secureConnection: true,
        port: 465,
    
        auth: {
            user: "username",
            pass: "password" 
        }
    });
    

    【讨论】:

    • 为我工作。但将“secureConnection”替换为“secure”
    【解决方案5】:

    此错误最常见的问题是防病毒软件。因此,如果您在本地测试它,请禁用它 10 分钟。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-27
      • 1970-01-01
      • 2015-05-19
      • 1970-01-01
      相关资源
      最近更新 更多