难以配置 SMTP 服务器以发送电子邮件

Posted

技术标签:

【中文标题】难以配置 SMTP 服务器以发送电子邮件【英文标题】:Difficulty configuring SMTP server for sending email 【发布时间】:2019-12-01 17:55:27 【问题描述】:

我想从我自己的服务器而不是 gmail 发送电子邮件,我很难配置环境文件。

当我使用 gmail 凭据时,我可以从我的开发计算机发送电子邮件

  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.delivery_method = :smtp

  host = 'mysite.com'
  config.action_mailer.default_url_options =  host: host, protocol: 'http' 
  Rails.application.routes.default_url_options[:host] = host

  config.action_mailer.perform_caching = false

  config.action_mailer.smtp_settings =  
    address:              'smtp.gmail.com',
    port:                 587,
    domain:               'example.com',
    user_name:            ENV["GMAIL_USERNAME"],
    password:             ENV["GMAIL_PASSWORD"],
    authentication:       'plain',
    enable_starttls_auto: true 

这很好用。但是如果我尝试从我的服务器更改设置,我将无法连接。

  config.action_mailer.smtp_settings =  
    address:              'mail.mysite.com',
    port:                 465,
    user_name:            ENV["MYSITE_USERNAME"],
    password:             ENV["MYSITE_PASSWORD"],
    authentication:       'plain',
    enable_starttls_auto: true 


The configuration for the emails on my server are:

-------------------------
Secure SSL/TLS Settings (Recommended)
Username: test@mysite.com
Password: Use the email account’s password.
Incoming Server: mail.mysite.com
IMAP Port: 993 POP3 Port: 995
Outgoing Server: mail.mysite.com
SMTP Port: 465
IMAP, POP3, and SMTP require authentication.
-------------------------

我可以使用上述设置通过 Thunderbird 连接到服务器,但我无法连接到 Rails。 我使用了正确的用户名和密码。 我不知道我做错了什么。

【问题讨论】:

【参考方案1】:

smtp_settings 地址必须来自电子邮件客户端,例如 Sendgrid 或其他。您当前正在指定自己的域 (mysite.com)。他们应该提供必要的凭据,以便您能够发送电子邮件。

【讨论】:

我有:它们在上面。我认为它与需要 SSL 的端口 465 有关,而我在开发中没有设置。 当然,如果没有https,您将无法使用第三方服务。如果任何第三方服务接受此类请求,我将认真重新考虑使用此类服务​​。 这里是一个 sendgrid 示例:sendgrid.com/docs/for-developers/sending-email/rubyonrails【参考方案2】:

您需要一个服务来发送您的电子邮件,我建议您使用 sendgrid,它的配置非常简单,每月最多 2000 封电子邮件是免费的。并且不在您的环境变量中设置用户名和密码,在凭据文件中设置。

ActionMailer::Base.smtp_settings = 
  :user_name => 'your_sendgrid_username',
  :password => 'your_sendgrid_password',
  :domain => 'yourdomain.com',
  :address => 'smtp.sendgrid.net',
  :port => 587,
  :authentication => :plain,
  :enable_starttls_auto => true

【讨论】:

以上是关于难以配置 SMTP 服务器以发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

Laravel SMTP 邮件未发送

怎么配置SMTP匿名发送邮件服务器

CentOS 7.0怎么配置mail定时发送svn日志邮件

如何在Ubuntu 16.04上安装并配置Postfix作为只发送SMTP服务器

Django发送邮件功能

无法通过SMTP服务器以Java发送邮件