簡體   English   中英

使用環境變量替換電子郵件配置

[英]Redmine email configuration with environment variables

我已經根據redmine Wiki中的說明在redmine上配置了電子郵件,並且一切正常。 這是我的config / configuration.yml文件的內容:

production:
delivery_method: :smtp
 smtp_settings:
    address: "smtp.sendgrid.net"
    port: 587
    authentication: :plain
    domain: "heroku.com"
    user_name: my_email@gmail.com
    password: my_password 

但是我試圖使用環境變量代替my_email@gmail.com和my_password,如下所示:

production:
  delivery_method: :smtp
  smtp_settings:
    address: "smtp.sendgrid.net"
    port: 587
    authentication: :plain
    domain: "heroku.com"
    user_name: <%= ENV['SENDGRID_USERNAME'] %>
    password: <%= ENV['SENDGRID_PASSWORD'] %>

當我嘗試發送測試電子郵件時,在配置文件中包含環境變量,redmine會出現此錯誤:

“發送郵件時發生錯誤(535身份驗證失敗:用戶名/密碼錯誤)”。

因此,我認為erb代碼段沒有被評估(我已經仔細檢查了環境變量的值)。

我一直在尋找解決方案,卻空無一人,有人對我應如何在Redmine中配置電子郵件以使我不會在配置文件中公開sendgrid憑據有任何建議嗎?

或者,如果有人可以告訴我沒有環境變量而直接使用憑據沒有安全風險,那也可以解決我的問題。

我已經在2周前回答了這個問題,並且其他人立即將其刪除。 因此,我不確定是否有人會再次刪除此答案,以防止其他人知道如何解決此問題。 祝好運!

我遇到了同樣的問題,這篇文章在heroku上的Redmine中設置郵件解決了我的問題。

這個想法是將設置從config/configuration.yml移到config/environments/production.rb並使用Ruby代碼進行設置。 由於ENV['key']erb處理,所以我猜configuration.yml不是這樣處理的。 也許有一些安全問題?

因此,在您的情況下,您應該將這些代碼添加到config/environments/production.rb ,如下所示:

ActionMailer::Base.smtp_settings = {
  :address        => 'smtp.sendgrid.net',
  :port           => '587',
  :authentication => :plain,
  :user_name      => ENV['SENDGRID_USERNAME'],
  :password       => ENV['SENDGRID_PASSWORD'],
  :domain         => 'heroku.com'
}
ActionMailer::Base.delivery_method = :smtp

然后從config/configuration.yml刪除代碼,使其看起來像這樣,

default:
  # Outgoing emails configuration (see examples above)
  email_delivery:
    delivery_method: :smtp

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM