Ruby/Rails ActionMailer 无法与 NTLM 一起使用

2023-12-03

我正在项目中设置邮件程序,但在通过 Exchange SMTP 服务器发送邮件时遇到困难。

我已经安装了宝石ruby-ntlm但我仍然得到unrecognized authentication type.

这是我的代码

环境.rb

# Load the Rails application.
require File.expand_path('../application', __FILE__)
require 'ntlm/smtp'

# Initialize the Rails application.
Rails.application.initialize!

通知程序.rb

class Notifier < ActionMailer::Base
  default :from => "[email protected]"

  def test
    mail(:to => "stephen.edward[email protected]", :subject => "Test subject").deliver
  end
end

开发.rb

  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    :address => "**REMOVED**",
    :port => 587, 
    :domain => "CMSAD",   
    :user_name => "**REMOVED**", 
    :password => "**REMOVED**", 
    :authentification => :ntlm,
    :enable_starttls_auto => false
  }

Rails 控制台测试

Notifier#test: processed outbound mail in 5591.8ms
Net::SMTPAuthenticationError: 504 5.7.4 Unrecognized authentication type

        from /home/stephen/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/net/smtp.rb:968:in `check_auth_response'
        from /home/stephen/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/net/smtp.rb:739:in `auth_plain'
        from /home/stephen/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/net/smtp.rb:731:in `authenticate'
        from /home/stephen/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/net/smtp.rb:566:in `do_start'
        from /home/stephen/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/net/smtp.rb:519:in `start'
        from /home/stephen/.rvm/gems/ruby-2.1.0/gems/mail-2.6.3/lib/mail/network/delivery_methods/smtp.rb:112:in `deliver!'
        from /home/stephen/.rvm/gems/ruby-2.1.0/gems/mail-2.6.3/lib/mail/message.rb:2141:in `do_delivery'
        from /home/stephen/.rvm/gems/ruby-2.1.0/gems/mail-2.6.3/lib/mail/message.rb:236:in `block in deliver'
        from /home/stephen/.rvm/gems/ruby-2.1.0/gems/actionmailer-4.1.8/lib/action_mailer/base.rb:527:in `block in deliver_mail'
        from /home/stephen/.rvm/gems/ruby-2.1.0/gems/activesupport-4.1.8/lib/active_support/notifications.rb:159:in `block in instrument'
        from /home/stephen/.rvm/gems/ruby-2.1.0/gems/activesupport-4.1.8/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
        from /home/stephen/.rvm/gems/ruby-2.1.0/gems/activesupport-4.1.8/lib/active_support/notifications.rb:159:in `instrument'
        from /home/stephen/.rvm/gems/ruby-2.1.0/gems/actionmailer-4.1.8/lib/action_mailer/base.rb:525:in `deliver_mail'
        from /home/stephen/.rvm/gems/ruby-2.1.0/gems/mail-2.6.3/lib/mail/message.rb:236:in `deliver'
        from /media/development/Foostix-web/app/mailers/notifier.rb:5:in `test'
        from /home/stephen/.rvm/gems/ruby-2.1.0/gems/actionpack-4.1.8/lib/abstract_controller/base.rb:189:in `process_action'
... 15 levels...
        from /home/stephen/.rvm/gems/ruby-2.1.0/gems/railties-4.1.8/lib/rails/commands/console.rb:9:in `start'
        from /home/stephen/.rvm/gems/ruby-2.1.0/gems/railties-4.1.8/lib/rails/commands/commands_tasks.rb:69:in `console'
        from /home/stephen/.rvm/gems/ruby-2.1.0/gems/railties-4.1.8/lib/rails/commands/commands_tasks.rb:40:in `run_command!'
        from /home/stephen/.rvm/gems/ruby-2.1.0/gems/railties-4.1.8/lib/rails/commands.rb:17:in `<top (required)>'
        from /home/stephen/.rvm/gems/ruby-2.1.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:247:in `require'
        from /home/stephen/.rvm/gems/ruby-2.1.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:247:in `block in require'
        from /home/stephen/.rvm/gems/ruby-2.1.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:232:in `load_dependency'
        from /home/stephen/.rvm/gems/ruby-2.1.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:247:in `require'
        from /media/development/Foostix-web/bin/rails:8:in `<top (required)>'
        from /home/stephen/.rvm/gems/ruby-2.1.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:241:in `load'
        from /home/stephen/.rvm/gems/ruby-2.1.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:241:in `block in load'
        from /home/stephen/.rvm/gems/ruby-2.1.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:232:in `load_dependency'
        from /home/stephen/.rvm/gems/ruby-2.1.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:241:in `load'
        from /home/stephen/.rvm/rubies/ruby-2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in `require'
        from /home/stephen/.rvm/rubies/ruby-2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in `require'

