【问题标题】:Preventing Spam; Using Nodemailer; Using Sendmail防止垃圾邮件;使用 Nodemailer;使用发送邮件
【发布时间】:2013-07-01 15:41:53
【问题描述】:

我正在使用 Nodemailer Node.js 模块与 sendmail 交互。但是,当通过 Gmail 帐户访问时,我的电子邮件会直接进入垃圾邮件文件夹。为什么我的电子邮件是垃圾邮件?它一定与电子邮件的标题有关,但我不知道它可能是什么。

我不太熟悉电子邮件以及垃圾邮件过滤器寻找什么,所以有人可以提供一些有关注意事项的详细信息吗?

感谢阅读。 :)

【问题讨论】:

    标签: node.js sendmail spam nodemailer


    【解决方案1】:

    这里有几个原因: http://www.codinghorror.com/blog/2010/04/so-youd-like-to-send-some-email-through-code.html

    还有IP地址的黑名单。来自这些的任何内容都将被忽略或视为垃圾邮件。 如果您的电子邮件是从似乎没有链接到发件人地址的服务器发送的,那么您也会遇到潜在的问题。

    检测垃圾邮件并尽量不被视为垃圾邮件都是非常重要的事情。这就是为什么很多邮件列表都是通过专业提供商完成的。

    【讨论】:

      【解决方案2】:

      我也遇到了同样的问题,并且能够通过将“来自”字段更新为这种格式来解决它:

      from: 'Sender Name <some-random-email@gmail.com>'
      

      完整代码:

      let transporter = nodemailer.createTransport({
          host: 'smtp.gmail.com',
          port: 587,
          secure: false,
          requireTLS: true,
          auth: {
              user: 'some-random-email@gmail.com',
              pass: 'pass'
          },
          from: 'some-random-email@gmail.com'
      });
      
      
      const mailOptions = {
          from: 'Sender Name <some-random-email@gmail.com>'
          to: 'some-new-random-email@gmail.com',
          subject: 'Subject',
          text: 'Text'
      };
        
      
      return transporter.sendMail(mailOptions, (error, info) => {
          ...
      });
      

      【讨论】:

        【解决方案3】:

        如果您的 IP 被列入黑名单,您将需要使用第三方电子邮件服务,例如:

        查看他们的文档以了解与您的应用程序的集成。

        【讨论】:

          【解决方案4】:

          data/mail.private - 更改为您的 Open DKIM 私钥文件所在的位置。

          var client = require('nodemailer').createTransport({
              secure: false,
              pool: true,
              host: 'yourdomain.io',
              port: app.nconf.get('mail:port'),
              auth: {
                  user: app.nconf.get('mail:user'),
                  pass: app.nconf.get('mail:pass')
              },
              dkim: {
                  domainName: 'yourdomain.io',
                  keySelector: 'mail',
                  privateKey: require('fs').readFileSync('data/mail.private', {
                      encoding: 'utf8'
                  })
              }
          })
          

          【讨论】:

          • 尝试同时包含一个 dkim 私钥。您需要在您的机器上配置 opendkim 并设置 DNS 记录。 apt-get install open-dkim
          猜你喜欢
          • 2013-09-20
          • 2010-10-19
          • 2011-02-04
          • 1970-01-01
          • 2017-08-31
          • 2012-12-10
          • 1970-01-01
          相关资源
          最近更新 更多