Javamail API는 javax.mail.message 클래스를 사용하여 메시지를 나타냅니다. 메시지 클래스는 추상 클래스이므로 하위 클래스 javax.mail.internet.mimemessage 클래스를 사용하여 메시지 클래스의 인스턴스 개체를 생성해야합니다. 간단한 문자 메시지를 만들면 Mimemessage 클래스가 우리의 요구를 충족시킬 수 있습니다. 그러나 임베디드 리소스 또는 첨부 파일이 포함 된 복잡한 이메일을 작성 해야하는 경우 Mimemessage, Javax.mail.internet.mimebodypart 및 javax.mail.internet.mimemultipart와 같은 클래스를 사용해야합니다.
1. Mimemessage 클래스는 전체 이메일을 나타냅니다
2. MimebodyPart 클래스는 이메일의 MIME 메시지를 나타냅니다.
3. Mimemultipart 클래스는 여러 마임 메시지로 구성된 결합 된 MIME 메시지를 나타냅니다.
이 세 클래스의 협력 관계는 아래 그림에 나와 있습니다.
응용 프로그램 개발자는 일반적으로 Javamailapi를 사용하여 이메일 컨텐츠를 작성할 때 Mimemessage, MimebodyPart 및 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.mimessage; gamport java.io.fileoutputstream; "problic voidexputstream; args)는 예외 {string from = "[email protected]"을 던졌습니다. 문자열 to = "[email protected]"; 문자열 주제 = "테스트"; 문자열 body = "test !!!"; // 세션 생성 인스턴스 객체 객체 세션 세션 = session.getDefaultInstance (new Properties ()); // mimemeSage 인스턴스 생성 객체 mimemessage msg = new Mimemessage (세션); // SET SET SET SENTER MSG.SETFROM (New InternetAdDress (From)); // 수신자 msg.setRecipients (message.recipienttype.to, internetAddress.parse (to)); // 날짜 보내기 날짜 msg.setSentDate (new date ()); // 이메일 주제를 설정합니다 msg.setSubject (주제); // 일반 텍스트 내용의 이메일 본문을 설정합니다 Msg.settext (Body); // 최종 이메일 내용을 저장하고 생성합니다 Msg.sevechanges (); // mimemessage 객체의 내용을 file msg.writeto (new FileOutputStream ( "c : //test.eml"))에 작성합니다. }}우리는 이메일 클라이언트 (여기에서 Foxmail 사용)를 사용하여 C 드라이브 아래에서 test.eml 파일을 열고 다음 정보를 볼 수 있으며, 이는 이메일이 성공적으로 생성되었음을 나타냅니다.
다음은 위에 나타나는 일부 수업에 대한 간단한 설명입니다.
1. Mimemessage 클래스 : 위의 내용은 Mimemessage가 메시지 클래스의 인스턴스 객체를 작성하는 데 사용되는 메시지 클래스의 구체적인 구현 클래스라고 소개했습니다. 여기서 생성자는 세션 객체를 매개 변수로 전달합니다.
2. 세션 클래스 :이 개체는 클라이언트와 메일 서버간에 네트워크 연결 정보를 수집하고 전체 메일 프로그램을 정의하는 데 필요한 환경 정보를 정의하는 데 사용됩니다. 이 정보는 세션 객체에 세션 객체의 속성으로 저장됩니다. 세션 객체는 java.util.properties 객체를 사용하여 메일 서버, 사용자 이름, 비밀번호 정보 및 전체 응용 프로그램이 사용해야하는 공유 정보를 얻습니다. 세션 클래스의 생성자는 비공개이므로 세션 클래스에서 제공 한 GetDefaultInstance ()의 정적 공장 메소드를 사용하여 기본 세션 객체를 얻습니다.
3. 속성 클래스 :이 클래스는 지속적인 속성 세트를 나타냅니다.이 속성 세트는 키 값 쌍의 정보를 매개 변수로 저장하는 데 사용됩니다. 여기서 빈 세트는 매개 변수로 구성됩니다.
4. InternetAddress 클래스 :이 클래스는 이메일 주소를 만드는 데 사용되는 추상 클래스 주소 클래스의 서브 클래스입니다.
5. ReceperType 클래스 :이 클래스는 메시지 클래스의 내부 클래스입니다. 이 클래스에는 3 개의 정적 변수가 있습니다. 수신자를 나타내는 CC는 CC 발신자 (수신자가 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.mimessage; gamport java.io.fileoutputstream; public classe htmlmeStage {public classe {public java.io.fileoutputstream; main (string [] args)은 예외 {string from = "[email protected]"; 문자열 to = "[email protected]"; 문자열 주제 = "테스트"; 문자열 body = "<h4>이 이메일을 읽는 데 오신 것을 환영합니다 </h4>"; // 세션 생성 인스턴스 객체 객체 세션 세션 = session.getDefaultInstance (new Properties ()); // mimemeSage 인스턴스 생성 객체 mimemessage msg = new Mimemessage (세션); // SET SET SET SENTER MSG.SETFROM (New InternetAdDress (From)); // 수신자 msg.setRecipients (message.recipienttype.to, internetAddress.parse (to)); // 날짜 보내기 날짜 msg.setSentDate (new date ()); // 메일 주제를 설정합니다 msg.setSubject (주제); // HTML 형식의 이메일 전자 메일 바디 MSG를 설정합니다. // 최종 메일 내용을 저장하고 생성합니다 Msg.sevechanges (); // mimemessage 객체의 내용을 file msg.writeto (new FileOutputStream ( "c : //test.eml"))에 작성합니다. }}Foxmail을 사용하여 Test.eml을 열고 다음 디스플레이를 열 것입니다.
이전 코드와의 차이점은 이메일 컨텐츠를 설정할 때 SetText 메소드 대신 SetContent 메소드를 사용하고 이메일 본문의 MIME 유형을 Text/HTML로 지정한다는 것입니다.
이제 우리는 HTML 태그로 이메일을 만드는 법을 배웠지 만 때로는 우리의 의미를보다 직관적으로 표현하기 위해 일부 이미지를 이메일에 삽입해야 할 수도 있습니다. 그런 다음 Mimemultipart 클래스와 MimebodyPart 클래스를 사용해야합니다.
import java.io.fileoutputStream; import java.util.properties; import javax.activation.datahandler; import javax.activation.filedatasource; import javax.mail.message; import javax.mail.mail.mail.mail.mail.internet.internet.mectress; javax.mail.mail.mail.mail.mail.mail.Mail.Mail.Mail.Mail.Mail.Mail.Mail javax.mail.internet.mimemessage; import javax.mail.internet.internet.mimemultipart; public class picturemessage {public static void main (String [] args)은 {string {string from = "[email protected]"; // sender 주소 문자열을 = "[email protected]"; // 수신자 주소 문자열 주제 = "HTML 이메일"; 문자열 body = "<a href = http : //www.cnblogs.com>" + "블로그 정원에 오신 것을 환영합니다 </a> </br>" + "<img src =/"c : //dog.jpg/ ">"; 세션 세션 = 세션 .getDefaultInstance (new Properties ()); // mimemessage 객체를 만들고 다양한 메시지 헤더 필드 mimemessage message = new Mimemessage (세션); message.setfrom (new InternetAddress (from)); message.setRecipients (message.recipienttype.to, internetAddress.parse (to)); message.setsubject (주제); // 하위 유형 "관련"으로 MimemultIpart 객체를 만듭니다. mimemultipart multipart = new Mimemultipart ( "관련"); /** 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 (새로운 Datahandler (FDS)); multipart.addbodypart (gifbodypart); /** MIMEMULTIPART 객체를 전체 메시지의 내용으로 설정하고 업데이트를 위해 SaveChanges 메소드를 호출하는 데주의를 기울이십시오. message.sevechanges (); // mimemessage 객체의 내용을 file message.writeto에 씁니다 (새 fileoutputstream ( "c : //picturemessage.eml")); }}코드는 조금 복잡해 보입니다. 위에서 언급 한 Mimemessage, Mimemultipart 및 MimebodyPart의 관계 다이어그램을 살펴볼 수 있습니다. 따라서 위의 코드를 더 쉽게 이해할 수 있습니다. 우리는 pictureemessage.eml을 열고 다음 정보를 봅니다.이 정보는 사진과 함께 이메일을 성공적으로 만들었으며 이미지가 첨부 파일 형태로 이메일에 포함되어 있음을 보여줍니다.
Mimemultipart에는 두 개의 생성자가 있습니다.
public mimemultipart () public mimemultipart (String subtype)
첫 번째는 매개 변수가없고 기본 인스턴스 객체에는 MIME 유형이 혼합되어 있습니다. 두 번째는 mimemultipart 클래스의 인스턴스 개체를 생성하기 위해 유형을 공식화합니다. 일반적으로 사용되는 세 가지 유형은 혼합, 관련 및 대안입니다. MIME 에서이 세 가지 유형의 조합 관계는 다음과 같습니다.
이제 우리는 위에 표시된 조합 관계를 사용하여 신체에 첨부 파일과 내장 된 자원이있는 메시지를 만듭니다.
import java.io.fileoutputStream; import java.util.properties; import javax.activation.datahandler; import javax.activation.filedatasource; import javax.mail.message; import javax.mail.mail.mail.mail.mail.internet.internet.mectress; javax.mail.mail.mail.mail.mail.mail.Mail.Mail.Mail.Mail.Mail.Mail.Mail javax.mail.internet.mimemessage; import javax.mail.internet.internet.mimemultipart; public class complexmessage {public static void main (String [] args)은 예외 {세션 세션 = 세션 .getDefaultInstance (새 속성 ()); mimemessage message = createmessage (세션); message.writeto (new FileOutputStream ( "C : //complexMessage.eml")); } public static mimemessage createMessage (세션 세션)는 예외 {string from = "[email protected]"; // sender address string으로 = "[email protected]"; // 수신자 주소 문자열 주제 = "HTML 이메일"; // 이메일 주제 문자열 body = "<a href = http : //www.cnblogs.com>" + "블로그에 오신 것을 환영합니다 </a> </br>" + "<img src =/"c : //dog.jpg/ ">; mimemessage message = new Mimemessage (세션); message.setfrom (new InternetAddress (from)); message.setRecipients (message.recipienttype.to, internetAddress.parse (to)); message.setsubject (주제); // 메시지 본문을 나타내는 각 MimeBodyPart 객체를 만듭니다. MimeBodyPart ContentPart = CreateContent (body, "c : //dog.jpg"); // 다음 첨부 파일은 비디오 또는 오디오 MimeBodyPart att MimeBodyPart att // 메시지 본문과 첨부 파일을 결합하기위한 mimemultipart 객체를 만듭니다. mimemultipart allmultipart = new Mimemultipart ( "Mixed"); AllMultipart.addbodyPart (ContentPart); allmultipart.addbodyPart (attachpart1); allmultipart.addbodyPart (attachpart2); // 전체 이메일 컨텐츠를 최종 결합 된 MimemultIPART Object Message.SetContent (AllMultipart)로 설정합니다. message.sevechanges (); 반환 메시지; } public static mimebodypart createContent (String body, string filename) 예외 던지기 예외 { /** 결합 된 Mime 메시지를 나타내는 mimemultipart 객체와 mimemultipart 객체가 저장되는 mimebodypart 객체* / mimebodypart contentpart = new MimebodyPart (); mimemultipart contentmultipart = new Mimemultipart ( "관련"); /** MimeBodyPart 객체를 작성하여 HTML 본체를 저장하고 mimemultipart에 저장*/ mimebodypart htmlbodypart = new MimebodyPart (); htmlbodypart.setContent (body, "text/html; charset = gb2312"); contentmultipart.addbodypart (htmlbodypart); /** MimeBodyPart 객체를 만들어 그림을 저장하고 mimemultipart에 저장*/ mimebodypart gifbodypart = new MimebodyPart (); Filedatasource FDS = 새로운 FileDatasource (Filename); gifbodypart.setdatahandler (새로운 Datahandler (FDS)); contentmultipart.addbodyPart (gifbodyPart); // MimeMultIPART 객체를 MimeBodyPart 객체 컨텐츠에 저장합니다. Return ContentPart; } public static mimebodypart createAttachment (String filename) 예외를 던집니다 {// 첨부 파일을 저장하는 MimeBodyPart 객체를 만듭니다. 첨부 컨텐츠 및 해당 정보 MimimeBodyPart aTHIPPART = new MimeBodyPart (); Filedatasource FDS = 새로운 FileDatasource (Filename); att att 반환 첨부 파트; }}ComplexMessage.eml 파일을 열면 다음 내용을 볼 수 있습니다.
이제 일반 텍스트 이메일, HTML 형식이 포함 된 이메일 및 내장 이미지 및 첨부 파일이 포함 된 이메일을 만드는 방법을 배웠습니다. 다음 기사에서는 세 번째 기사로 시작하는 javamail을 이메일 보내는 방법을 소개합니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.