먼저 JavaMail 의 개발 환경을 구축하고 JDK 에서 JavaMail 의 관련 클래스와 패키지를 구성해야 합니다. JavaMail 개발 환경을 구축하는 데 mail.jar 및 activation.jar 이 필요합니다. 이 두 파일은 SUN 의 공식 웹 사이트에서 다운로드 할 수 있습니다.
JavaMail 은 STMP, POP3, IMAP 를 지원하며 메일 객체, 전송, 인증, 수신 등의 이메일 기능을 캡슐화합니다.
다양한 유형의 메시지를 보낼 때 주로 다음 범주에 적용됩니다.
1) 세션 클래스. 사용자가 전자 메일을 보내려면 먼저 Session 클래스 개체를 만들고 해당 개체를 사용하여 메일 개체를 만들고 메일 서버 인증에 대한 클라이언트 속성을 지정해야 합니다. 해당 클래스 수준은 javax.mail.Session 입니다
2)InternetAddress 클래스. 메일을 보내는 주소 클래스입니다. 클래스 계층 구조는 javax.mail.internet.internetaddress 이며 추상 클래스 javax.mail.Address 에서 상속됩니다
3)MimeMessage 클래스. 메일 메시지 클래스-클래스 계층 구조가 javax.mail.internet.mimemessage 이고 추상 클래스 javax.mail.Message 에서 상속됩니다
4) 운송류. 메일 전송 클래스. 클래스 계층은 javax.mail.Transport 입니다
5) 인증자 클래스. JavaMail 이 Authenticator 클래스를 사용하여 사용자 이름과 비밀번호를 통해 보호된 자원에 액세스하는 Authorizer 클래스입니다. 여기서 "자원" 은 메일 서버입니다. 클래스 계층은 javax.mail.Authenticator 입니다
6) 상점류. 메일 서버에서 메시지를 수신하는 데 사용되며 클래스 계층 구조는 javax.mail.Store 입니다
7) 폴더 클래스입니다. 메일 폴더 클래스. 클래스 계층은 javax.mail.Folder 입니다
구현 프로세스:
& lt% @ pageimport = "java.io. *"%>
& lt% @ pageimport = "java.util. *"% >
& lt% @ pageimport = "javax.mail. *"% >
& lt% @ pageimport = "javax.mail.internet. *"% >
& lt% @ pageimport = "javax.activation. *"% >
& lt%
시도 {
Request.setcharacterencoding ("gb2312");
String from = request.getparameter ("jname");
String to = request.getparameter ("sname");
Stringsubject = request.getparameter ("제목");
Stringmessagetext = request.getparameter ("message");
Stringpassword = request.getparameter ("password");
Strings = request.getparameter ("jname");
Int n = s.indexof ('@');
Int m = s.length ();
Stringserver = s.substring (n+1,m);
//메일 세션 설정
Properties pro = new properties ();
Pro.put("mail.smtp.host ","SMTP. "" +서버) :
Pro.put("mail.stmp.auth ","true ");
Sessionsess = session.getinstance (pro);
Sess.setdebug (true);
Mimemessagemessage = newmimemessage (mess); //새 메시지 객체 만들기
//발신자 설정
Internet address from _ mail = new internet address (from);
Message.setfrom (from _ mail);
//수신자 설정
Internet address to _ mail = new internet address (to);
Message.setRecipient(Message) 입니다. RecipientType.TO, to _ mail);
Message.setSubject (주제); //테마 설정
Message.settext (messagetext); //컨텐츠 설정
Message.setsentdate (newdate ()); //전송 시간 설정
//메일 보내기
Message.savechanges (); //메일 정보 저장
Transport transport = sess.gettransport ("SMTP");
Transport.connect("smtp ") +서버, 보낸 사람, 암호);
Transport.sendMessage(message, message.getallrecipients ());
Transport.close ();
Out.print ("메일 전송 성공");
}catch (예외 e){
Out.print ("메일을 보내지 못했습니다. 아마도
Out.println (e.getmessage ());
}
%>
2. HTML 포맷으로 전자 메일을 발송합니다
MimeMultipart 객체는 HTML 파일의 특정 내용을 저장하며, 내용을 설정할 때 객체의 서식을 지정합니다.
MimeMultipart 클래스의 클래스 계층은 javax.mail.internet.mimeMultipart. 가 전자 메일 내용을 저장하는 일반 컨테이너인 multipart 추상 클래스로서 전자 메일의 다양한 내용을 추가, 삭제 및 가져오는 방법을 정의합니다. Multipart 는 추상 클래스이므로 특정 하위 클래스를 사용해야 합니다. JavaMail API 는 MimeMessage 객체를 사용하는 javax.mail.internet.mimemultipart 클래스를 제공합니다.
구문:
Multipart mul = new mime multipart ();
설명: MimeMultipart 객체를 사용할 때 일반적으로 사용되는 메서드는 addBodyPart () 입니다. addBodyPart () 는 전자 메일의 내용에 bodypart 객체를 추가합니다. 메시지에는 많은 부분이 있을 수 있고, BodyPart 는 한 부분을 나타낼 수 있다.
MimeBodyPart 클래스의 클래스 계층은 javax.mail.internet.mime BodyPart 이고 mimebody part 는 MimeMessage 와 관련된 bodypart 의 하위 클래스입니다. MimeBodyPart 객체는 MimeMessage 객체의 일부를 나타내며 각 MimeBodyPart 는 MIME 유형과 해당 유형과 일치하는 내용의 두 부분으로 구성된 것으로 간주됩니다.
구문:
Bodypart MDP = new mime bodypart (); //새 BodyPart 개체를 만들어 메시지 내용을 저장합니다.
String messageText = "Hello World! " 을 눌러 섹션을 인쇄할 수도 있습니다
//MIME 유형을 text/html 로 정의하여 MimeBodyPart 의 내용을 설정합니다.
Mdp.setContent(messageText, "text/html");
구현 프로세스:
& lt% @ pageimport = "java.io. *"%>
& lt% @ pageimport = "java.util. *"% >
& lt% @ pageimport = "javax.mail. *"% >
& lt% @ pageimport = "javax.mail.internet. *"% >
& lt% @ pageimport = "javax.activation. *"% >
& lt%
시도 {
Request.setcharacterencoding ("gb2312");
Stringfrom _ mail = request.getparameter ("sname");
String to _ mail = request.getparameter ("rname");
Stringsubject = request.getparameter ("제목");
Stringmessagetext = request.getparameter ("message");
Stringpassword = request.getparameter ("password");
Strings = request.getparameter ("sname");
Int n = s.indexof ('@');
Int m = s.length ();
Stringserver = s.substring (n+1,m);
Properties prop = new properties ();
Prop.put("mail.smtp.host ","SMTP. "" +서버) :
Prop.put("mail.smtp.auth ","true ");
Sessionsess = session.getinstance (prop);
Sess.setdebug (true);
MimeMessage message = 새로운 mimemessage (sess);
//메시지 객체의 받는 사람, 보낸 사람, 제목 및 전송 시간을 설정합니다.
Internet address from = new internet address (from _ mail);
Message.setFrom (시작);
Internet address to = new internet address (to _ mail);
Message.setRecipient(Message) 입니다. 받는 사람 유형. 받는 사람, 받는 사람);
Message.setSubject (주제);
Message.setsentdate (newdate ());
Multipart mul = new multipart (); //새 MimeMultipart 오브젝트를 만들어 여러 BodyPart 오브젝트를 저장합니다.
Bodypart MDP = new mime bodypart (); //새 BodyPart 개체를 만들어 메시지 내용을 저장합니다.
Mdp.setContent(messageText, "text/html;; Charset = gb2312 ");
Mul.add bodypart (MDP); //메시지 내용이 포함된 BodyPart 를 MimeMultipart 개체에 추가합니다.
Message.savechanges ();
Transport transport = sess.gettransport ("SMTP");
Transport.connect("smtp ") +서버, from_mail, 암호);
Transport.sendMessage(message, message.getallrecipients ());
Transport.close ();
Out.println ("메일을 성공적으로 보냈습니다!" " );
}catch (예외 e){
Out.print ("메일을 보내지 못했습니다. 아마도
Out.println (e.getmessage ());
}
%>
3. 첨부 파일이 있는 메일을 보냅니다
일반적으로 첨부 파일이 있는 메일 발송자를 디자인할 때 다음 단계를 따릅니다.
1) 첨부 파일이 있는 메시지를 보내려면 메시지의 각 메시지 본문 부분을 설정하고 첫 번째 부분 (메시지의 내용 본문) 뒤에 DataHandler 가 있는 첨부 파일을 추가해야 합니다.
2) 파일이 첨부 파일로 전송된 경우 FileDataSource 유형의 객체를 첨부 파일 데이터 소스로 설정해야 합니다. URL 에서 데이터를 읽고 첨부 파일로 보내는 경우 URLDataSource 유형의 객체를 첨부 데이터 소스로 설정해야 합니다.
3) 데이터 소스 (FileDataSource 또는 URLDataSource) 객체를 DataHandler 클래스의 생성자에 대한 매개 변수로 전달하여 DataHandler 객체를 데이터 소스의 DataHandler 로 설정합니다.
4) 이 DataHandler 를 메시지 본문의 DataHandler 로 설정하여 메시지 본문과 첨부 파일 연결을 완료합니다. 다음 작업은 BodyPart 의 setFileName () 메서드를 사용하여 첨부 파일 이름을 원래 파일 이름으로 설정하는 것입니다.
5) 두 개의 메시지 본문을 Multipart 에 넣고 메시지 내용을 컨테이너의 Multipart 로 설정하여 메시지를 보냅니다.
구현 프로세스:
& lt% @ pageimport = "java.io. *"%>
& lt% @ pageimport = "java.util. *"% >
& lt% @ pageimport = "javax.mail. *"% >
& lt% @ pageimport = "javax.mail.internet. *"% >
& lt% @ pageimport = "javax.activation. *"% >
& lt% @ pageimport = "java.net. *"%>
& lt%
시도 {
Request.setcharacterencoding ("gb2312");
Stringfrom _ mail = request.getparameter ("sname");
Stiring to _ mail = request.getparameter ("rname");
Stringfrom _ PSD = request.getparameter ("password");
String title = request.getparameter ("title");
String content = request.getparameter ("content");
Stringpath = request.getparameter ("attachment");
Strings = request.getparameter ("sname");
Int n = s.indexof ('@');
Int m = s.length ();
Stringserver = s.substring (n+1,m);
Properties prop = new properties ();
Prop.put("mail.smtp.host ","SMTP. "" +서버) :
Prop.put("mail.smtp.auth ","true ");
Sessionsess = session.getinstance (prop);
Session.setdebug (true);
MimeMessage message = 새로운 mimemessage (sess);
//메시지 객체의 받는 사람, 보낸 사람 및 제목을 설정합니다.
Internet address from = new internet address (from _ mail);
Message.setFrom (시작);
Internet address to = new internet address (to _ mail);
Message.setRecipient(Message) 입니다. 받는 사람 유형. 받는 사람, 받는 사람);
Message.setSubject (제목);
Multipart mul = new mime multipart (); //새 MimeMultipart 오브젝트를 만들어 여러 BodyPart 오브젝트를 저장합니다.
Bodypart MDP = new mime bodypart (); //새 BodyPart 개체를 만들어 메시지 내용을 저장합니다.
Mdp.setContent(content, "text/html;; Charset = gb2312 ");
Mul.add bodypart (MDP); //메시지 내용이 포함된 BodyPart 를 MimeMultipart 개체에 추가합니다.
//메시지 첨부 파일 설정
Mdp = new mime bodypart (); //첨부 파일을 저장할 새 BodyPart 를 작성합니다.
Datahandlerhandler = new datahandler ("javamail 첨부 파일 테스트", "text/plain;; Charset = gb2312 "); //새 DataHandler 객체를 만들고 내용, 형식 및 인코딩 방법을 설정합니다.
Mdp.setfilename ("mrsoft"); //소스 파일 이름과 일치하지 않을 수 있습니다.
Mdp.setDataHandler (처리기);
Mul.add bodypart (MDP);
Message.setcontent (mul); //mul 을 메시지 객체의 내용으로 사용합니다.
Message.savechanges ();
Transport transport = sess.gettransport ("SMTP");
Transport.connect("smtp ") +server, from_mail, from _ PSD);
Transport.sendMessage(message, message.getallrecipients ());
Transport.close ();
Out.println ("첨부 파일이 성공적으로 전송되었습니다!" " );
}catch(Exception ex){
Out.print ("다음과 같은 이유로 메일을 보내지 못했습니다.
Out.println (ex.getmessage ());
}
%>
4. 대량 메일
받는 사람 주소를 tomail+i 형식으로 설정하고 for 루프를 사용하여 이러한 주소로 메시지를 보내 대량 메일 발송 목적을 달성합니다.
Address 클래스를 사용하여 전자 메일 메시지의 수신자 및 보낸 사람 정보를 설정합니다. 전자 메일 주소 클래스를 만든 후 message 의 setFrom () 메서드를 통해 전자 메일 보낸 사람을 설정합니다. 코드는 다음과 같습니다.
Message.setfrom (from _ mail);
받는 사람 주소를 설정할 때 setRecipient () 메서드를 사용하여 받는 사람 주소를 설정합니다. 코드는 다음과 같습니다.
Message.setRecipient (유형, 주소) :
매개변수 유형은 수신자 유형입니다. 다음 세 가지 상수를 사용하여 수신자 유형을 구분할 수 있습니다.
1) 메시지.
2) message.recipienttype.cc-cc.
3)message. recipient type. bcc- 비밀 전송.
참고: 일상적인 사용에서는 참조 및 숨은 참조 등 두 가지 메일 전송 형식을 자주 사용합니다. 참조 및 숨은 참조 모두 여러 사서함에 동시에 e-메일을 보내지만
양자는 어느 정도 차이가 있다. 반면, 숨은 배달은 다른 참조 사람의 주소를 숨기고, 받는 사람에게만 자신의 주소를 보여 주며, 비밀을 유지하고 스팸을 방지하는 역할을 할 수 있다. (윌리엄 셰익스피어, 스팸메일, 스팸메일, 스팸메일, 스팸메일, 스팸메일)
구현 프로세스:
& lt% @ pageimport = "java.io. *"%>
& lt% @ pageimport = "java.util. *"% >
& lt% @ pageimport = "javax.mail. *"% >
& lt% @ pageimport = "javax.mail.internet. *"% >
& lt% @ pageimport = "javax.activation. *"% >
& lt%
시도 {
Int I =1;
For (I =1; 나<4; I++){
Request.setcharacterencoding ("gb2312");
String from = request.getparameter ("from _ mail");
String to = request.getparameter ("to mail"+I);
Stringsubject = request.getparameter ("subject");
Stringmessagetext = request.getparameter ("message");
Stringpassword = request.getparameter ("password");
Strings = request.getparameter ("from _ mail");
Int n = s.indexof ('@');
Int m = s.length ();
Stringserver = s.substring (n+1,m);
//메일 세션 설정
Properties pro = new properties ();
Pro.put("mail.smtp.host ","SMTP. "" +서버) :
Pro.put("mail.smtp.auth ","true ");
Sessionsess = session.getinstance (pro);
Sess.setdebug (true);
MimeMessage message = 새로운 mimemessage (sess); //새 메시지 객체 만들기
Internet address from _ mail = new internet address (from); //발신자 설정
Message.setfrom (from _ mail);
//수신자 설정
Internet address to = new internet address (to);
Message.setRecipient(Message) 입니다. RecipientType.TO, to _ mail);
Message.setSubject (주제); //테마 설정
Message.settext (messagetext); //컨텐츠 설정
Message.setsentdate (newdate ()); //전송 시간 설정
Message.savechanges (); //메일 정보 저장
Transport transport = sess.gettransport ("SMTP");
Transport.connect("smtp ") +서버, 보낸 사람, 암호);
Transport.sendMessage(message, message.getallrecipients ());
Transport.close ();
If(i==3){
Out.print ("메일 전송 성공");
}
}
}catch (예외 e){
Out.print ("메일을 보내지 못했습니다. 아마도
Out.println (e.getmessage ());
}
%>
5.Spring 은 웹 서비스를 사용하여 문자 메시지를 보냅니다.
프로그래밍을 통해 문자 메시지를 보내는 것은 매우 복잡한 일이다. 현재 일반적인 해결책은 컴퓨터와 휴대전화의 연결을 통해 휴대전화 프로그래밍 언어로 문자메시지 프로그램을 작성하는 것이다. 이 방법은 시간과 정력뿐만 아니라 그에 상응하는 하드웨어 시설도 필요하며 휴대전화 프로그래밍에 대한 지식도 알아야 한다. 웹 서비스 기술을 통해 기존 SMS 전송 서버에 원격으로 액세스하여 호출 서버를 통해 SMS 를 보낼 수 있습니다.
기술적 요점:
기존 리소스 사용: 짧은 메시지를 보낼 수 있는 웹 서비스 원격 서비스입니다. 이 웹 서비스는 시나닷컴 웹 사이트에서 사용자가 직접 원격 서비스를 호출하여 메시지를 보낼 수 있도록 합니다. 이 서비스의 서비스 이름은 SMSWS 이고 서비스 포트는 SMSWebServiceSoapPort 입니다. 이 원격 서비스에서는 sendXml () 이라는 짧은 메시지를 보낼 수 있는 방법을 제공합니다. 이 방법은 다음과 같이 정의됩니다.
공용 문자열 sendXml (문자열 캐리어, 문자열 id, 문자열 암호, 문자열 toMobile, 문자열 message, 문자열 msgtype)
기능: 사용자가 지정한 매개변수에 따라 대상 사용자의 휴대폰에 문자 메시지를 보냅니다.
매개변수 설명:
SendXml () 메서드의 6 개 매개 변수는 문자열 유형이고 sendXml () 메서드의 반환 값은 문자열 유형입니다. 다음은 sendXml () 메서드의 6 개 매개 변수에 대한 자세한 설명입니다.
1) 운영자: 운영자 이름입니다. 이 매개 변수의 구체적인 사용은 구체적인 요구 사항이 없다. 즉, 마음대로 입력할 수 있고, 입력한 문자열은 상대방의 핸드폰에 나타나지 않는다.
2)id: 시나닷컴에 등록된 휴대폰 번호입니다. 시나닷컴 서비스를 이용하여 문자 메시지를 보낼 때, 당신은 시나닷컴 사이트에 당신의 핸드폰을 등록해야 합니다.
3) 비밀번호: 휴대전화 등록이 성공한 후 Sina.com 이 보낸 비밀번호입니다.
4)toMobile: 문자를 받는 상대방의 휴대폰 번호.
5) 메시지: 보낼 단문 메시지의 내용.
6)msgtype: 보내는 짧은 메시지의 유형입니다. 컬러편지가 아니니까 문자를 입력해 주세요.
SendXml () 메서드를 호출하려면 Spring 에서 JaxRpcPortProxyFactoryBean 의 인스턴스를 구성하고 해당 메서드가 포함된 인터페이스를 정의해야 합니다. 그러면 Spring 에서 원격 서비스의 인터페이스를 자동으로 가져옵니다.
구현 프로세스:
Applicationcontext AC = new classpathmlaplicationcontext ("applicationcontext.xml");
Smswebservice send SMS = (smswebservice) ac.getbean ("hello world service");
String carrier = "lzwsky
Stringid = userid.gettext ();
Stringpassword = passwordfield.gettext ();
Stringtomobile = tomobilefield.gettext ();
Stringmessage = messagefield.gettext ();
Stringmsgtype = "텍스트
SendSms.sendXml (사업자, id, 비밀번호, toMobile, message, msgtype);