然而这有效......

smtp = Net::SMTP.new('**REMOVED**', 587)
smtp.debug_output = $stdout
smtp.enable_starttls_auto#skip if not needed
smtp.start("CMSAD", "**REMOVED**", "**REMOVED**", :ntlm)

TLS connection started
<- "EHLO CMSAD\r\n"
-> "250-**REMOVED** Hello [**REMOVED**]\r\n"
-> "250-SIZE 104857600\r\n"
-> "250-PIPELINING\r\n"
-> "250-DSN\r\n"
-> "250-ENHANCEDSTATUSCODES\r\n"
-> "250-AUTH GSSAPI NTLM LOGIN\r\n"
-> "250-8BITMIME\r\n"
-> "250-BINARYMIME\r\n"
-> "250 CHUNKING\r\n"
<- "AUTH NTLM **REMOVED**==\r\n"
-> "334 **REMOVED**\r\n"
<- **REMOVED**\r\n"
-> "235 2.7.0 Authentication successful\r\n"
 => #<Net::SMTP **REMOVED** started=true>

发现一个错字,现在可以用了!

开发.rb

Change :authentification => :ntlm to :authentication => :ntlm

无论如何,感谢您的支持!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ruby/Rails ActionMailer 无法与 NTLM 一起使用 的相关文章

  • ruby 管道、IO 和 stderr 重定向

    我希望有一个 ruby 程序 一个 rake 任务 观察另一个 rake 任务的输出 输出写入器输出到 stderr 我想读一下这些行 我很难设置它 如果我有一个作家 stdout writer rb 不断打印一些东西 usr bin en
  • 如何在 Ruby 中创建自定义排序方法

    我想指定一个自定义块方法 通过评估两个属性来对对象数组进行排序 然而 经过多次搜索 我没有找到任何没有的例子 lt gt 操作员 我想比较a to b if a x less than b x return 1 if a x greater
  • 为什么我需要 Nginx 和 Puma?

    我正在将 Rails 应用程序部署到生产环境中 看起来 Puma 速度很快 可以处理我想要在网络服务器中完成的许多事情 我想知道我是否需要使用 Nginx 如果只使用 Puma 我会错过什么 Nginx 是一个 Web 服务器 puma 是
  • 设置一个带有 JQuery 掩码的文本字段

    使用 watir webdriver 我尝试设置文本字段的值 browser text field id phoneNumbers value input set 5555551234 当我运行该命令时 我可以看到 watir 找到了该字段
  • RailsAdmin 中具有 join_table 和 has_many :through 的模型的路由错误

    所以我有3个模型 category product category products 这是我的category rb attr accessible name has many category products do def with
  • Capistrano:deploy.rb 文件重构

    我的deploy rb中有以下代码 namespace app do desc copies the configuration frile from shared config yml to config task copy config
  • RSpec 2 中使用 OR 相等

    下面这个例子的正确写法是什么 玩家的分数应等于 5 或 8 it should equal 5 or 8 do player score should 5 or 8 end Thanks Tim 5 or 8将始终产生结果 5 并且不会执行
  • 黄瓜与 RSpec

    我想开始深入研究 BDD 我以前从未使用过 TDD 现在 不确定我是否应该从学习 RSpec 开始 然后跳到 Cucumber 或者直接使用 Cucumber 我一直在互联网上阅读有关两者的内容 在我看来 Cucumber 可能是 RSpe
  • 对范围值进行排序

    我想对表示数值范围的字符串数组进行排序 如下所示 b 0 5 100 250 5 25 50 100 250 500 25 50 使用sort我得到的方法 b sort gt 0 5 100 250 25 50 250 500 5 25 5
  • Rails 中的助手 - 构建 html 字符串时的最佳方法是什么?

    我通常这样写助手 def bloco vazio texto btn args titulo content tag h3 Vazio p content tag p texto content tag div titulo tag hr
  • Rails 4.1 环境变量未重新加载

    我创建了一个application yml文件在配置目录中并添加了一些键值对 即AWS REGION us east 1 我还添加了以下内容application rb读取文件并更新 ENV 哈希 if Rails env developm
  • 自动加载常量时检测到循环依赖

    我将 Rails 从版本 3 1 2 运行良好 升级到 4 0 并遇到以下错误 circular dependency detected while autoloading constant Foo 我创建了一个类ProductFactor
  • 将一幅图像合成到另一幅图像上时,RMagick 透明度不起作用

    在下面的代码中 我尝试在一些山脉的图像上覆盖一个透明的正方形 我认为它会起作用 但是通过设置background color none 它不会使图像透明 结果是左上角有一个黑色方块 所需的结果是黑色方块应该是透明的 require open
  • rake db:migrate db:reset 和 db:schema:load 之间的区别

    和 之间的不同rake db migrate and rake db reset我很清楚 我不明白的是如何rake db schema load与前两者不同 只是为了确保我在同一页面上 rake db migrate 运行尚未运行的迁移 r
  • 如何检查字符串是否为有效日期

    我有一个字符串 31 02 2010 并想检查它是否是有效日期 最好的方法是什么 我需要一个方法 如果字符串是有效日期 则返回 true 如果不是 则返回 false require date begin Date parse 31 02
  • Rails content_for 和yield 之间有什么区别?

    例如 content for stuff vs yield stuff 我知道它们的实现略有不同 但是有任何真正的功能差异吗 是否有普遍接受的最佳实践 yield是您指定内容区域在布局中的位置的方式 你可能有这样的事情 div h1 Thi
  • Gem 在 irb 中可用,但在 Rails 控制台中不可用

    我正在尝试在我的 Rails 项目中使用 RedCloth gem 当我使用irb我可以加载宝石 require rubygems require RedCloth 它工作正常 但是当我在 Rails 控制台中尝试相同的操作时 我收到一条错
  • 使用 Mountain Lion、Xcode 4.5 和 RVM 安装 Ruby?

    rvm install 1 9 3 with gcc clang 根据建议无法使用 RVM 在 Lion 下安装 Ruby GCC 问题 https stackoverflow com questions 8032824 cant inst
  • 如何在 Ruby 中重写 require ?

    我需要覆盖require来自 Ruby 文件 这是我的 start rb 应用程序入口点 所必需的 rubygems在此之前加载 位于 start rb 中 我尝试的所有操作都出现了堆栈溢出错误 正确的做法是什么 一般来说 如果你想修补一些
  • 子域中的 Rails url 助手 - 删除子域

    我网站上的用户可以拥有子域 例如 他们的页面网址是 name example com 登录的用户可以查看更多用户信息 因此在用户的显示页面上 我有一个使用以下代码生成的链接 user url user subdomain gt false

