代码之家  ›  专栏  ›  技术社区  ›  stephenmurdoch

Rails和Gmail-回复功能无法正常工作

  •  1
  • stephenmurdoch  · 技术社区  · 14 年前

    问题1

    我用同一个gmail帐户发送邮件,就像我用它接收邮件一样,因此当我点击“回复”按钮时,gmail会给我自己设置一个新的邮件。。。。

    class Notification < ActionMailer::Base
    
      default :to => ENV['GMAIL_USER']
    
      def hello(contact)    
       mail(
        :from => contact[:email],
        :return_path => contact[:email],
        :subject => "[My Website] << #{contact[:subject]}", 
        :body => contact[:body] )
      end
    end
    

    我当时的印象是 :return_path => contact[:email] 会确保gmail知道该给谁发送回复。。。。显然我错了。有人知道怎么解决这个问题吗?

    大多数的action\u mailer教程都会让我使用 :from => contact.email :from => contact[:email] 就像这样:

      def hello(contact)
          @contact = contact    
          mail(
               :from => contact.email,
               :return_path => contact.email,
               :subject => "[My Website] << #{contact.subject}",
               :body => contact.body
               )
      end
    

    但当我这样做时,会收到以下错误消息:

    undefined method `email' for #<ActiveSupport::HashWithIndifferentAccess:0xdde82f0>
    

    附属物

    FWIW,如果有帮助的话,我的contact模型扩展了一个tables active_record模型,因为我不想使用该数据库,但希望有有效性,所以它看起来像这样:

    #contact.rb
    class Contact < Tabless
      column :name,          :string
      column :email,         :string
      column :body,          :text
      column :subject,       :string      
      # validations go here
    end
    
    # tabless.rb
    class Tabless < ActiveRecord::Base
    
      # create an array of columns
      def self.columns()
        @columns ||= [];
      end
    
      # add new column to columns array
      def self.column(name, sql_type = nil, default = nil, null = true)
        columns << ActiveRecord::ConnectionAdapters::Column.new(name.to_s,
        default,
        sql_type.to_s,
        null)
      end
    
      # override the save method to prevent exceptions
      def save(validate = true)
        validate ? valid? : true
      end
    end
    
    3 回复  |  直到 14 年前
        1
  •  0
  •   aNoble    14 年前

    也许我错过了什么,但你不能 use :reply_to ?

    mail(
     :from => contact[:email],
     :reply_to => contact[:email],
     :subject => "[My Website] << #{contact[:subject]}", 
     :body => contact[:body] )
    

    任何能把邮件作为字符串的方式都应该没问题。 .email

        2
  •  0
  •   Community CDub    8 年前

    我已经通过创建另一个gmail帐户并使用该帐户发送电子邮件来解决了这个问题。现在,当我点击回复按钮时,它会设置一封发送给实际发件人的电子邮件

    This link 解释帮助我理解它

        3
  •  0
  •   Frank    13 年前

    电子邮件回复标题的符号为:“回复”。对于最初的问题,这应该是有效的:

    mail(
    :from => contact[:email],
    :'reply-to'=> contact[:email],
    :subject => "[My Website] << #{contact[:subject]}", 
    :body => contact[:body] )
    

    最近我自己也遇到过这种情况,Gmail重写了邮件的From头。我今天在博客上讨论了解决方案 http://blog.rietta.com/2012/01/rails-gmail-reply-to-on-contact-form.html .

    对我来说,用苹果邮件或谷歌应用程序本身回复电子邮件都很容易。所以回复头似乎被Google的SMTP服务器正确传输了。