RailsのCSSと画像を使用してメールを作成するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/472450

質問

Railsアプリケーションから画像と適切なフォーマットを含むメールを作成および送信するにはどうすればよいですか? Facebookから取得したものなどが好きです。

役に立ちましたか?

解決

ActionMailerを使用してRailsから通常の平文メールを送信する方法を知っていると仮定して、HTMLメールを機能させるには、メールのコンテンツタイプを設定する必要があります。

たとえば、通知者は次のようになります。

class MyMailer < ActionMailer::Base
  def signup_notification(recipient)
    recipients   recipient.email_address_with_name
    subject      "New account information"
    from         "system@example.com"
    body         :user => recipient
    content_type "text/html"
  end
end

content_type "text/html"行に注意してください。これにより、デフォルトのtext/htmlではなくtext/plainのコンテンツタイプでメールを送信するようにActionMailerに指示します。

次に、メーラービューの出力をapp/views/my_mailer/signup_notification.html.erbにする必要があります。たとえば、ビューファイル<style>は次のようになります。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <style type="text/css" media="screen">
      h3 { color: #f00; }
      ul { list-style: none; }
    </style>
</head>
<body>
  <h3>Your account signup details are below</h3>
  <ul>
    <li>Name: <%= @user.name %></li>
    <li>Login: <%= @user.login %></li>
    <li>E-mail: <%= @user.email_address %></li>
  </ul>
</body>
</html>

ご覧のとおり、CSSビューには、基本スタイルを定義する<img />タグを含めることができます。すべての<=>と<=>が、特にすべてのメールクライアントでサポートされているわけではありませんが、テキストスタイルを十分にフォーマット制御できることは間違いありません。

添付されたメールを表示する場合、画像の埋め込みは少し巧妙です。外部サイトからのメールを単に含める場合は、通常<=>で行うように<=>タグを使用できます。ただし、多くのメールクライアントは、ユーザーが許可するまでこれらの画像の表示をブロックします。添付された画像を表示する必要がある場合は、Railsプラグインインライン添付は一見の価値があります。

Railsのメールサポートの詳細については、 ActionMailerのドキュメントが優れていますリソース

他のヒント

画像については、image_tag

を定義した後、通常のActionMailer::Base.asset_host = 'http://www.your-domain.com'ヘルパーを使用できます。

Paperclipを使用して画像を保存するため、私の場合はこれを使用してメールに画像を追加できます。

image_tag result.photo.url(:small)

CSSで優れたHTMLメールを作成する方法を読むと、良いスタートです。すべてのメールはHTML 3.0に従う必要があります!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top