2010-07-19 9 views
32

iPad에서 보낸 이메일에 대해 인라인 이미지를 생성하고 있습니다. 모든 데스크톱 이메일 클라이언트에서 멋지게 보이지만 gmail은 base64 이미지가 마음에 들지 않아 텍스트로 표시됩니다.Base64 이미지를 Gmail에

누구나 base64와 gmail을 사용하여 이미지를 삽입 할 수 있습니까? 또는 iPad에서 이미지로 HTML 이메일을 보내는 더 좋은 해결책을 알고 있습니까?

+0

이미지의 크기가 문제가 될 것으로 생각합니다. 내 이미지는 1024x768입니다. –

+0

작은 이미지에서도 작동합니까? – ogur

+2

2016 년 현재 더 이상 작동하지 않는 것으로 보입니다. 대신 SRC가 제거되고 대신 'alt' 태그가 사용됩니다. – mix3d

답변

11

Moin Zaman의 링크는 구식 인 테스트 결과를 보여줍니다 (2008 년부터). 오늘 철저한 테스트를 통해 Gmail은 두 가지 방법 모두에 대해 포함 된 이미지를 표시하는 것을 지원합니다.

Message-ID: <[email protected]> 
Accept-Language: en-US 
Content-Language: en-US 
X-MS-Has-Attach: yes 
X-MS-TNEF-Correlator: 
x-originating-ip: [xxx.xxx.xxx.xxx] 

Content-Type: multipart/related; 
    boundary="_038_BE0243A40B89D84DB342702BC5FD6D313EA3BE1BBYMAIL_"; 
    type="multipart/alternative" 
MIME-Version: 1.0 
Return-Path: [email protected] 
X-OriginatorOrg: example.com 

--_038_BE0243A40B89D84DB342702BC5FD6D313EA3BE1BBYMAIL_ 
Content-Type: multipart/alternative; 
    boundary="_000_BE0243A40B89D84DB342702BC5FD6D313EA3BE1BBYMAIL_" 

...skipping Content-Type: text/plain which would be here for this example... 

--_000_BE0243A40B89D84DB342702BC5FD6D313EA3BE1BBYMAIL_ 
Content-Type: text/html; charset="iso-8859-1" 
Content-Transfer-Encoding: quoted-printable 

<html><body><img border=3D"0" width=3D"980" height=3D"230" id=3D"Picture_x0020_1" src==3D"cid:[email protected]"></body></html> 

--_000_BE0243A40B89D84DB342702BC5FD6D313EA3BE1BBYMAIL_-- 

--_038_BE0243A40B89D84DB342702BC5FD6D313EA3BE1BBYMAIL_ 
Content-Type: image/png; name="image001.png" 
Content-Description: image001.png 
Content-Disposition: inline; filename="image001.png"; size=32756; 
    creation-date="Mon, 08 Oct 2012 15:27:07 GMT"; 
    modification-date="Mon, 08 Oct 2012 15:27:07 GMT"; 
Content-ID: <[email protected]> 
Content-Transfer-Encoding: base64 

iVBORw0KGgoAAAANSUhEUgAAA9QAAADmCAIAAAC77FroAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAO 
xAAADsQBlSsOGwAAf5lJREFUeF7tvQlgVdW18L+ZR20mpsSLCYlBQKwgwRCMr9TAqzg0CAl98Y9a 
ikBfHxL1A/r0tUr77Feg1mDav4LUijxTk8hLRIstQ2mJhEiAWAEpNCGRa8KUSQXCzLf2cOZz7j33 
5s5Zx6j3nruHtX97n33WWWfttbtdv36d4IEEkAASQAJIAAkgASSABJCA/wl0938VWAMSQAJIAAkg 
ASSABJAAEkAClAAq3zgOkAASQAJIAAkgASSABJBAgAig8h0g0FgNEkACSAAJIAEkgASQABJA5RvH 
... 

자신의 테스트를 수행하려면 첨부 파일로 이미지 인코딩 <img src="...">

<html><body><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA9QAAADmCAIAAAC77FroAAAAAXNSR0IArs4c6QAAAAlwSFlzAAAO..."</body></html> 

사용 base64로 내

사용 base64 인코딩 이미지 인라인, 당신은 다음 중 하나를 사용하여 인라인 포함 된 이미지와 함께 이메일을 보낼 수 있습니다 기술

