Rails 3.2,如何在邮件发送器中更改 :from 值而不使用默认值(GMail)?

5
我已经建立了一个联系我们的表单,我成功地在我的gApps收件箱中收到了电子邮件。然而,接收到的电子邮件显示网站的默认值:from。我希望它们出现在用户在电子邮件字段中输入的电子邮件地址发送的邮件中。因此,当我点击“回复”时,它将以用户地址作为必须发送电子邮件的地址。
我已经尝试过这个方法,但它并没有起作用。有什么想法吗?
notifications_mailer.rb
class NotificationsMailer < ActionMailer::Base
  default to: "info@hikultura.com"

  def new_contact(message)
      @message = message
      mail(:subject => "[hiKultura.com] #{message.subject}",
        :from => message.email)
  end
end

联系人控制器

class ContactController < ApplicationController

  def new
    @message = Contactmessage.new
  end

  def create
    @message = Contactmessage.new(params[:contactmessage])

    if @message.valid?
      NotificationsMailer.new_contact(@message).deliver
      redirect_to(root_path, :notice => "Message was successfully sent.")
    else
      flash.now.alert = "Please fill all fields."
      render :new
    end
  end

end

更新

我在 Stack Overflow 上找到了类似的案例,关于 :reply_to 和 GMail 的问题。但是,当我点击回复时仍然显示了 :to 邮箱地址。我漏掉了什么?

notifications_mailer.rb

class NotificationsMailer < ActionMailer::Base

   default :from => 'no-reply@mydomain.com'

  def new_contact(message)
      @message = message
      mail(:reply_to => "mierda@hotmail.com",
      :subject => "[mydomain.com] #{message.subject}", 
      :to => "admin@mydomain.com"
      )
  end
end

消息.email返回什么? - John Naegle
我怎么知道呢?我认为它应该能够工作,因为“message.subject”的内容被添加到主题行中。 - Sergio Nekora
你是从哪里调用它的?你传入了什么? - John Naegle
添加了控制器...这可能会使事情更清晰 - Sergio Nekora
好吧...在网上阅读后发现Gmail不允许您覆盖“:from”值...糟糕! - Sergio Nekora
1个回答

5

大多数SMTP提供商(如Gmail等)不允许您从与您登录SMTP服务器的帐户关联的地址以外的地址发送电子邮件,这在您的情况下可能是应用程序中配置的默认发件地址。 从安全/垃圾邮件保护的角度考虑,这是有很多道理的。 您会想要任何人都能够发送一封电子邮件,并将您的电子邮件地址显示为发件地址吗? 我肯定不会。 另一种选择是使用:reply_to。 当您在电子邮件程序中点击回复时,如果存在此选项,则应该使用它。

  mail(:subject => "[hiKultura.com] #{message.subject}",
    :reply_to => message.email)

我同意背后的逻辑。然而,我无法让“reply_to”正常工作。我更新了那部分代码。谢谢。 - Sergio Nekora
您也可以按照 API 文档中所述,仅使用 from 参数。但是,您必须确保您的 SMTP 服务器已正确配置以允许中继,可能需要使用经过身份验证的 SMTP。http://api.rubyonrails.org/classes/ActionMailer/Base.html#method-i-mail - Marcus Ilgner
1
能否在Gmail中实现这个功能?据我所知,Gmail不允许您使用“:from”。 - Sergio Nekora

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接