2011-12-02 5 views
5

누구든지 문제를 지적 해 주시겠습니까?메일 첨부 파일 인라인이 올바르게 표시되지 않습니다.

난 내 레일 3.1 응용 프로그램 우편물에 인라인 첨부 파일을 사용하고 있습니다. 편지에는 또한 아마존 w3 서버에 저장되어있는 이미지가 포함되어 있습니다.

문제는 Gmail이 문자를 올바르게 표시하지 않는다는 것입니다. 편지에 인라인 첨부 파일이 있습니다. 그러나 Gmail은 이러한 파일을 첨부 파일로 표시합니다. 편지에는 편지 자체가 포함 된 html 페이지가 첨부되어 있습니다. 모든 Gmail 디스플레이는 첨부 된 이미지 중 하나의 Base64 버전을 가정하는 심볼 세트입니다.

스크린 샷보기

이미지는 게시자가 here에 올리므로 필요한 등급이 부족하여 게시 할 수 없습니다. 나는 그것을 간단하게하기 위해 세부 사항을 생략 한

-if @image_url 
    = image_tag(attachments['offer_image'].url, :id => 'offer_image', :width => "320", :height => "320") 
-elsif @offer.image.nil? 
    = image_tag(attachments['blank'].url, :id => 'offer_image', :width => "320", :height => "320") 

: 여기

attachments.inline['blank'] = File.read("#{Rails.root.to_s + '/app/assets/images/blank_500x500.png'}") 
attachments.inline['discount-deal-triangle'] = File.read("#{Rails.root.to_s + '/app/assets/images/discount-deal-triangle.png'}") 
mail(:to => @subscriber.email, :subject => subject) 

그리고

뷰 파일의 코드입니다 : 여기

내 메일러의 코드입니다.

내가 뭘 잘못하고 있니?

답변

11

결국 해결책을 찾았습니다. 첨부 파일의 MIME 유형 및 인코딩을 설정하기 만하면됩니다.

attachments.inline['blank'] = { 
           :data => File.read("#{Rails.root.to_s + '/app/assets/images/blank_500x500.png'}"), 
           :mime_type => "image/png", 
           :encoding => "base64" 
           } 
attachments.inline['discount-deal-triangle'] = { 
           :data => File.read("#{Rails.root.to_s + '/app/assets/images/discount-deal-triangle.png'}"), 
           :mime_type => "image/png", 
           :encoding => "base64" 
           } 

그게 나를 위해 속임수였습니다.

5

인라인 배열에서 파일 확장자를 사용하십시오. 예 :

attachments.inline['blank.png'] = 
    File.read(Rails.root.join('app', 'assets', 'images', 'blank_500x500.png') 

레일 파일 mime_typeencoding 추측됩니다 이런 식으로. 최소한 Rails 4.2는 그렇게 할 것이다.

https://stackoverflow.com/a/25810153/2041318을 참조하십시오. 메일러 인라인 이미지에 대한 유용한 도우미 방법을 찾을 수 있습니다.

0

이 질문이 같은 질문이지만 다른 근본 원인을 알았을 때 내 질문부터 언급 할만한 가치가 있습니다.

레일 4를 실행 중이며 Gmail (Outlook365 또는 OSX 메일러 클라이언트가 아님)에 이미지를 표시하는 데 문제가있는 경우 .svg 파일을 표시하려고하지 않는지 확인하십시오. 이 날짜 현재 Gmail에서 지원하지 않으므로 .jpg 또는 .png 대체 메일이 필요합니다.

+0

나는이 문제가 있지만 .jpg 이미지를 사용하고 있기 때문에 Outlook이지만 Gmail이나 Office 365는 아닙니다. 왜 그런지 알고 싶습니까? –

+0

.jpg는 모든 메일 클라이언트에서 지원되어야합니다. 메일 클라이언트가 신뢰 문제로 인해 콘텐츠를 숨기지 않고 있는지 확인 했습니까? SMTP는 콘텐츠 심사에서 제한을 유발할 수 있습니다. – Gemtastic

관련 문제