动作邮件程序中的默认网址不起作用

Posted

技术标签:

【中文标题】动作邮件程序中的默认网址不起作用【英文标题】:default url in action mailer not working 【发布时间】:2014-05-15 13:53:04 【问题描述】:

我正在我的本地主机上进行测试。这是我的 development.rb 文件的 action_mailer 部分:

config.action_mailer.delivery_method = :smtp

config.action_mailer.smtp_settings = 
    :address   => "smtp.mandrillapp.com",
    :port      => 587,
    :user_name => "my_email@email.com,
    :password  => ENV['MANDRILL_API_KEY'],



config.action_mailer.default_url_options =  :host => 'localhost:3000' 

这里是 action_mailer 文件:

def confirm_email(user, school, email)
   @user = user
   @school = school
   @email = email
   @url  = 'http://example.com/login'
  mail(to: @email, subject: 'Please confirm your additional school email.')
end

这是视图:

<!DOCTYPE html>
<html>
  <head>
    <meta content='text/html; charset=UTF-8' http-equiv='Content-Type' />
  </head>
  <body>
    <h1>Hello <%= @user.first_name %></h1>

    <p>
      To confirm your additional school, <%= link_to "click here", verify_other_school_path(@school) %>.
    </p>
    <p>Thanks and have a great day!</p>
  </body>
</html>

电子邮件正在正常工作并发送。唯一的问题是为链接生成的 html 看起来像:

<a href="http://verifyotherschool/4" target="_blank">click here</a>

而不是应有的方式:

<a href="http://localhost:3000/verifyotherschool/4" target="_blank">click here</a>

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

记住path 是相对的,而url 是绝对的。 而是

  verify_other_school_path(@school)

使用

  verify_other_school_url(@school)

  verify_other_school_path(only_path: false, @school)

并阅读this

【讨论】:

以上是关于动作邮件程序中的默认网址不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Django - 为啥视图中的“默认值”不起作用?

Laravel 默认邮件不起作用

默认路由(控制器/动作)和 css/js 的链接不起作用 cakephp

表单动作在 django 中不起作用

gmail api 发送邮件不起作用 C# 控制台应用程序(身份验证范围不足)

我的程序的动作监听器不起作用