Redmine4.0.3配置邮件通知

  • Redmine默认未开启邮件通知,需要进行额外的配置。
配置方法
  • 创建配置文件(redmine/config/configuration.yml)。一般在config文件下有一个configuration.yml.example文件,该文件是Reminde提供的例子,直接将copy一份即可。
cd ~/reminde/config/
cp configuration.yml.example configuration.yml
  • 编译configuration.yml
 email_delivery:
    delivery_method: :smtp
    smtp_settings:
      ssl: true  #使用SSL
      address: "smtp.xxx.com"
      port: xxx  #端口号
      authentication: :login
      domain: 'smtp.xxx.com'
      user_name: "linduo@xxx.com"  #账户
      password: "xxxxxx"  #密码
  • 重启Redmine
sudo -s
# 直接kill调redmine进程号即可
kill xxx
# 在redmine根目录输入重启命令 3000为端口号,根据实际情况修改
 ruby bin/rails server webrick -e production -b 0.0.0.0 -p 3000
  • Remind管理页面设置邮件通知。例如,进入remind下述地址:
    http://192.168.xxx.xxx:3000/settings?tab=notifications。然后点击该页面底部“发送测试邮件”进行测试。
# 将邮件发送人地址配置成
linduo@xxx.com
备注
  • Redmine4.0开始。Redmine默认采用的邮件发送方式,都是单独发送。假设,一封邮件需要给10个人发送邮件。会一个人一个人,依次发送。而不是,一封邮件群发10个人。关于这个,有兴趣的可以查看(redmine/app/models/mailer.rb)这个文件,里面定义了邮件通知的方法。
# 以下内容摘自 redmine/app/models/mailer.rb
def self.deliver_issue_edit(journal)
  users  = journal.notified_users | journal.notified_watchers
  users.select! do |user|
    journal.notes? || journal.visible_details(user).any?
  end
  # 依次发送
  users.each do |user|
    issue_edit(user, journal).deliver_later
  end
end

# issue_edit接口实现
def issue_edit(user, journal)
  issue = journal.journalized
  redmine_headers 'Project' => issue.project.identifier,
                  'Issue-Id' => issue.id,
                  'Issue-Author' => issue.author.login
  redmine_headers 'Issue-Assignee' => issue.assigned_to.login if issue.assigned_to
  message_id journal
  references issue
  @author = journal.user
  s = "[#{issue.project.name} - #{issue.tracker.name} ##{issue.id}] "
  s << "(#{issue.status.name}) " if journal.new_value_for('status_id')
  s << issue.subject
  @issue = issue
  @user = user
  @journal = journal
  @journal_details = journal.visible_details
  @issue_url = url_for(:controller => 'issues', :action => 'show', :id => issue, :anchor => "change-#{journal.id}")
  # 发送邮件
  mail :to => user,
    :subject => s
end
Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