2010-03-28 3 views
3

내 앱에서 3.0 + MFMailComposeViewController 인 HMTL 이메일 메시지를 작성 중입니다. 이렇게하려면 일부 자리 표시자를 사용하여 HTML 파일을 만들었습니다. 코드에서 HTML 파일을 읽었으며 replaceOccurrencesOfString으로 자리 표시자를 응용 프로그램의 데이터로 바꿉니다. 그런 식으로, 내가 보내려는 이메일의 본문을 작성합니다. 내 HTML 파일에 <img src='imageplaceholderpath' /> 태그가 있다는 사실을 제외하고는이 모든 것이 매우 훌륭하게 작동합니다. 어쨌든, 내 애플 리케이션에 상주하는 이미지를 참조하려면 이걸 대체해야 할 부분이 무엇인지 모르겠다. imageplaceholderpath. 이것이 유효한 접근 방법인가요? 그렇다면 경로에 숨겨진 구문/논리는 무엇입니까? 귀하의 통찰력에 감사드립니다! 감사합니다. SjakelieniPhone에 로컬 이미지 표시 HTML 메일

답변

0

일반 이메일 클라이언트와 같은 방식으로 이미지를 이메일의 일부로 포함시킬 수 있다고 생각하지 않습니다. 그러나 이미지 데이터를 base64로 인코딩 된 데이터로 HTML에 직접 포함 할 수 있습니다. 이는 일을하는 데있어 비표준 방식이므로 이메일이 모든 이메일 클라이언트에 완벽하게 표시되지 않을 수 있습니다.

은 이상 this question 참조 및 this forum post

0

HTML 형식은 당신이 있어야하지만, 실제로는 단지 첨부 파일로 이미지, HTML을 사용없이 을 달성 할 수있는 이메일에 이미지를 삽입해야하는 경우 나도 몰라.

http://iphone-dev-tips.alterplay.com/2009/11/attaching-image-of-uiview-to-email.html

중요한 부분은 이것이다 :

 
// ATTACHING A SCREENSHOT 
NSData *myData = UIImagePNGRepresentation(screenshot); 
[controller addAttachmentData:myData mimeType:@"image/png" fileName:@"route"]; 
당신은 당신의 UIImage (NSData 등)의 PNG 표현을 취득하고

은 그냥이 여기 달성 방법을 살펴 가지고 이메일을 첨부하십시오.

+0

메시지의 텍스트 서식을 제어하려고하므로 HTML이 필요하다고 생각합니다. 더 중요한 것은 이미지가 텍스트의 특정 위치에 인라인으로 나타나기를 원합니다. – Sjakelien

3

data: URI를 사용하면 모든 메일 클라이언트에서 작동하지 않습니다. 렌더링 엔진으로 IE를 사용하는 사용자는 IE8이 설치되어 있지 않으면 전혀 지원하지 않습니다. 그렇더라도 according to Wikipedia, data: URI는 최대 32KB로 제한됩니다.

이 작업을 수행하는 가장 간단한 방법은 이미지를 자신의 서버에 어딘가에 배치하고 전체 http : // URI를 사용하여 이미지를 참조하는 것입니다. 어떤 이유로 든 이미지를 생성 할 수 없다면 이미지를 MIME 하위 부품으로 첨부하고 HTML에서 참조 할 수 있습니다.

내 메일 클라이언트는 원격 이미지를 자동으로로드하지 않지만 일부 스팸은 이미지를 열었을 때 여전히 이미지를 가지고 있습니다. 다음과 같이 작동합니다.

yonel이 제안한대로 메일에 이미지를 첨부하십시오. 어쨌든 Content-ID: 헤더를 하위 파트에 추가해야합니다. 이 헤더의 내용은 이미지의 src 속성으로 사용됩니다.같은

<img src="cid:[email protected]"> 

부착 하위 부분은 같습니다 : 내 스팸 메시지가 HTML에서 다음과 같습니다

Content-Type: image/jpeg; 
    name="image001.jpg" 
Content-Transfer-Encoding: base64 
Content-ID: <[email protected]> 

addAttachmentData:mimeType:fileName:에 대한 설명서를 보면, 내 생각 엔 당신이 할 수없는 것입니다 이것을 작동 시키려면 원시 SMTP를 사용하여 전자 메일을 보내도록 고려해야합니다.