随机推荐

  • 为您的应用程序启用网格/集群的最佳 Java 库是什么? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 这是在服务器集群上运行应用程序的能力 旨在分配负载并提供额外的冗余 我看过一个演示GridGain我对此印象非常深刻 还知道其他人吗 有几个 红陶 开源 基于 Mozilla 公共许
  • 使用工作 numpy 创建 conda env 时遇到问题:“ImportError:无法导入名称 scalarmath”

    我想创建一个 conda env 比如 B 它有一个可用的 numpy 模块 我有一个工作的 miniconda 安装和另一个具有工作 numpy 的 conda env 比如 A 但无论我尝试什么方法 我都无法获得另一个具有工作 nump
  • android-maven-plugin 和资源过滤

    我是 Maven 的新手 并尝试配置它以使用 android maven plugin 构建我的 android 项目 我在资产目录中有一个 application properties 文件 其中包含不同的应用程序设置 我想从我的 pom
  • Spring OpenSessionInViewInterceptor 不起作用

    在渲染视图时 我遇到了休眠和延迟加载的 臭名昭著 问题 正如许多人所说 唯一的两个解决方案是 使方法具有事务性 这并不总是可取的 使用 OpenSessionInViewInterceptor IMO 后者更可取 无论如何 我不确定这个拦截
  • 截断可能包含或不包含 HTML 元素的段落文本的最快方法是什么?

    我需要截断可能包含或不包含 HTML 标签的段落文本 我正在寻找最有效的方法来使用直接 jQuery 或普通 javascript 来完成此操作 您可以在这里看到问题 http jsfiddle net 4BzpY 3 var text T
  • glm::lookAt 当 z <= 0 时垂直相机翻转

    我正在开发 FPS 风格的相机 以使用 OpenGL 在 3D 场景中飞行 我使用 GLM 进行数学计算 并使用鼠标移动在 x 轴和 y 轴上使用 glm rotate 计算方向向量 我有一个静态向上矢量 因为我可以在水平轴上扫射 并且实际
  • 如何仅在我的视图(及其 ngFors 等)更改后才执行代码?

    我正在尝试对充满图像的页面实施 MagnificPopup 解决方案 因为它们是通过 ngFor 渲染的 所以初始化弹出功能的代码在图像渲染之前运行 有没有办法仅在视图完成渲染 或者更好的是 视图内容已更改 时运行代码 我见过在组件的 In
  • 将中间输出分配给临时变量作为 dplyr 管道的一部分

    问 在 R dplyr 管道中 如何将一些中间输出分配给临时变量以便在管道中进一步使用 我下面的方法有效 但它分配到全局框架中 这是不可取的 一定有更好的方法 对吧 我认为涉及注释行的方法会得到预期的结果 没有骰子 很困惑为什么这不起作用
  • 如何使用 fmdb 作为登录页面?

    我有一个登录页面 其中有 2 个用于用户名和密码的文本字段以及一些按钮 我想知道如何使用 fmdb 检查我的数据库中是否存在用户名 密码组合 我还有另一个用于用户注册页面的视图控制器 有 4 个用于用户名 密码 电子邮件 联系电话的文本字段
  • 比较数字进行排序然后得到中值

    使用按位或比较运算符对五个整数进行排序可以通过以下方式实现 首先获取最大的数字 然后获取第二大的数字 然后获取第三大的数字 依此类推 这是我获取最高数字的代码 include
  • 设计通用 CRUD 会话 Bean

    这个问题已经在这里被问过一次简单 CRUD 的 EJB 3 会话 Bean 设计 我只是想就这个设计提出更深入的问题 我已经尝试在原始帖子中提出问题 但是 我没有看到任何回复 所以我决定创建新帖子 所以实现通用CRUD会话bean的Pasc
  • 如何在 GAE (Google App Engine) 中使用 Python main() 函数?

    我想用一个main 我的 GAE 代码中的函数 注意 下面的代码只是一个更大的程序的最小演示 因此需要main 如果我使用以下代码 它将按预期执行 import webapp2 class GetHandler webapp2 Reques
  • ffmpeg 和 SDL 制作的奇怪声音

    我正在关注原始 dranger com ffmpeg 教程的更新版本 https github com mpenkov ffmpeg tutorial 第三步 源码 https github com mpenkov ffmpeg tutor
  • Inno Setup 和 Check 中的两个条件

    我正在为我的应用程序编写一个简单的 Inno 安装脚本 我做了所有我想做的事情 但我阻碍了一些事情 我的应用程序有两种模式 即用户在安装开始时选择的计算机模式和客户端模式 如果选择客户端模式 应用程序必须从 Windows 启动 另外 我的
  • Xcode Swift 如何将图像添加到 UIAlertController 选项? [复制]

    这个问题在这里已经有答案了 我想添加图像 图标UIAlertController就像苹果音乐播放器内的对话框一样 我想要的彩色 大小图像 图标如下图所示 而不是像里面的那样这个问题 我相信它的 ios 11 功能 但我找不到它的文档 就像这
  • Spinner 上的 setPrompt 不起作用[重复]

    这个问题在这里已经有答案了 我对 Android 开发非常陌生 我似乎有一个我无法理解的问题 我有一个微调器 值设置得很好 但我的提示没有出现 我尝试在 xml 和 java 代码中设置它 但都不起作用 以下是我的配置 我觉得我错过了一些基
  • 恢复 gitlab 备份存储库捆绑文件与所有分支

    我需要从 gitlab 备份恢复一些存储库 此备份包含所有存储库的 bundle 文件 如何恢复包含所有分支的完整存储库 如果我跑git bundle list heads myfile bundle我可以看到所有的树枝 我想在本地恢复该存
  • 旋转 UIBarButtonItem

    我想旋转一个UIBarButtonItem 我已经能够做到这一点UIButtons using setTransform CGAffineTransformMakeRotation but UIBarButtonItem没有这个属性 我知道
  • 配置 Jenkins 连接到 BitBucket

    我正在尝试在 Mac Mini 上配置 Jenkins 以便从 BitBucket 存储库中提取 iPhone 应用程序的代码 在 Xcode插件 配置区域中 我尝试添加项目的git地址 但一直失败 经过研究 我似乎必须使用 ssh 部署密
  • Ruby/Rails ActionMailer 无法与 NTLM 一起使用

    我正在项目中设置邮件程序 但在通过 Exchange SMTP 服务器发送邮件时遇到困难 我已经安装了宝石ruby ntlm但我仍然得到unrecognized authentication type 这是我的代码 环境 rb Load t