2009-05-28 11 views

답변

10

HTML 메일 메시지 작성 방법에 대해 자세히 설명하십시오.

결과는 text/html 부분 (text/plain 형식의 대체 부분을 올바르게 사용하는 경우)과 HTML 내에서 참조되는 여러 이미지가 포함 된 multipart-MIME 메시지입니다.

혼합 MIME 및 관련 데이터 (HTML 소스의 CID 참조)의 content-id에 대한 자세한 내용은 RFC 1813RFC 2378을 참조하십시오.

+1

HTML 및 이미지 부분이 포함 된 멀티 파트 MIME 메시지로 작성됩니다.이 RFC를 올바르게 읽는다면 이미지 첨부 파일에 콘텐츠 ID를 넣은 다음 이미지 소스로 cid : xxx를 사용해야합니다. – user83358

+0

MIME 메시지에 이미 다른 모든 항목이 포함되어 있으면 쉽게 포함 할 수 있습니다. – Lucero

2

개발중인 웹 사이트에서 이메일을 보내려면 서버에 이미지를 보관 한 다음 <img src="url"/>을 사용하여 이미지에 연결하면됩니다.

+13

... 대부분의 최신 메일 응용 프로그램은 사용자가 명시 적으로 확인하지 않는 한 보안상의 이유로 이미지를 표시하지 않습니다. (작은 이미지) 이미지를 삽입하는 것이 메시지가 의도 한대로 표시되는지 확인하는 것이 좋습니다 (또는 더 가능성이 높습니다). – Lucero

+0

@Lucero는 적극적으로 응용 프로그램 동작을 우회하는 것은 금기 사항입니다. 사용자는 해당 기능을 사용하기로 선택했기 때문에 실제로이 기능을 사용하지 못하게하는 데 불쾌감을 줄 수 있습니다. 대부분의 최신 메일 앱은 특정 발신자 (또는 도메인)의 이미지를 항상 볼 수있는 옵션을 제공하므로 사용자가 나중에 이미지를보고 싶은지 여부를 결정할 수 있습니다. –

+1

@ NathanCox, 기능을 우회하는 것은 전혀 아닙니다. 전자 메일 클라이언트는 사용자가 노출되지 않도록 보호하기 위해 이미지를 다운로드하지 않습니다 (웹 주소가 개인화되어있는 경우 보낸 사람이 메일을 읽었을 때 알 수 있고 전자 메일 주소가 여전히 유효하고 사용 중인지 확인할 수 있음). 링크 된 이미지를 표시하지 않는 것은 보안상의 수단이며 이미지를 보는 사용자 환경 설정 (즉, 일부 전자 메일 클라이언트에서는 별도 설정)과 아무 관련이 없습니다. – Lucero

3

나는이 방법

_mime = new MimeMultipart(); 
BodyPart messageBodyPart = new MimeBodyPart(); 
messageBodyPart = new MimeBodyPart(); 
DataSource fds = new FileDataSource("C:\\bgBoletin.jpg"); 

messageBodyPart.setDataHandler(new DataHandler(fds)); 
messageBodyPart.setHeader("Content-ID", "<bgBoletin>"); 
_mime.addBodyPart(messageBodyPart); 

에 그리고 HTM 파일에하고 있어요 갔지 레퍼런스 드의 Content-ID 이런 식으로 배경 : 홈페이지 (CID : bgBoletin).

+0

클래스가 MAIL입니까? ... "MimeMultipart"-> 클래스 활성화를 사용 하시겠습니까? – delive

4

src="cid:bgBoletin" 속성과 동일한 방법으로 img 태그를 사용할 수 있습니다.

3

귀하의 질문에 대한 답변은 스프링 문서 here에 있습니다.

mailSender.send(new MimeMessagePreparator() { 
    public void prepare(MimeMessage mimeMessage) throws MessagingException { 
    MimeMessageHelper message = new MimeMessageHelper(mimeMessage, true, "UTF-8"); 
    message.setFrom("[email protected]"); 
    message.setTo("[email protected]"); 
    message.setSubject("my subject"); 
    message.setText("my text <img src='cid:myLogo'>", true); 
    message.addInline("myLogo", new ClassPathResource("img/mylogo.gif")); 
    } 
}); 

메시지 본문은 다중 메시지의 부분 (a 다중 메시지에 메시지를 설정 MimeMessageHelper 생성자에 참으로 설정 번째 파라미터 주) 중 하나이다.

라인 message.addInline("myLogo"...은 이미지를 멀티 파트 메시지의 다른 부분으로 추가합니다.

.setText을 사용하여 이메일 메시지의 본문 (HTML 콘텐츠)을 설정할 수 있습니다.

태그 cid를 사용하여 여러 부분 이메일 (이미지)의 다른 부분을 참조 할 수 있습니다. img src 속성이 src='cid:myLogo' 인 방법에 유의하십시오. cid는 멀티 파트 메시지의 일부로 전송 된 이미지의 콘텐츠 ID입니다.

+0

클래스 MimeMessage MimeMessageHelper를 게시하거나 직접 .jar을 게시하십시오. – delive

0

옵션 01 :
- 메일에
첨부 파일 "mySignaturePictue.jpg"를 첨부 - 같은 코드 아 파크 몸 (삽입)에서 기준이 첨부 파일 :
<img src="cid:mySignaturePicture.png">

옵션 02 :
- base64로 문자열로 이미지를 변환 : http://www.motobit.com/util/base64-decoder-encoder.asp
-
<img alt="My Image" src="data:image/jpeg;base64,AWWhcalkjsd/beginning/RXhp/of+/long/base64cod/ZgAATU0/+BlaBlubbZ5u8/61a+Xand/much/more..." />
과 같은 코드로 mailtext/HTML 바디에 삽입- 단점 : 대부분의 클라이언트에 의해 차단되어 메일 크기가 증가합니다. https://www.campaignmonitor.com/blog/email-marketing/2013/02/embedded-images-in-html-email/https://www.paperstreet.com/blog/email-marketing-embeded-images-cid-what-a-mess/

관련 문제