ActionMailer отправлено с недоступным телом - PullRequest
1 голос
/ 12 мая 2010

Итак, я получил почтовую программу ActionMailer

class ReportMailer < ActionMailer::Base
  def notify_doctor_of_updated_document(document)
    recipients  document.user.email_id
    from        "(removed for privacy)"
    subject     "Document #{document.document_number} has been updated and saved as #{document.status}"
    sent_on     Time.now
    body        :document => document
  end
end

и вид

Document
<%= @document.class %>

но при работе

>> d = Document.last
=> #<Document id: "fff52d70-7ba2-11de-9b70-001ec9e252ed", document_number: "ABCD1234", procedures_count: 0, user_id: "630", created_at: "2009-07-28 18:18:07", updated_at: "2009-08-30 20:59:41", active: false, facility_id: 94157, status: "incomplete", staff_id: nil, transcriptionist_id: nil, job_length: nil, work_type: nil, transcription_date: nil, non_trans_edit_date: nil, pervasync_flag: true, old_id: nil>
>> ReportMailer.deliver_notify_doctor_of_updated_document(d)
=> #<TMail::Mail port=#<TMail::StringPort:id=0x8185326c> bodyport=#<TMail::StringPort:id=0x8184d6b4>>

с консоли это печатается в журнале

Sent mail to (removed for privacy)

Date: Tue, 11 May 2010 20:45:14 -0500
From: (removed for privacy)
To: (removed for privacy)
Subject: Document ABCD1234 has been updated and saved as incomplete
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary=mimepart_4bea082ab4ae8_aa4800b81ac13f5


--mimepart_4bea082ab4ae8_aa4800b81ac13f5
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: Quoted-printable
Content-Disposition: inline

Document
NilClass=

--mimepart_4bea082ab4ae8_aa4800b81ac13f5--

1 Ответ

1 голос
/ 23 мая 2012

Пожалуйста, не могли бы вы показать действия вашего контроллера. Один из моих примеров в моей недавней заявке:

class UserMailer < ActionMailer::Base  
  # Submission email
  def submission_batch(batch)
    recipients  batch.user.email
    from        "webmaster@gmail.com"
    subject     "Thank you for submitting a batch"
    body        :batch => batch
  end 
end

Действие / метод контроллера:

def update_samp
    @batch = Batch.find(params[:id])

     respond_to do |format|
       if @batch.update_attributes(params[:batch])
         UserMailer.deliver_submission_batch(@batch)
         flash[:success] = 'Batch and Sample details were successfully stored and an automated email briefing the details have been sent to your email. '
         format.html { redirect_to(@batch) }         
         format.xml  { head :ok }
       else
         format.html { render :action => "sample_production" }
         format.xml  { render :xml => @batch.errors, :status => :unprocessable_entity }
       end
     end
  end

И тогда мой взгляд выглядит следующим образом

Hi <%= @batch.user.name %>
 and further you describe the email 

Теперь есть вещи, которые я хотел бы упомянуть, чтобы проверить.

  1. Проверьте настройки SMTP. Я использую Gmail для отправки почты. У меня есть настройки в среде разработки и производства.

  2. Проверьте имена / написания переменных, которые вы отправляете.

  3. Убедитесь, что файл html.erb имеет то же имя, что и метод, определенный в user_mailer.rb

Надеюсь, эти вещи помогут.

Приветствия

...