2009-01-23 4 views
23

Rails 응용 프로그램에서 이미지와 올바른 형식을 포함하는 전자 메일을 만들고 보내려면 어떻게해야합니까? 당신이 페이스 북과 같은 것에서 얻는 것.레일즈에서 CSS와 이미지로 이메일을 만드는 방법은 무엇입니까?

+0

내 대답이 귀하의 질문에 대한 답변입니까? –

+0

@bjeanes - 나는 다른 것을 바쁘게 먹었으므로 이것을 시도 할 시간이별로 없었습니다. 그러나 해결책이 올바른 방향에있는 것처럼 보입니다. 감사. 시도하고 업데이트 할 것입니다. – Akshay

답변

31

ActionMailer를 사용하여 Rails에서 일반 일반 텍스트 전자 메일을 보내는 방법을 알고 있다고 가정하면 HTML 전자 메일을 작동 시키려면 전자 메일의 콘텐츠 형식을 설정해야합니다.

예를 들어, notifer은 다음과 같습니다

class MyMailer < ActionMailer::Base 
    def signup_notification(recipient) 
    recipients recipient.email_address_with_name 
    subject  "New account information" 
    from   "[email protected]" 
    body   :user => recipient 
    content_type "text/html" 
    end 
end 

참고 content_type "text/html" 라인. 이 메시지는 ActionMailer에게 text/html의 콘텐츠 유형 (기본값 : text/plain) 대신 이메일을 보내도록합니다.

다음 메일러보기 출력을 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이 지원되는 것은 아니지만 텍스트 스타일에 대해 충분한 형식 제어가 있어야합니다.

첨부 된 이메일을 표시하려는 경우 이미지 포함 기능이 약간 복잡합니다. 외부 사이트의 이메일을 단순히 포함하는 경우 보통 HTML처럼 <img /> 태그를 사용할 수 있습니다. 그러나 많은 메일 클라이언트는 사용자가 이미지를 인증 할 때까지 이러한 이미지가 표시되지 않도록 차단합니다. 첨부 된 이미지를 표시하려면 레일스 플러그인 Inline Attachments을 살펴볼 필요가 있습니다. 레일 우편 지원에 대한 자세한 내용은

ActionMailer documentation는 훌륭한 자원

+8

참고 사항 : Gmail은 ** 외부 CSS를 지원하지 않습니다 **. CSS가 Gmail에서 제대로 표시되게하려면 '

text
'과 같은 인라인 스타일을 사용해야합니다. – sscirrus

+2

Roadie를 사용하여 스타일을 자동으로 인라인 할 수 있습니다. https://github.com/Mange/roadie –

+1

Premailer gem은 또한 인라이닝에 매우 유용합니다. 스타일. 또한 Premier를 사용하여 이메일 템플릿/레이아웃에서 사용하기가 매우 간편한 inline_css라는 보석이 있습니다. – scottwb

1

당신이 내 이미지를 저장하기 위해 종이 클립을 사용하는 ActionMailer::Base.asset_host = 'http://www.your-domain.com'

를 정의한 후 이미지의 경우 그냥 일반 image_tag 도우미를 사용할 수 있습니다 그래서 제 경우에는 이것을 사용하여 이메일에 이미지를 추가 할 수 있습니다.

image_tag result.photo.url(:small) 
+0

지금은'config.action_mailer.asset_host'입니다. – elsurudo

관련 문제