2012-02-02 3 views
2

私はRailsアプリケーションに問題があります。私は電子メールのHTMLと平文の両方のバージョンを送信できません。注:電子メールは送信されます。しかし、それは正しくスタイルされていません...下の結果へのリンクがあります。RoRの問題ActionMailer - プレーンテキストとHTML電子メールを同時に送信できません。

HTMLを送信する場合は、プレーンテキストの代替も送信することをお勧めします。残念ながら、私のアプリケーションではHTMLとプレーンテキストの両方を送信することができないため、HTMLが非常に奇妙に見えることはありません。ここ

は私のメーラモデルです:

class ProjectMembersMailer < ActionMailer::Base 

    def membership_invitation(membership) 
    @project = membership.project 
    @user = membership.user 

    mail(:subject => %(Invitation to join project #{@project.business_name}), 
      :from => %("App" <[email protected]>), 
      :to  => @user.account.email, 
      :content_type => "text/html") do |format| 
     format.html 
     format.text 
     end 
    end 

end 

マイproject_member_mailerビューは二つのファイルがあります。membership_invitation.html.hamlmembership_invitation.text.erb(第2のファイルは.erbを使用していることに注意してください、私は.haml拡張子に変換しても、してください、一貫性のために同じエラーが出る)

上記のコードを使用して送信しようとしたときの出力の画像です。私はいくつかのテキストを削除したことに注意してください。 screen

基本的に、ファイルのHTMLバージョンの上にテキストバージョンを送信しているようです。このようなことがなくても、平文とHTMLの両方のメールを送信する別の方法はありますか?または、私は何かを逃していますか?これらのメールは同時に送信されないのですか?どんな助けでも大歓迎です。あなたの時間と助けてくれてありがとう!

+2

コンテンツタイプを明示的に設定しないでください。レールでマルチパート/混合に設定する必要があります –

答えて

0

Action Mailer Rails Guideによれば、「フォーマット」メソッドを使用する必要はなく、「コンテンツタイプ」パラメータも削除する必要があります。

mail(:subject => %(Invitation to join project #{@project.business_name}), 
     :from => %("App" <[email protected]>), 
     :to  => @user.account.email) 
0

私は正確に同じ問題を抱えていたし、それができる:

メールはちょうどしようと、自動的にHTMLとテキストテンプレートの両方があることを検出し、自動的にマルチパート/代替

として電子メールを作成します。単純なものをひとつだけ固定してください。 format.htmlをformat.htmlに配置する

def membership_invitation(membership) 
@project = membership.project 
@user = membership.user 

mail(:subject => %(Invitation to join project #{@project.business_name}), 
     :from => %("App" <[email protected]>), 
     :to  => @user.account.email, 
     :content_type => "text/html") do |format| 
    format.text 
    format.html 
    end 
end 
関連する問題