5

我已经建立了一个联系我们的表格,我很好地在我的 gApps 收件箱中收到了电子邮件。但是,收到的电子邮件会显示站点的默认 :from 值。我希望他们看起来是从电子邮件用户在他们表单的电子邮件字段中输入的。因此,当我点击“回复”时,它会将用户地址作为必须发送电子邮件的地址。

我试过这个,但它不起作用。知道为什么吗?

通知邮件程序.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

更新

我遵循了我在 SO 中发现的关于 :reply_to 和 GMail 的类似案例。但是,当我点击回复时,仍然显示 :to 电子邮件地址。我错过了什么???

通知邮件程序.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
4

1 回答 1

5

大多数 SMTP 提供商(Gmail 等)不允许您从与您登录到 SMTP 服务器的帐户关联的地址以外的地址发送电子邮件,在您的情况下,这可能是配置的默认地址在您的应用程序中。如果您考虑一下,这对于安全/垃圾邮件保护非常有意义。您是否希望任何人都能够发送一封将您的电子邮件地址显示为发件人地址的电子邮件?我肯定不会。另一种方法是使用 :reply_to。当您在电子邮件程序中点击回复时,如果它存在,它应该使用它。

  mail(:subject => "[hiKultura.com] #{message.subject}",
    :reply_to => message.email)
于 2013-03-19T20:08:18.330 回答