ruby-on-rails - ActionMailer 和 Exchange

标签 ruby-on-rails smtp exchange-server actionmailer

我使用我的 Rails 应用程序和我的 Postfix 服务器通过 SMTP 成功发送了邮件。现在我需要移动到 Exchange:Microsoft ESMTP MAIL 服务,版本:6.0.3790.3959,它启用了 POP3 和 SMTP 支持。

我使用 actionmailer 1.2.5,但在尝试发送邮件时无法成功登录到服务器。

如果我使用 Mail.app,发送和接收工作正常,只要我将身份验证模式更改为“密码”即可。检查服务器如下所示:

READ Nov 18 10:37:00.509 [kCFStreamSocketSecurityLevelNone]  -- host:mail.my-mail-server-domain.com -- port:25 -- socket:0x11895cf20 -- thread:0x11b036a10
250-mail.my-mail-server-domain.com Hello [xxx.xxx.xxx.xxx]
250-TURN
250-SIZE
250-ETRN
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-8bitmime
250-BINARYMIME
250-CHUNKING
250-VRFY
250-X-EXPS GSSAPI NTLM LOGIN
250-X-EXPS=LOGIN
250-AUTH GSSAPI NTLM LOGIN
250-AUTH=LOGIN
250-X-LINK2STATE
250-XEXCH50
250 OK

WROTE Nov 18 10:37:00.852 [kCFStreamSocketSecurityLevelNone]  -- host:mail.my-mail-server-domain.com -- port:25 -- socket:0x11895cf20 -- thread:0x11b036a10
AUTH LOGIN

READ Nov 18 10:37:01.848 [kCFStreamSocketSecurityLevelNone]  -- host:mail.my-mail-server-domain.com -- port:25 -- socket:0x11895cf20 -- thread:0x11b036a10
235 2.7.0 Authentication successful.

所以身份验证方法 :login 似乎得到了正确的支持。现在,当谈到我的 actionmailer 配置时,它看起来像这样:

ActionMailer::Base.server_settings = {
    :address => "mail.my-mail-server-domain.com",
    :port => 25,
    :domain => "my-mail-server-domain.com",
    :authentication => :login,
    :user_name => "myusername",
    :password => "mypassword"
}

我一遍又一遍地收到身份验证错误。我也试过改

    :user_name => "my-mail-server-domain.com\myusername"
    :user_name => "my-mail-server-domain.com\\myusername"
    :user_name => "myusername/my-mail-server-domain.com"
    :user_name => "myusername@my-mail-server-domain.com"

但没有任何作用。谁能帮我?

问候。 杰森

最佳答案

我认为你需要添加

ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
  :domain             => "my-mail-server-domain.com",
  :address            => "mail.my-mail-server-domain.com",
  :port               => 25
  :authentication => :login ,
  :user_name          => 'myusername',
  :password           => 'mypassword',
}

ActionMailer::Base.perform_deliveries = true
ActionMailer::Base.raise_delivery_errors = true
ActionMailer::Base.default_charset = "utf-8"
ActionMailer::Base.default_content_type = "text/html"

或尝试更改您的端口。通常端口 25/26 被阻止发送电子邮件,一些电子邮件提供商拒绝从使用本地主机 smtp 的端口 25 接收电子邮件。 或者您的 Internet 提供商可能阻止了端口 25。 如果它仍然不起作用,您可以在此处写下错误。

关于ruby-on-rails - ActionMailer 和 Exchange,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1754819/

相关文章:

c# - 邮件在创建后过早启用 AD 帐户

java - 从 Java 应用程序中检索 MS Exchange Server 的邮件

ruby-on-rails - Rails 使用系统版本的 ruby​​ 而不是 Chruby set default

ruby-on-rails - 在 Rails 3 中在运行时更改语言环境

smtp - 使用Indy smtp时如何避免 "message rejected with no message-id"

Android 应用程序开发 - 直接发送电子邮件,无需 Intent

ruby-on-rails - Puma 发现了这个错误 : Invalid option key: raise_on_unfiltered_parameters

ruby-on-rails - Rails - 带有 Omniauth 和 Koala 的 Facebook : How to renew an expired token

java - 我在使用 Java Mail 发送的电子邮件中丢失了句号

PHP:Microsoft Exchange 问题,PHP 中没有电子邮件正文