26

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

4

2 に答える 2

33

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これは、ActionMailer に、デフォルトの代わりに のコンテンツ タイプで電子メールを送信するように指示しますtext/plain

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

<!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>

ご覧のとおり、HTMLビュー<style>には基本的なスタイルを定義するタグを含めることができます。すべてHTMLCSSはなく、特にすべてのメール クライアントでサポートされていますが、テキスト スタイルの書式設定を十分に制御する必要があります。

添付された電子メールを表示する予定がある場合、画像の埋め込みは少し面倒です。外部サイトからの電子メールを単に含める場合は、<img />通常のようにタグを使用できますHTML。ただし、多くのメール クライアントは、ユーザーが承認するまで、これらの画像の表示をブロックします。添付された画像を表示する必要がある場合は、Rails プラグインのInline Attachmentsを検討する価値があります。

Rails のメーリング サポートの詳細については、 ActionMailer のドキュメントを参照してください。

于 2009-01-23T13:38:11.307 に答える
1

画像については、定義した後に通常のimage_tagヘルパーを使用できますActionMailer::Base.asset_host = 'http://www.your-domain.com'

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

image_tag result.photo.url(:small)
于 2012-08-17T22:37:44.193 に答える