ruby 如何在Gitlab上调试电子邮件发送?

9udxz4iz  于 2023-11-18  发布在  Ruby
关注(0)|答案(5)|浏览(151)

我的Gitlab(版本5)没有发送任何电子邮件,我迷失了方向,试图弄清楚发生了什么。日志给予没有有用的信息。我将其配置为使用sendmail
我写了一个小的脚本,它通过Mailer发送电子邮件(我猜这是gitlab用来发送电子邮件的,对吗?)。它正确地发送电子邮件。
但是,在我的Gitlab上,我可以保证sendmail甚至没有被调用。
我是否需要启用某些功能才能获得电子邮件通知?如何调试我的问题?

更新

问题是我在任何地方都找不到任何信息。这件事只是默默地失败了。我在哪里可以找到某种日志?log目录中的日志没有提供任何有用的信息。
我的问题是,如何让Gitlab更详细?如何让它告诉我发生了什么?

更新二

我刚刚发现很多邮件安排在Background jobs部分。很多未处理的Sidekiq::Extensions::DelayedMailer。这是什么意思?为什么这些工作没有处理?

ppcbkaq5

ppcbkaq51#

今天偶然发现了这个问题,这是我的研究:
GitLab GUI中的SMTP连接尚不支持。但是有一个挂起的功能请求和command line solution
设置所需的SMTP设置/etc/gitlab/gitlab.rb并运行gitlab-ctl reconfigure(请参阅https://docs.gitlab.com/omnibus/settings/smtp.html)。
启动运行gitlab-rails console -e production的控制台。
显示运行ActionMailer::Base.delivery_method命令的配置的传递方法(应该是:smtp)。显示运行ActionMailer::Base.smtp_settings的所有配置的SMTP设置。
发送测试邮件运行

Notify.test_email('[email protected]', 'Hello World', 'This is a test message').deliver_now

字符串
在GitLab的管理页面上,»Background jobs«部分显示了所有作业的信息。失败的SMTP连接也会在那里列出。
请注意,您可能需要重新启动GitLab示例才能使用新配置的SMTP设置(在我的示例上,控制台能够发送邮件,GUI需要重新启动)。运行gitlab-ctl restart重新启动示例。

35g0bw71

35g0bw712#

首先,我会告诉我的问题是什么:sidekiq负责处理发送电子邮件。由于某种原因,我的sidekiq卡住了,重新启动它解决了问题。
我在Gitlab上发现的问题的信息:
1.日志目录。它有一些信息。
1.在管理页面上,“后台作业”部分提供了有关sidekiq的信息。

  1. JavaScript控制台(如果你的浏览器支持它)也有有用的信息。只有当你的问题与javascript有关时。
    1.如果你达到了这一点,你可以修改Gitlab的代码,这样你就可以“跟踪它”写入一个文件:
    第一个月
bbuxkriu

bbuxkriu3#

也许可以尝试在生产模式下启用交付错误,看看会发生什么

config.action_mailer.raise_delivery_errors = true

字符串

hts6caw3

hts6caw34#

在后台作业下的管理部分,如果您在计划选项卡中有很多项目,请尝试重新启动sidekiq

cd /home/git/gitlab    
exec rake sidekiq:start RAILS_ENV=production

字符串

b4lqfgs4

b4lqfgs45#

我也遇到了同样的问题,虽然我不建议修改GitLab源代码,但我可以用application.rb的mod进行调试:

diff --git a/config/application.rb b/config/application.rb
index d85bcab..274976f 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -11,6 +11,8 @@ end

 module Gitlab
   class Application < Rails::Application
+    config.action_mailer.sendmail_settings = { :arguments => "-i" }
+
     # Settings in config/environments/* take precedence over those specified here.
     # Application configuration should go into files in config/initializers
     # -- all .rb files in that directory are automatically loaded.

字符串
注意:我运行的是Debian 7,它使用exim来处理邮件。

**2023年10月更新:**我不希望在生产环境中这样做,这是9年前完成的......在GitLab拥有今天的选项之前。请查看GitLab文档,您的里程可能会有所不同。

相关问题