2011-11-30 51 views
2

有沒有什麼辦法讓rails3.1中的image_tag將圖像轉換成base64格式以便在電子郵件中發送它。在rails64 base64中編碼的image_tag

如果沒有辦法做到這一點,任何人都可以告訴我發送包含存儲服務器端圖像的電子郵件的方式?如果我只是使用image_tag渲染圖像,它們不會顯示在電子郵件中。

attachments['logo.png'] = File.read(Rails.public_path + '/images/logo.png') 

該文件將郵件附件發送:

回答

3

要使用電子郵件中使用附件屬性對郵件發送的文件用郵件發送圖像。要在電子郵件正文上使用此圖片,請使用attachments.inline[],然後在模板image_tag attachments[].url中使用。

另請注意,Rails 3的issue帶有內聯附件,因爲它們存在,所有普通附件在Thunderbird或Outlook等主要電子郵件客戶端中都不可見。

你可以添加內聯附件,你可以在HTML中使用的郵件的寄件人
+0

這是否意味着如果某些圖像存儲在亞馬遜W3服務器中,它們將不會顯示在電子郵件中? – RomanKapitonov

+0

不,只是在這種情況下,你應該把這個文件送到你的服務器去附加。例如'Paperclip'參見[答案](http://stackoverflow.com/a/2391374/698718)。 –

+0

我試圖添加一個像這樣的文件 '@attachments = {} @attachments ['blank'] = File.read(「#{Rails.root +'/app/assets/images/logo.png '}「)' ,但我得到了這樣的錯誤: 'NoMethodError:未定義的方法'在線' 爲#<哈希:0x1051c86c> 從(撬):55:在'daily_email'' 有什麼不好? – RomanKapitonov

2

: 比如你有一個郵件動作send_mail(用戶)

def send_mail(user) 
    attachments.inline['logo.gif'] = File.read("#{Rails.root}/public/logo.gif") 
    mail(:to=>"#{user.name} #{user.last_name} <#{user.email}>", :subject => "Payment received") 
end 

,然後在郵件觀點:文件send_mail.html

<center> <%= image_tag attachments['logo.gif'].url, :alt => "Our logo" -%> </center>