자바 메 일 입문 튜 토리 얼 생 성 메 일(2)
1.MimeMessage 클래스 는 전체 메 일 을 표시 합 니 다.
2.Mime Body Part 클래스 는 메 일의 MIME 메 시 지 를 표시 합 니 다.
3.Mime Multipart 클래스 는 여러 개의 MIME 메시지 로 구 성 된 그룹 MIME 메 시 지 를 표시 합 니 다.
이 세 가지 업무 관 계 는 다음 그림 과 같다.
응용 프로그램 개발 자 들 이 자바 메 일 API 를 사용 하여 메 일 콘 텐 츠 를 만 들 때 보통 MimeMessage,MimeBody Part,MimeMultipart 등 세 가지 주요 클래스 만 사용 하지만 이들 의 클래스 계승 관 계 를 알 아 보 는 것 도 필요 하 다.아래 그림 은 이 세 가지 유형의 계승 관계 와 자주 사용 하 는 방법 을 보 여 준다.
다음은 javax.mail.internet.MimeMessage 클래스 로 간단 한 텍스트 메 일 을 만 듭 니 다.
import java.util.Date;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.FileOutputStream;
public class TextMessage {
public static void main(String[] args) throws Exception {
String from = "[email protected]";
String to = "[email protected]";
String subject = "test";
String body = "test!!!";
// Session
Session session = Session.getDefaultInstance(new Properties());
// MimeMessage
MimeMessage msg = new MimeMessage(session);
//
msg.setFrom(new InternetAddress(from));
//
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
//
msg.setSentDate(new Date());
//
msg.setSubject(subject);
//
msg.setText(body);
//
msg.saveChanges();
// MimeMessage
msg.writeTo(new FileOutputStream("c:\\test.eml"));
}
}
저 희 는 메 일 클 라 이언 트(여기 foxmail)로 CD 아래 test.eml 파일 을 열 면 다음 과 같은 정 보 를 볼 수 있 습 니 다.메 일 생 성 성공 을 설명 합 니 다.다음은 위 에 나타 난 몇 가지 유형 을 간단하게 설명 하 겠 습 니 다.
1.MimeMessage 류:위 에서 MimeMessage 류 는 Message 류 의 구체 적 인 실현 류 로 Message 류 의 인 스 턴 스 대상 을 만 드 는 데 사 용 됩 니 다.여기 구조 함수 가 Session 대상 을 매개 변수 로 들 어 왔 습 니 다.
2.Session 클래스:이 대상 은 클 라 이언 트 와 메 일 서버 간 의 네트워크 연결 정 보 를 수집 하고 전체 메 일 프로그램 에 필요 한 환경 정 보 를 정의 하 는 데 사 용 됩 니 다.이 정 보 는 Session 대상 의 속성 으로 Session 대상 에 저 장 됩 니 다.Session 대상 은 자바 util.Properties 대상 을 이용 하여 메 일 서버,사용자 이름 을 얻 었 습 니 다.암호 정보 와 전체 응용 프로그램 이 사용 해 야 할 공유 정 보 는 Session 류 의 구조 방법 이 개인 적 이기 때문에 저 희 는 Session 류 가 제공 하 는 getDefault Instance()라 는 정적 공장 방법 으로 기본 적 인 Session 대상 을 얻 습 니 다.
3.Properties 클래스:이 클래스 는 지속 적 인 속성 집합 을 표시 합 니 다.관련 키 값 을 저장 하여 정 보 를 매개 변수 로 Session 대상 을 만 드 는 데 사 용 됩 니 다.여 기 는 빈 집합 을 매개 변수 로 구성 합 니 다.
4.인터넷 address 류:이 종 류 는 추상 적 인 address 류 의 하위 클래스 로 메 일 주 소 를 만 드 는 데 사 용 됩 니 다.
5.Recipient Type 클래스:이 클래스 는 Message 클래스 의 내부 클래스 입 니 다.이 클래스 는 3 개의 정적 변수 가 있 습 니 다.TO 는 받 는 사람 을 표시 하고 CC 는 베 끼 는 사람(받 는 사람 은 베 끼 는 사람 을 알 고 있 습 니 다)을 표시 하 며 BCC 는 밀송 인(받 는 사람 은 밀송 을 모 르 는 사람)을 표시 합 니 다.
위의 메 일 은 간단 한 텍스트 만 포함 되 어 있 을 뿐,때때로 우 리 는 HTML 파일 을 사용 하여 우리 의 메 일 본문 을 풍부하게 해 야 한다.예 를 들 어 HTML 라벨 을 사용 하여 메 일 본문 을 조판 하고,HTML 라벨 을 사용 하여 메 일 본문 에 그림 이나 소리 등 을 도입 해 야 한다.다음 코드 는 HTML 형식 을 포함 하 는 메 일 을 만 들 었 습 니 다.
import java.util.Date;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.FileOutputStream;
public class HtmlMessage {
public static void main(String[] args) throws Exception {
String from = "[email protected]";
String to = "[email protected]";
String subject = "test";
String body = "<h4> </h4>";
// Session
Session session = Session.getDefaultInstance(new Properties());
// MimeMessage
MimeMessage msg = new MimeMessage(session);
//
msg.setFrom(new InternetAddress(from));
//
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
//
msg.setSentDate(new Date());
//
msg.setSubject(subject);
// HTML
msg.setContent(body, "text/html;charset=gb2312");
//
msg.saveChanges();
// MimeMessage
msg.writeTo(new FileOutputStream("c:\\test.eml"));
}
}
우 리 는 foxmail 로 test.eml 을 열 어 다음 과 같이 표시 합 니 다.이전 코드 와 다른 점 은 저희 가 메 일 내용 을 설정 할 때 setContent 방법 으로 setText 방법 을 대 체 했 을 뿐 메 일 본문 인 MIME 형식 을 text/html 로 지정 하 였 습 니 다.
이제 우 리 는 HTML 태그 가 있 는 메 일 을 만 드 는 것 을 배 웠 습 니 다.그러나 가끔 은 메 일 에 그림 을 삽입 하여 우리 의 뜻 을 직관 적 으로 표현 해 야 할 수도 있 습 니 다.그러면 이 럴 때 우 리 는 Mime Multipart 류 와 Mime Body Part 류 를 사용 해 야 합 니 다.
import java.io.FileOutputStream;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
public class PictureMessage {
public static void main(String[] args) throws Exception {
String from = "[email protected]";//
String to = "[email protected]"; //
String subject = "HTML ";
String body = "<a href=http://www.cnblogs.com>" + " </a></br>"
+ "<img src=\"c:\\dog.jpg\">";
Session session = Session.getDefaultInstance(new Properties());
// MimeMessage ,
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(to));
message.setSubject(subject);
// "related" MimeMultipart 。
MimeMultipart multipart = new MimeMultipart("related");
/*
* HTML MimeBodyPart , MimeMultipart
*/
MimeBodyPart htmlBodyPart = new MimeBodyPart();
htmlBodyPart.setContent(body, "text/html;charset=gb2312");
multipart.addBodyPart(htmlBodyPart);
/*
* MimeBodyPart , MimeMultipart
*/
MimeBodyPart gifBodyPart = new MimeBodyPart();
FileDataSource fds = new FileDataSource("c:\\dog.jpg");
gifBodyPart.setFileName(fds.getName());
gifBodyPart.setDataHandler(new DataHandler(fds));
multipart.addBodyPart(gifBodyPart);
/*
* MimeMultipart , saveChanges
*/
message.setContent(multipart);
message.saveChanges();
// MimeMessage
message.writeTo(new FileOutputStream("c:\\PictureMessage.eml"));
}
}
코드 가 약간 복잡 해 보 입 니 다.위 에서 언급 한 MimeMessage,MimeMultipart 와 MimeBody Part 등 세 가지 유형의 관계 도 를 다시 볼 수 있 습 니 다.그러면 위의 코드 를 쉽게 이해 할 수 있 습 니 다.저 희 는 PictureMessage.eml 을 열 어 다음 과 같은 정 보 를 보 았 습 니 다.이 는 저희 가 그림 이 있 는 메 일 을 성공 적 으로 만 들 었 음 을 설명 합 니 다.그리고 이 사진 은 첨부 파일 로 메 일 에 포함 되 어 있 습 니 다.Mime Multipart 는 두 가지 구조 함수 가 있 습 니 다.
public MimeMultipart()
public MimeMultipart(String subtype)
첫 번 째 는 매개 변수 가 없 는 것 입 니 다.기본 인 스 턴 스 대상 의 MIME 유형 은 mixed 이 고 두 번 째 유형 은 하나의 유형 을 만들어 Mime Multipart 류 의 인 스 턴 스 대상 을 만 듭 니 다.세 가지 자주 사용 하 는 유형 이 있 습 니 다.mixed,related,alternative 입 니 다.이 세 가지 유형 은 MIME 에서 의 조합 관 계 는 다음 과 같 습 니 다.현재 우 리 는 위 에서 보 여 준 이러한 조합 관계 로 첨부 파일 을 만 들 고 본문 에 내 장 된 자원 이 있 는 메 일 을 만 듭 니 다.
import java.io.FileOutputStream;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
public class ComplexMessage {
public static void main(String[] args) throws Exception {
Session session = Session.getDefaultInstance(new Properties());
MimeMessage message = createMessage(session);
message.writeTo(new FileOutputStream("c:\\ComplexMessage.eml"));
}
public static MimeMessage createMessage(Session session) throws Exception {
String from = "[email protected]";//
String to = "[email protected]"; //
String subject = "HTML "; //
String body = "<a href=http://www.cnblogs.com>" + " </a></br>"
+ "<img src=\"c:\\dog.jpg\">";
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(to));
message.setSubject(subject);
// MimeBodyPart
MimeBodyPart contentPart = createContent(body, "c:\\dog.jpg");
//
MimeBodyPart attachPart1 = createAttachment("c:\\ .MP3");
MimeBodyPart attachPart2 = createAttachment("c:\\ .avi");
// MimeMultipart
MimeMultipart allMultipart = new MimeMultipart("mixed");
allMultipart.addBodyPart(contentPart);
allMultipart.addBodyPart(attachPart1);
allMultipart.addBodyPart(attachPart2);
// MimeMultipart
message.setContent(allMultipart);
message.saveChanges();
return message;
}
public static MimeBodyPart createContent(String body, String filename)
throws Exception {
/*
* MIME MimeMultipart , MimeMultipart MimeBodyPart
*/
MimeBodyPart contentPart = new MimeBodyPart();
MimeMultipart contentMultipart = new MimeMultipart("related");
/*
* HTML MimeBodyPart , MimeMultipart
*/
MimeBodyPart htmlBodyPart = new MimeBodyPart();
htmlBodyPart.setContent(body, "text/html;charset=gb2312");
contentMultipart.addBodyPart(htmlBodyPart);
/*
* MimeBodyPart , MimeMultipart
*/
MimeBodyPart gifBodyPart = new MimeBodyPart();
FileDataSource fds = new FileDataSource(filename);
gifBodyPart.setDataHandler(new DataHandler(fds));
contentMultipart.addBodyPart(gifBodyPart);
// MimeMultipart MimeBodyPart
contentPart.setContent(contentMultipart);
return contentPart;
}
public static MimeBodyPart createAttachment(String filename)
throws Exception {
// MimeBodyPart ,
MimeBodyPart attachPart = new MimeBodyPart();
FileDataSource fds = new FileDataSource(filename);
attachPart.setDataHandler(new DataHandler(fds));
attachPart.setFileName(fds.getName());
return attachPart;
}
}
ComplexMessage.eml 파일 을 열 면 다음 과 같은 내용 을 볼 수 있 습 니 다.이제 우 리 는 순수한 텍스트 의 메 일,HTML 형식의 메 일,그리고 내 장 된 그림 과 첨부 파일 이 있 는 메 일 을 만 드 는 법 을 배 웠 습 니 다.다음 편 은 메 일 자바 메 일 입문 세 번 째 메 일 발송 을 어떻게 보 내 는 지 소개 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 메 일 입문 튜 토리 얼 분석 메 일(5)지난 편 메 일 을 받 는 과정 에서 콘 솔 에서 인쇄 한 내용 을 우 리 는 읽 을 수 없다.사실은 우리 스스로 복잡 한 메 일 을 분석 하 는 것 은 쉽 지 않다.메 일 안의 형식 과 규범 이 매우 복잡 하 다....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.