6

以下のコードで間違っていることを誰かが助けてくれることを望んでいました-ほとんどの電子メールクライアント(gmail web、android)で画像が適切にインライン化された状態で電子メールが送信されますが、iphone /では適切にレンダリングされませんipad: 最後に添付された画像のみが表示され、html コンテンツやテキスト コンテンツは表示されません。すべての電子メールクライアントがペイロードを異なる方法で解釈およびレンダリングすることを理解しています.iPhoneで動作させる方法がわかりません.

どんな助けでも大歓迎です!

ルビーコード:

require 'mail'

def inline_body_with_attachments(html, attachments)
    attachments.each do |attachment|
        if (html =~ /#{attachment.filename}/)
            html = html.sub(attachment.filename, "cid:#{attachment.cid}")
        end
    end
    return html
end


mail = Mail.new({
    :from    => "foo@bar.com",
    :to      => "you@gmail.com",
    :subject => "html email with inline images"
})

text_part = Mail::Part.new do
    body "some text"
end

mail.text_part = text_part

# Load the attachments
attachment = "image.png"
mail.attachments[attachment] = File.read(attachment)

inline_html = inline_body_with_attachments("<b>An inline image</b><img src='image.png'/>", mail.attachments)

html_part = Mail::Part.new do
    content_type 'text/html; charset=UTF-8'
    body         inline_html
end

mail.html_part  = html_part
mail.deliver!

メールは次のようになります。

Date: Fri, 24 May 2013 13:58:02 +0000
From: foo@bar.com
To: you@gmail.com
Message-ID: <519f71eab9175_2a1d9e0764742c@foo.com.mail>
Subject: test mail with attachment- raw
Mime-Version: 1.0
Content-Type: multipart/alternative;
 boundary="--==_mimepart_519f71eab2260_2a1d9e076471d6";
 charset=UTF-8
Content-Transfer-Encoding: 7bit



----==_mimepart_519f71eab2260_2a1d9e076471d6
Date: Fri, 24 May 2013 13:58:02 +0000
Mime-Version: 1.0
Content-Type: text/plain;
 charset=UTF-8
Content-Transfer-Encoding: 7bit
Content-ID: <519f71eab3e04_2a1d9e076472b9@foo.com.mail>

some text

----==_mimepart_519f71eab2260_2a1d9e076471d6
Date: Fri, 24 May 2013 13:58:02 +0000
Mime-Version: 1.0
Content-Type: text/html;
 charset=UTF-8
Content-Transfer-Encoding: 7bit
Content-ID: <519f71eab692b_2a1d9e076473d4@foo.com.mail>

<b>An inline image</b><img src='cid:519f71eab047e_2a1d9e07647047@foo.com.mail'/>

----==_mimepart_519f71eab2260_2a1d9e076471d6
Date: Fri, 24 May 2013 13:58:02 +0000
Mime-Version: 1.0
Content-Type: image/png;
 charset=UTF-8;
 filename=image.png
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename=image.png
Content-ID: <519f71eab047e_2a1d9e07647047@foo.com.mail>

iVBORw0KGgoAAAANSUhEUgAAASwAAABaCAYAAAACcWsdAAAXUUlEQVR4nGJk
[.... more image encoding ...]
DhwFowAXGE0go2CQAAAAAAD//wMAFOkCtHNhXPkAAAAASUVORK5CYII=


----==_mimepart_519f71eab2260_2a1d9e076471d6--
4

2 に答える 2

3

iPhoneで作業するには、htmlコンテンツを画像でラップして、独自のマルチパート/関連部分にする必要がありました。

require 'mail'


def inline_body_with_attachments(html, attachments)
    attachments.each do |attachment|
        if (html =~ /#{attachment.filename}/)
            html = html.sub(attachment.filename, "cid:#{attachment.cid}")
        end
    end
    return html
end


mail = Mail.new({
    :from    => "demo@etsy.com",
    :to      => "nkammah@etsy.com",
    :subject => "test mail with attachment- raw4",
    :content_type => 'multipart/alternative'
})

text_part = Mail::Part.new do
    body "some text"
end

mail.add_part( text_part)

other_part = Mail::Part.new do
  content_type 'multipart/related;'
end

# Load the attachments
attachment = "image.png"
#mail.attachments[attachment] = File.read(attachment)
other_part.add_file(attachment)

inline_html = inline_body_with_attachments("<b>An inline image</b><img src='image.png'/>", other_part.attachments)
html_part = Mail::Part.new do
    content_type 'text/html; charset=UTF-8'
    body         inline_html
end
other_part.add_part(html_part)

mail.add_part(other_part)

mail.deliver!
于 2013-05-24T21:51:56.830 に答える
0

これが役立つかどうかはわかりませんが、私はあなたのコードにほぼ従っており、iPhone 5 で動作します。Microsoft Exchange サーバーに送信しています。

require 'mail'

mail = Mail.deliver do
    to 'myaddress@domain.com'
    from 'test@domain.com'
    subject 'Inline Image test'

    add_file './banner.png'

    pic = attachments['banner.png']

    html_part do
        content_type 'text/html; charset=UTF-8'
        body "<img width=597 height=162 id='Banner0' src='cid:#{pic.cid}'>"
    end

end

お役に立てれば。

于 2013-05-24T19:55:32.647 に答える