我正試圖創建一個應用程序,它將發送風格重的電子郵件,并要求客戶除了谷歌的Gmail之外的工作。我研究了這個問題,看起來Gmail從外部文件中剝離了CSS或者嵌套在“style”標簽中的CSS。有沒有一種簡單的方法可以將樣式從外部文件轉移到內聯文件中?
需要:
<style>
.wide { width: 100px; }
.cell { display: block; }
</style>
<span class="wide cell">Sample</span>
并將其轉換為:
<div class="wide cell" style="width: 100px; display: block;">Sample</div>
謝謝!
這里有幾個寶石你可以看看:
premailer或pre mailer-用于導軌的導軌 郵件樣式 premailer plus(以上版本的分支) 真棒_電子郵件 巡回樂團管理員 在寫這個答案的時候我還沒有贏家,但是premailer似乎是最新的。
添加了前置郵件:
def premailer(message)
message.text_part.body = Premailer.new(message.text_part.body.to_s, with_html_string: true).to_plain_text
message.html_part.body = Premailer.new(message.html_part.body.to_s, with_html_string: true).to_inline_css
return message
end
def welcome(user)
@user = user
message = mail ...
end
你的推理只有一個問題.....許多樣式,甚至內聯樣式,都不被支持。
這里有一個電子郵件支持的參考
在您的示例中,您使用了Outlook 07+不支持的display:標記
我的公司每天發出數千封電子郵件,我經常參與創建這些郵件。實際上,內聯樣式是可行的,但是這并不像內聯所有東西那么簡單,而且它也是可行的。你必須非常小心你使用的東西和你如何使用它。我已經決定回到我的起點,用純HTML做幾乎所有的事情,用表格做布局。這基本上是我發現的唯一能讓事情100%正常運轉的方法。
如果你正在把這個功能構建到一個會被大量使用的應用中,我也強烈推薦通過他們的API在Acid上構建電子郵件。雖然您可以編寫出質量非常好的輸出,但微軟無疑會找到一些方法讓您的有效代碼不起作用。Acid上的電子郵件將使用微軟正在使用的任何瘋狂方式進行渲染,同時向您展示您的電子郵件是否有效。這是純粹的天才,對于那些認真發送大量電子郵件的人來說是必須的。不,我不為公司工作....