이 기사는 프로젝트 주소 https://github.com/lenve/vhr와 함께 VHR 시리즈의 12 번째 기사입니다.
이메일 보내기도 일반적인 문제입니다. 코드는 간단하지만 많은 친구들 이이 과정을 잘 이해하지 못 하므로이 주제에 대해 여전히 귀하에게 이야기 할 계획입니다.
이메일 계약
우리는 종종 SMTP, POP3 및 IMAP와 같은 다양한 이메일 프로토콜을 듣습니다. 그렇다면 이러한 프로토콜의 기능은 무엇이며 차이점은 무엇입니까? 이 문제에 대해 먼저 논의합시다.
SMTP는 TCP/IP를 기반으로 한 애플리케이션 레이어 프로토콜입니다. 상태는 HTTP와 다소 유사합니다. SMTP 서버의 기본 포트 번호는 25입니다.이를 확인하면 SMTP 프로토콜이 TCP/IP 응용 프로그램 계층 프로토콜을 기반으로하기 때문에 소켓을 통해 이메일을 보낼 수 있습니까? 대답은 예입니다.
인생에서 우리는 다음 단계를 살펴 봐야합니다.
1. Shenzhen의 Xiao Wang은 처음으로 Shenzhen의 우체국에 이메일을 전달했습니다.
2. Shenzhen의 우체국은 상하이의 우체국에 우편물을 제공합니다.
3. 상하이의 Xiao Zhang은 우체국에 왔습니다.
이것은 인생에서 메일 전송 프로세스의 감소 된 버전입니다. 이 세 단계는 전자 메일 전송 프로세스에 별도로 해당 할 수 있습니다. 이메일이 [email protected]에서 [email protected]에서 발송된다고 가정합니다.
[email protected]은 먼저 Tencent의 메일 서버에 이메일을 전달합니다
2. Tencent의 메일 서버는 메일을 Netease의 메일 서버로 전달합니다.
[email protected] Netease의 이메일 서버에 로그인하여 이메일을보십시오.
이메일 배송은 대략이 프로세스이며 여러 프로토콜이 포함됩니다. 별도로 살펴 보겠습니다.
SMTP 프로토콜의 전체 이름은 간단한 메일 전송 프로토콜로 간단한 메일 전송 프로토콜로 변환됩니다. 메일 클라이언트 소프트웨어와 SMTP 서버 및 SMTP 서버 간의 통신 규칙을 정의합니다. 다시 말해, Tencent의 SMTP 서버에 이메일을 제공하는 프로세스는 먼저 SMTP 프로토콜을 사용한 다음 Tencent의 SMTP 서버는 NetEase의 SMTP 서버에 이메일을 전자 메일을 수신하는 데 사용되는 SMTP 프로토콜을 사용합니다. POP3 프로토콜의 전체 이름은 우체국 프로토콜이며 우체국 프로토콜로 변환됩니다. 메일 클라이언트와 POP3 서버 간의 통신 규칙을 정의합니다. 그렇다면이 프로토콜은 어떤 시나리오에서 사용됩니까? 이메일이 NetEase의 SMTP 서버에 도착하면 [email protected] 사용자는 이메일을보기 위해 서버에 로그인해야합니다. 현재 계약이 사용됩니다. 이메일 서비스 제공 업체는 각 사용자에게 특별한 이메일 저장 공간을 제공합니다. SMTP 서버가 이메일을 수신 한 후에는 이메일을 해당 사용자의 이메일 저장 공간에 저장합니다. 사용자가 이메일을 읽으려면 이메일 서비스 제공 업체의 POP3 이메일 서버를 통해 완료해야합니다. 마지막으로, 일부 친구들은 POP3 프로토콜의 확장 인 IMAP 프로토콜에 대해 들었을 수도 있으며 기능이 강하고 기능이 유사합니다. 나는 여기서 그것을 반복하지 않을 것입니다.
QQ 이메일 보내기 준비
우선 QQ 이메일 웹 버전에 로그인하고 위의 설정 버튼을 클릭해야합니다.
그런 다음 계정 탭을 클릭합니다.
다음과 같이 계정 탭에서 POP3/SMTP를 활성화하는 옵션을 찾으십시오.
관련 기능을 활성화하려면 클릭하십시오. 활성화 프로세스에는 휴대 전화 번호 확인이 필요합니다. 단계를 따르고 자세히 설명하지 마십시오. 성공적으로 활성화되면 권한 부여 코드를 얻고 번호를 저장하여 잠시 동안 사용할 수 있습니다.
그런 다음 Javaxmail Jar 패키지가 필요합니다. 친구는 Maven Central Warehouse에서 직접 다운로드 할 수 있습니다. 나는 다음과 같은 세부 사항으로 가지 않을 것입니다.
보내다
간단한 이메일
간단한 텍스트 만 보내면 전송 방법은 비교적 간단합니다. 전체 프로세스는 다음과 같이 세 단계로 나눌 수 있습니다.
1 단계 : SMTP 메일 서버의 기본 환경 구성
속성 속성 = new Properties (); properties.setProperty ( "mail.host", "smtp.qq.com"); properties.setProperty ( "mail.transport.protocol", "smtp"); properties.setProperty ( "mail.smtp.auth", "true"); properties.setProperty ( "mail.smtp.socketfactory.class", "javax.net.ssl.sslsocketfactory"); properties.setProperty ( "mail.smtp.port", "465"); 세션 세션. 세션 .SetDeBug (true);
2 단계 : 이메일을 구성하십시오
mimemessage mimemessage = new mimemessage (세션); mimemessage.addrecipients (message.recipienttype.to, "[email protected]"); // 수신자 mimemessage.addrecipients를 설정합니다 (message.recipienttype.cc, "[email protected]") mimemessage.setfrom ( "[email protected]"); // 이메일 발신자 mimemessage.setsubject ( "테스트 이메일 주제"); // 이메일 주제 mimemessage.setContent ( "hello, 이것은 테스트 이메일", "text/html; charset = utf-8"); // text
3 단계 : 이메일 보내기
전송 전송 = session.getTransport (); rantlation.connect ( "smtp.qq.com", "[email protected]", "허가 코드"); rantlicans.sendmessage (Mimemesage, mimemessage.getallrecipients ()); // 두 번째 매개 변수는 수신자 (); Close ();
복잡한 이메일
복잡한 이메일을 보낼 때 첫 번째 및 세 번째 단계는 동일합니다. 두 번째 단계 만 이메일을 구성하는 데 더 번거 롭습니다. 그런 다음 사진과 텍스트 + 두 첨부 파일을 보내는 이메일을 보여 드리겠습니다. 복잡한 이메일을 보내려면 먼저 다음과 같이 세 가지 개념에 익숙해야합니다.
1. Mimemessage :이 클래스는 MIME 유형과 헤더를 이해할 수있는 이메일 메시지입니다.
2.Mimemultipart :이 클래스는 이메일의 다른 부분을 추가, 삭제 및 얻는 방법을 정의합니다.
3.MimeBodyPart :이 개체는 Mimemessage 객체의 내용의 일부를 나타냅니다. 각 MimebodyPart는 두 부분이있는 것으로 간주됩니다.이 유형과 일치하는 Mime 유형 및 컨텐츠
완전한 이메일 생성 프로세스는 다음과 같습니다 (첫 번째 및 세 번째 단계는 위 참조) :
mimemessage mimemessage = new mimemessage (세션); mimemessage.addrecipients (message.recipienttype.to, "[email protected]"); // 수신자 mimemessage.addrecipients를 설정합니다 (message.recipienttype.cc, "[email protected]") mimemessage.setfrom ( "[email protected]"); // 이메일 발신자 mimemessage.setsubject ( "테스트 이메일 주제"); // 이메일 주제 mimemultipart mixed = new Mimemultipart ( "Mixed"); mimemessage.setcontent (mixed); 믹스 첨부 첨부 상태로 설정 mimebodypart (); // 첨부 파트 생성 1mimebodypart attach2 = new MimebodyPart (); // 첨부 파트 생성 2MimeBodyPart content = new MimeBodyPart (); // email body mixed.addbodypart (autch1); // Attachment Body Mixed.addbodypart (첨부); // mime message adding adding add add add add add add add add mixed.addodypart (content); // 메시지 본문에 신체 추가 filedatasource fds1 = new FileDatasource (새 파일 ( "c : //users//sang//desktop//1.png"); // 첨부 데이터 소스 One Datahandler DH1 = New DatahAndler (FDS1); // 데이터 프로세스 구성. 첨부 1.setDataHandler (dh1); // 첨부 파일의 데이터 소스를 설정합니다 1 autched1.setfilename ( "1.png"); // 첨부 파일의 파일 이름을 설정하십시오 1 // 첨부 파일의 작동은 첨부 파일 1과 유사하므로 여기에 각각 주석을주지 않습니다. filedatasource fds2 = new FileDatasource (새 파일 ( "c : // user // sang // sang // blog note.xlsx"); datahandler dh2 = new datahandler (fds2); att 이름, 중국어가있는 경우 Mimemultipart BodyMimemultipart = New Mimemultipart ( "관련")를 피하기 위해 MimeUtility 클래스의 encodetext 메소드를 통해 인코딩 할 수 있습니다. // 신체 내용의 마임 유형을 설정합니다. mimebodypart (); // html bodypart.setContent의 일부 부분 ( "<h1> 안녕하세요, 모두, 이것은 테스트 이메일 <img src = 'cid : 2.png'// </h1>", "text/html; charset = utf-8"); mimebodypart = new MimePartPart (); // New Datahandler (New Filedatasource ( "C : //users//sang//desktop//2.png"); picpart.setdatahandler (Datahandler); picpart.setContentId ( "2.png"); // 신체의 html과 이미지 부분을 BodyMimemultIpart.addbodyPart (BodyPart)에 추가합니다. bodymimemultipart.addbodypart (Picpart); mimemessage.sevechanges ();
자, Java Mail로 QQ 이메일을 보내는 것은 간단합니다. 163, Sina 등과 같은 다른 것들에 관해서는, 글쓰기 스타일도 비슷합니다. 여기서는 자세히 설명하지 않을 것입니다.
요약
위는 편집자가 소개 한 SpringBoot에서 QQ 이메일 기능의 구현 코드입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!