1. 이메일 소개
이메일은 다음과 같은 많은 정보로 구성되어 있습니다. 참고자료 등 기타 정보는 당분간 고려되지 않습니다.
1. 수신자: 수신자의 이메일 주소(예: [email protected])
2. 수신자 이름: loadfate [email protected]과 같이 대부분의 이메일이 표시될 때 표시됩니다.
3. 보내는 사람 : 보내는 사람의 이메일 주소
4. 보내는 사람의 이름:
5. 제목 : 이메일 제목
6. 내용 및 첨부파일 : 이메일의 주요 내용
2. Java를 사용하여 이메일을 보내는 일반적인 단계
일반 프로젝트에서는 별도의 메일서버가 없으며, 일반적으로 타인의 서버를 사용합니다.
1. SMTP 서버 설정: 메일 서버마다 주소가 다릅니다. 예를 들어 smtp.qq.com은 Tencent의 SMTP 서버를 나타냅니다.
2. 인증: 서버의 계정과 비밀번호를 사용하여 서버에 로그인합니다.
3. 이메일 만들기: 보낸 사람, 받는 사람, 내용 등 모든 정보가 포함된 이메일을 만듭니다.
4. 이메일 속성을 설정합니다. 이메일 속성에 데이터를 추가합니다.
5. 이메일 보내기: 패키지가 다르기 때문에 보내는 방법이 일치하지 않습니다.
3. 자바 메일과 아파치 메일
Apache Mail은 Java Mail을 캡슐화한 것으로, 사용이 더 쉽고 논리적 계층 구조에 대한 이해가 더 좋습니다.
Java Mail을 사용하려면 jar 패키지인 mail.jar만 가져오면 됩니다.
Apache Mail을 사용하는 경우 두 개의 jar 패키지(mail.jar 및 commons-email-1.3.1.jar)를 가져와야 합니다.
4. Java Mail을 사용하여 이메일 보내기
다음과 같이 코드 코드를 복사합니다.
public static void main(String[] args)에서 예외가 발생합니다.
최종 문자열 사용자 = "779554589";
최종 문자열 비밀번호 = "";
문자열 fromAddress = "[email protected]";
String toAddress = "[email protected]";
String subject = "이메일 테스트 제목";
문자열 내용 = "테스트 이메일입니다<b>하하</b>";
//구성 매개변수
속성 props = 새 속성();
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.host", "smtp.qq.com");
//방법 1: 전송 개체를 사용하여 이메일 보내기
{
//매개변수를 통해 세션 생성
세션 세션 = Session.getInstance(props);
//디버그 모드 활성화
session.setDebug(true);
//이메일 생성 및 정보 설정
메시지 메시지 = new MimeMessage(session);
message.setFrom(new InternetAddress(fromAddress));
message.setSubject(제목);
message.setText(content);
//전송 생성
전송 전송 = session.getTransport();
//smtp 서버에 연결
Transport.connect(사용자, 비밀번호);
//보내다
Transport.sendMessage(message, new InternetAddress[] { new InternetAddress(toAddress) });
운송.닫기();
}
//방법 2: Transport 클래스의 정적 메서드를 사용하여 이메일 보내기
{
//Session 생성 시 승인된 연결을 얻습니다.
세션 세션 = Session.getInstance(props, new Authenticator() {
@보수
보호된 PasswordAuthentication getPasswordAuthentication() {
새로운 PasswordAuthentication(사용자, 비밀번호)를 반환합니다.
}
});
session.setDebug(true);
//이메일 생성 및 정보 설정
메시지 메시지 = new MimeMessage(session);
message.setSubject(제목);
message.setFrom(new InternetAddress(fromAddress));
message.setRecipient(RecipientType.TO, new InternetAddress(toAddress));
message.setContent(content, "text/html;charset=utf-8");
//직접 보내기, 승인된 Session을 통해 메시지가 생성됨
Transport.send(message);
}
}
5. Apache Mail을 사용하여 이메일 보내기
다음과 같이 코드 코드를 복사합니다.
공개 클래스 ApacheMailTest {
// smtp 서버
개인 문자열 호스트 이름 = "smtp.qq.com";
//계정과 비밀번호
개인 문자열 userName = "779554589";
private String 비밀번호 = "이것은 비밀입니다";
// 발신자
개인 문자열 fromAddress = "[email protected]";
// 보내는 사람 이름
개인 문자열 fromName = "loadfate";
public static void main(String[] args)에서 예외가 발생합니다.
//받는 사람과 받는 사람 이름
String toAddress = "[email protected]";
String toName = "loadfate";
ApacheMailTest 테스트 = 새로운 ApacheMailTest();
// 쉬운 탐색을 위해 모든 예외가 처리됩니다.
test.sendSimpleEmail(toAddress, toName);
test.sendHtmlEmail(toAddress, toName);
test.sendMultiPartEmail(toAddress, toName);
System.out.println("보내기 완료");
}
//메시지와 유사한 간단한 이메일 보내기
public void sendSimpleEmail(String toAddress, String toName)이 예외를 발생시킵니다.
SimpleEmail 이메일 = new SimpleEmail();
email.setHostName(hostName);//smtp 서버 설정
email.setAuthentication(userName, 비밀번호);//인증정보 설정
email.setCharset("utf-8");
email.setFrom(fromAddress, fromName, "utf-8");//발신자 정보 설정
email.addTo(toAddress, toName, "utf-8");//수신자 정보 설정
email.setSubject("Test Subject");//제목을 설정합니다
email.setMsg("간단한 테스트입니다!");//이메일 내용 설정
email.send();//이메일 보내기
}
//Html 내용이 포함된 이메일 보내기
public void sendHtmlEmail(String toAddress, String toName)이 예외를 발생시킵니다.
HtmlEmail 이메일 = 새로운 HtmlEmail();
email.setHostName(호스트이름);
email.setAuthentication(사용자 이름, 비밀번호);
email.setCharset("utf-8");
email.addTo(toAddress, toName, "utf-8");
email.setFrom(fromAddress, fromName, "utf-8");
email.setSubject("html 이메일입니다.");
// html 콘텐츠를 설정합니다. 실제 사용 시 텍스트에서 작성된 html 코드를 읽을 수 있습니다.
email.setHtmlMsg("<div style='width:100px;height:200px;'>a</div>");
이메일.send();
}
//첨부파일 등 복잡한 이메일을 보냅니다.
public void sendMultiPartEmail(String toAddress, String toName)이 예외를 발생시킵니다.
MultiPartEmail 이메일 = null;
이메일 = 새로운 MultiPartEmail();
email.setHostName(호스트이름);
email.setAuthentication(사용자 이름, 비밀번호);
email.setCharset("utf-8");
email.addTo(toAddress, toName, "utf-8");
email.setFrom(fromAddress, fromName, "utf-8");
email.setSubject("첨부파일이 포함된 이메일입니다.");
email.setMsg("<a href='#'>테스트 콘텐츠</a>");
//이메일에 추가 콘텐츠 추가
EmailAttachment 첨부 파일 = 새 EmailAttachment();
attachment.setPath("D://mail.txt");//로컬 파일
// attachment.setURL(새 URL("http://xxx/a.gif"));//원격 파일
attachment.setDisposition(EmailAttachment.ATTACHMENT);
attachment.setDescription("설명 정보");
// 인코딩해야 하는 첨부 파일 표시 이름을 설정합니다. 그렇지 않으면 중국어가 왜곡됩니다.
attachment.setName(MimeUtility.encodeText("Mail.txt"));
//이메일에 첨부파일 추가
email.attach(첨부파일);
이메일.send();
}
}
6. 첨부 프로젝트 폴더 : maildemo
다운로드 주소: http://pan.baidu.com/s/1bn1Y6BX
질문이나 제안 사항이 있으면 저에게 연락해주세요.
파일 설명:
1. maildemo.zip: maildemo의 소스 코드
2. mail.jar: Java Mail의 Jar 패키지
3. commons-email-1.3.1.jar: Apache Mail의 jar 패키지