같은 이메일 클라이언트에 Google Lab for Inserting Images

  • 붙여 넣기 이미지를 사용하여 Gmail 계정에 위의 중 하나를 사용하여 이메일을 보내, 다음 (Gmail 웹 클라이언트에서 모든 브라우저를 이메일을 열고 그 작품)을 선택하고 답장 버튼 옆에있는 아래쪽 화살표를 사용하여 원본보기 옵션을 선택하십시오. 그러면 수신 방법이 표시됩니다.

    첨부 된 방법으로 첨부 된 이미지를 사용하는 것이 가장 좋습니다.

    Gmail 웹 클라이언트를 사용하여 테스트 한 결과 크기가 다른 하나의 이메일에 30 개의 이미지를 보낸 경우 이미지 컨테이너가 아닌 이미지 컨테이너가 성공적으로로드되지 않습니다. 이런 경우 페이지를 다시로드하십시오.

    내 테스트에서 (Windows 7) ...

    • 크롬 (최신)가 성공적으로로드/모든 30 개 이미지를 보여주기 위해 다시로드의 몇 가지가 필요
    • 오페라 (최신) 성공적 관계없이 다시로드
    • 파이어 폭스의 수를 모두 30 개 이미지를 표시하지 않을 (최신) 지속적으로 문제없이 모든 30 개 이미지를 보여
    • 인터넷 익스플로러 9 (최신) 지속적으로
    • 사파리 (최신)이 지속적으로 문제없이 모든 30 개 이미지를 보여 문제없이 모든 30 개 이미지를 보여
  • +2

    많은 수의 이미지를 테스트했지만 크기가 큰 이미지를 사용하면로드/표시되지 않을 수도 있습니다. Gmail 웹 클라이언트는 삽입 된 이미지가로드/표시되는 데 걸리는 시간에 다소 민감합니다. 브라우저에 다소 의존적이기도합니다. 컴퓨터/네트워크 속도가 영향을 미칠 수 있습니다. 그러나 기본 지원 측면에서 Gmail은 삽입 된 이미지를 지원합니다. 여러 가지/큰 이미지에 대한 Google의 의도적 인 시각적로드 방지 기능이 사용자 환경을 해치는 것으로 나타 났을 수 있습니다. – cusman

    +5

    더 이상 지원하지 않는 것 같습니다 (Gmail) .. src 속성을 제거하고 대신 alt를 추가합니다 .. –

    +20

    오늘 테스트를 통해 Gmail은'data :'URL을 사용하여 이미지를 지원하지 * 않습니다 *. 대신'alt' 텍스트를 사용합니다. – jameshfisher

    2

    Content-Type : multipart/mixed를 설정해야합니다. , 경계 및 내용 전송 인코딩 : base64

    +6

    예를 들려 줄 수 있습니까? –

    +0

    이메일 첨부 파일에 대해 이야기하고 있다고 생각합니다. –

    5

    공식적인 문서는 보이지 않지만 Gmail은이를 인라인 또는 base64의 첨부 파일로 확실히 지원하지 않습니다. 여기

    해당 캠페인 모니터를 테스트 일부는 시도이다 isHTML
    Embedding images in email
    Embedding images revisited

    -9
    MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init]; 
    
    [picker addAttachmentData:UIImageJPEGRepresentation(_tempImage,1) mimeType:mimeType fileName:filename]; 
    
    [picker setMessageBody:emailBody isHTML:YES]; 
    

    경우 YES, addAttachmentData 이메일 HTML에서 base64로 문자열로 자동 변경, 당신은 IMG 볼 수 있습니다.

    isHTML이 NO이면 addAttachmentData이 첨부됩니다.

    +0

    전송 방법이 아닌 수신자에게 문제가 있음 –

    -1

    내가이 첨부

        $output_hex_string_img = $image; 
            $output_bin_string_img = base64_decode($output_hex_string_img); 
            //echo base64_encode($output_bin_string_img); 
            $XXX = base64_encode($output_bin_string_img); 
    
            $from_name = "Senders Name"; 
            $from_mail = "[email protected]"; 
            $replyto = "[email protected]"; 
            $subject = "Device Missing Notification"; 
           $message = "Device Missing notification has been activated on your device. Please change this setting when you find your smartphone back. Best Of Luck!!\r\r "; 
    
    
    
            $mailto = '[email protected]'; 
    
    
    
             $file = $XXX; 
             $filename = "Print_shot.png"; 
             $uid = md5(uniqid(time())); 
             $name = basename($file); 
             $header = "From: ".$from_name." <".$from_mail.">\r\n"; 
             $header .= "Reply-To: ".$replyto."\r\n"; 
             $header .= "MIME-Version: 1.0\r\n"; 
             $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n"; 
             $header .= "This is a multi-part message in MIME format.\r\n"; 
             $header .= "--".$uid."\r\n"; 
             $header .= "Content-type:text/html; charset=iso-8859-1\r\n"; 
             $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n"; 
             $header .= $message."\r\n\r\n"; 
             $header .= "--".$uid."\r\n"; 
             $header .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"; // use different content types here 
             $header .= "Content-Transfer-Encoding: base64\r\n"; 
             $header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n"; 
             $header .= $file."\r\n\r\n"; 
             $header .= "--".$uid."--"; 
             mail($mailto, $subject, "", $header); 
    

    으로 이미지를 포함하는 작업겠습니까 확신하지만 헤더에 다른 콘텐츠 형식을 사용하여 헤더 내부에 모든 것을 포함해야한다 ...이 대화 상대를 사용해보십시오. 그리고 메일 기능의 세 번째 매개 변수가 될 수있는 본문에 나타나는 것은 공백 문자열로 전달됩니다.

    관련 문제