Commons-Email 간단한 자습서
6209 단어 commons-email
SimpleEmail로 메일 보내기
java.lang.Object
org.apache.commons.mail.Email
org.apache.commons.mail.SimpleEmail
SimpleEmail email = new SimpleEmail();
email.setHostName("mail.4ya.cn");
email.setAuthentication("<username>","<password>")
email.addTo("[email protected]", "martin");
email.setFrom("[email protected]", "martin");
email.setSubject(" ");
email.setMsg(" ");
email.send();
코드에 있는 글자의 뜻처럼 간단하다.
1: Simple Email 대상 만들기 2: 메시지를 보내는 smtp 서버를 설정합니다. 설정이 없으면 시스템 변수에서 메일을 찾습니다.host 값.3: smtp 사용자 및 비밀번호 설정 4: 받는 사람 5: 보내는 사람 6: 테마 7: 내용 8: 보내는 사람
2: 첨부된 메일 보내기
우리는 본 컴퓨터의 첨부 파일을 보낼 수 있습니다. 물론 우리는 본 컴퓨터가 아닌 첨부 파일을 보낼 수도 있습니다. 만약에 인터넷에 존재하는 첨부 파일의 URL을 보내면 메일이 발송될 때 자동으로 다운로드되어 첨부 파일에 추가됩니다.
1:) :
EmailAttachment attachment = new EmailAttachment();
attachment.setPath("test/test.rar");
attachment.setDisposition(EmailAttachment.ATTACHMENT);
attachment.setDescription("python resource");
attachment.setName("resource");
2:)
EmailAttachment attachment = new EmailAttachment();
attachment.setURL(new URL("http://www.smilinglibrary.org/sldoc/pics/index03.jpg"));
attachment.setDisposition(EmailAttachment.ATTACHMENT);
attachment.setDescription(" ");
attachment.setName(" ");
next,
MultiPartEmail email = new MultiPartEmail();
email.setHostName("mail.4ya.cn");
email.setAuthentication("<username>","<password>")
email.addTo("[email protected]", "martin");
email.setFrom("[email protected]", "martin");
email.setSubject(" ");
email.setMsg(" ");
//
email.attach(attachment);
//
email.send();
, EmailAttachement,
email.attach(attachment1)
email.attach(attachment2)
3: html 형식의 메일 보내기
HtmlEmail Html :
java.lang.Object
org.apache.commons.mail.Email
org.apache.commons.mail.MultiPartEmail
org.apache.commons.mail.HtmlEmail
:
1//HtmlEmail!
HtmlEmail email = new HtmlEmail();
email.setHostName("mail.4ya.cn");
email.setAuthentication("<username>","<password>")
email.addTo("[email protected]"martin");
email.setFrom("[email protected]"martin");
email.setSubject(" : html ");
// embed the image and get the content id
// :embed :cid:xxx url
URL url = new URL("http://www.apache.org/images/asf_logo_wide.gif");
String cid = email.embed(url, "Apache logo");
/**
set the html message
HtmlEmail extends Email , setMsg(), , setMsg(), setHtmlMsg setTextMsg
**/
email.setHtmlMsg("<html>The apache logo - <img src=\"cid:"+cid+"\"></html>");
// set the alternative message
email.setTextMsg("Your email client does not support HTML messages");
//set mail
email.send();
마지막
더 복잡한authenticator가 필요하다면javax를 확장할 수 있습니다.mail.Authenticator, 당신의 물건을 실현하고 이메일을 호출합니다.setAuthenticator(javax.mail.Authenticator newAuthenticator)
이 점은 jakarta도 했습니다. default Authenticator를 제공해 주었습니다.
java.lang.Object
javax.mail.Authenticator
org.apache.commons.mail.DefaultAuthenticator
이 방법을 덮어쓰고 당신의 동동o_o
protected javax.mail.PasswordAuthentication getPasswordAuthentication()
겸사겸사 다시 한 번 정리하자면, 친구가 토론한 jakartacommons 이메일에 문제가 생겼습니다.
1: SimpleEmail을 통한 중국어 컨텐츠 오류 문제
SimpleEmail 코드는 다음과 같습니다.
public class SimpleEmail extends Email {
/**
* Set the content of the mail
*
* @param msg A String.
* @return An Email.
* @throws EmailException see javax.mail.internet.MimeBodyPart
* for definitions
* @since 1.0
*/
public Email setMsg(String msg) throws EmailException {
if (EmailUtils.isEmpty(msg)) {
throw new EmailException("Invalid message supplied");
}
setContent(msg, Email.TEXT_PLAIN);
return this;
}
}
기본적으로,
1public static final String TEXT_PLAIN = "text/plain";
인코딩이 지정되지 않았습니다.
SimpleEmail을 통해 보내는 경우 코드를 지정해야 합니다: WaterYe@ITO설명
1email.setContent("테스트 메일", "text/plain;charset=GBK"),
2: 첨부 파일의 중국어 이름 부호에 대한 질문:
MimeUtility 필요
그 이유는 MIME의 상응하는 규범(RFC2047 등)에서 첨부 파일 제목이 US-ASCII 문자이어야 한다는 것을 설명하기 때문에 중국어 제목의 첨부 파일을 보낼 때 US-ASCII 문자로 인코딩해야 하는데 두 가지 인코딩 방식이 있다. B(BASE64), Q(Quoted-Printable), 이런 방법은 MimeUtility에서
모두 봉인되었기 때문에 첨부 파일을 보낼 때 다음과 같이 사용합니다.
1MimeUtility.encodeText(filename));
EmailAttachment attachment = new EmailAttachment();
attachment.setPath("c:\\ .txt");
attachment.setDisposition(EmailAttachment.ATTACHMENT);
attachment.setDescription(" ");
//
attachment.setName(MimeUtility.encodeText(" .txt"));
MultiPartEmail email = new MultiPartEmail();
email.setHostName("192.168.0.3");
email.setAuthentication("martin.xus", "1234");
email.addTo("[email protected]", "martin");
email.setFrom("[email protected]", "martin");
email.setSubject(" ");
email.setMsg(" ");
//
email.attach(attachment);
//
email.send();
end
---------------------------------------------------------------------------------