Inline embedding
인라인 임베딩 방법은 이미지를 base64로 인코딩 하는 방법이다. 쉽게 말하면 이메일에 이미지를 문자열로 변환하여 HTML 태그를 통해 이메일에 이미지를 내장하는 방법이다. 굉장히 간단하지만 잘 사용하지는 않는다. 이메일
<img src="data:image/png;base64,iVBADGJHAHFDKJFOIHWIUFHI183uHkjnaksdj01293AASJHKDBIASBDIAHDIUHQWIOUDHNHSBNDAdsCAMAAABThmYtA" alt="img" />
대략 이런식으로 첨부할 수 있다. 하지만 메일이 무거워지고(용량이 커짐) 대부분의 포털사이트들은 base64로 인코딩하여 이미지를 임베딩하는 것을 차단한다. 그러므로 PASS!
출처: https://zangzangs.tistory.com/46 [장장스:티스토리]
💡SMTP(Simple Mail Transfer Protocol)는 이메일을 전송하는 데 사용되는 인터넷 표준 프로토콜
SMTP의 주요 특징
1. 이메일 전송 프로토콜: 클라이언트가 작성한 이메일을 메일 서버로 보내거나, 서버 간에 이메일을 전달하는 역할을 합니다.
2. 포트 번호:
일반적으로 포트 25: 기본 SMTP 포트 (일반적으로 메일 서버 간 전송에 사용)
포트 465: SSL을 사용하는 SMTP (보안이 강화된 버전)
포트 587: STARTTLS를 사용하는 SMTP (일반적인 보안 메일 전송에 사용)
3. SMTP 서버 역할:
- 사용자가 이메일을 작성하여 "보내기"를 누르면, SMTP 서버가 이를 수신하여 상대방의 이메일 서버로 전달합니다.
- 수신 측에서는 POP3 또는 IMAP을 이용하여 이메일을 다운로드하거나 조회할 수 있습니다.
SMTP 작동 방식
1. 사용자가 이메일을 작성하고 보내기 버튼을 누르면, SMTP 클라이언트(이메일 프로그램)가 SMTP 서버에 연결합니다.
2. SMTP 서버는 이메일의 수신자 주소를 확인하고, 적절한 경로를 통해 수신자의 메일 서버로 이메일을 전달합니다.
3. 수신자의 이메일 서버는 이메일을 저장하고, 사용자가 POP3 또는 IMAP을 통해 이메일을 읽을 수 있도록 합니다.
즉, SMTP는 이메일을 "보내는" 역할을 담당하는 프로토콜이며, 수신된 이메일을 관리하는 프로토콜은 POP3(Post Office Protocol 3) 또는 IMAP(Internet Message Access Protocol) 입니다.
블로그 글 요약:
자바에서 SMTP를 사용하여 이메일에 이미지를 첨부하는 세 가지 방법
- Inline Embedding: 이미지를 Base64로 인코딩하여 이메일 본문에 직접 포함시키는 방법입니다. 그러나 이 방식은 이메일 용량을 증가시키고, 많은 이메일 서비스 제공자들이 보안상의 이유로 이를 차단하므로 일반적으로 권장되지 않습니다.
- CID(Content-ID): 이 방법은 이메일에 이미지를 첨부한 후, HTML 본문에서 <img> 태그의 src 속성에 cid:이미지ID를 지정하여 본문 내에 이미지를 표시합니다. 로컬 환경에서는 정상적으로 작동할 수 있으나, 실제 서버 환경이나 일부 이메일 클라이언트에서는 이미지가 제대로 표시되지 않는 문제가 발생할 수 있습니다.
- Linked Images: 이 방법은 이메일 본문의 <img> 태그에 외부 서버에 호스팅된 이미지의 URL을 직접 링크하는 방식입니다. 예를 들어
<img src="https://example.com/image.png" alt="img" />
이 방법은 구현이 간단하지만, 이미지를 호스팅할 수 있는 공개된 서버가 필요합니다. 또한, Gmail과 같은 일부 이메일 서비스는 외부 이미지를 차단하거나 프록시를 통해 로드하므로, 이미지가 제대로 표시되지 않을 수 있습니다.
추가로, Outlook과 같은 일부 이메일 클라이언트는 보안 설정으로 인해 이러한 이미지 첨부 방식을 제한하거나 차단할 수 있으므로, 수신자의 이메일 클라이언트 특성을 고려하여 적절한 방식을 선택하는 것이 중요합니다.
https://zangzangs.tistory.com/46
[JAVA] SMTP 메일 이미지 첨부 방법 3가지
SMTP 메일 이미지 첨부 에러 자바로 메일을 보내야하는 일이 생겨 SMTP를 사용해 메일을 보내는 코드를 작성했다. 메일내에 이미지를 첨부해서 전송해야 했고 CID 방식을 사용해서 코드를 작성했다
zangzangs.tistory.com
'공부 > Java' 카테고리의 다른 글
소프트 삭제(Soft Delete) 구현: Hibernate에서 @SQLDelete와 @Where 어노테이션 사용하기 (0) | 2025.01.17 |
---|---|
[Java] 컬렉션 프레임워크(Collections Framework) (0) | 2024.05.22 |
[Java] Iterator와 Comparable (0) | 2024.05.21 |
[Java] DS vs. ADT (자료 구조 vs. 추상 데이터 타입) (0) | 2024.05.17 |
[Java] Array 비슷한 용어 정리(Arrays vs. ArrayList vs. Array vs. List) (0) | 2024.05.17 |