Commons:Apache Commons Emailをカプセル化してメール送信を簡素化
参考資料
1 Apache Commons Emailでメールを簡略化
http://www.blogjava.net/fastunit/archive/2008/01/25/177799.html
私がテストする時に使ったのは:新浪のメールボックス:smtp.sina.comでもいいです
次のように設定します.
Exception: javax.net.ssl.SSLException:Unrecognized SSL message,plaintext connection参考文章:http://zhidao.baidu.com/question/227409027.html解答:JavaMailのPropertiesを構成する場合、mailを指定しないでください.smtp.socketFactory.class、TLSは普通のSocketを使っているからです.次にプロパティmailを指定します.smtp.starttls.义齿
紹介する
Commons Emailはjavamailをカプセル化しており、非常に簡単に使用できます.機能:簡易テキストメール、添付ファイル付きメール、HTML形式のメール公式トップページ:http://commons.apache.org/email/現在の最新バージョンは1.2の公式例です.http://commons.apache.org/email/userguide.html
エンジニアリング環境:XP+Myeclipse 6.5+JDK1.6
一実現機能
1よく使われる4種類のEmailを送信する方法(テキスト,html,img,file)をカプセル化し,ユーザは1つの工場クラスを呼び出して対応するメールの属性,例えばfrom,to,cc,subject,text,あるいはメッセージオブジェクト2を伝達するだけでメール添付ファイルの中国語チップ問題を解決する3チェーンスタイル4をサポートする複数のメッセージ(text,html,img,file)を混合送信することができる
二工程写真
パッケージされたjar:emailを使用することもできますcommons.util.jar
添付ファイルを参照
三呼び出し説明
1テキストメッセージの送信
2添付ファイルを含むメッセージの送信
3 Html形式メッセージの送信
四コードは以下の通りです.
1メッセージ送信クラス:MailMessageFactory
2メッセージ・オブジェクト:SendMessage
3 MailType.java
4 SendMailType.java
5その他のクラスはSを参照
pringのEmail<一般的な4種類のEmailを送信する方法(TEXT,HTML,IMG,FILE)>をカプセル化しています.
http://liuzidong.iteye.com/blog/1114783
1 Apache Commons Emailでメールを簡略化
http://www.blogjava.net/fastunit/archive/2008/01/25/177799.html
私がテストする時に使ったのは:新浪のメールボックス:smtp.sina.comでもいいです
次のように設定します.
Exception: javax.net.ssl.SSLException:Unrecognized SSL message,plaintext connection参考文章:http://zhidao.baidu.com/question/227409027.html解答:JavaMailのPropertiesを構成する場合、mailを指定しないでください.smtp.socketFactory.class、TLSは普通のSocketを使っているからです.次にプロパティmailを指定します.smtp.starttls.义齿
紹介する
Commons Emailはjavamailをカプセル化しており、非常に簡単に使用できます.機能:簡易テキストメール、添付ファイル付きメール、HTML形式のメール公式トップページ:http://commons.apache.org/email/現在の最新バージョンは1.2の公式例です.http://commons.apache.org/email/userguide.html
エンジニアリング環境:XP+Myeclipse 6.5+JDK1.6
一実現機能
1よく使われる4種類のEmailを送信する方法(テキスト,html,img,file)をカプセル化し,ユーザは1つの工場クラスを呼び出して対応するメールの属性,例えばfrom,to,cc,subject,text,あるいはメッセージオブジェクト2を伝達するだけでメール添付ファイルの中国語チップ問題を解決する3チェーンスタイル4をサポートする複数のメッセージ(text,html,img,file)を混合送信することができる
二工程写真
パッケージされたjar:emailを使用することもできますcommons.util.jar
添付ファイルを参照
三呼び出し説明
1テキストメッセージの送信
//
//
MailMessageFactory mms = new MailMessageFactory();
mms.setSubject(" Apache Commons Email ").setText(" ").send();
2添付ファイルを含むメッセージの送信
MailMessageFactory mms = new MailMessageFactory(SendMailType.FILE);
mms.setSubject(" Apache Commons Email ").setText(" ")
.setEmailAttachment(" .jpg"," ","c:\\4.jpg").send();
3 Html形式メッセージの送信
MailMessageFactory mms = new MailMessageFactory(SendMailType.HTML);
String html = "<html><head><meta http-equiv='content-type' content='text/html; charset=GBK'>"
+ "</head><body><h1> Apache Commons Email </h1><img src=\"cid:img0\"><br><img src=\"cid:img1\"></body></html>";
mms.setSubject(" Apache Commons Email ")
.setEmailAttachment(" .jpg"," ","c:\\4.jpg")
.setEmailHtmlImgAttachment(" 2.jpg"," 2","img0","c:\\5.jpg")
.setEmailHtmlImgUrl("apache.jpg",null, "img1","http://www.apache.org/images/asf_logo_wide.gif")
.setHtmlText(html)
.send();
四コードは以下の通りです.
1メッセージ送信クラス:MailMessageFactory
package net.liuzd.email.commons;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
import javax.mail.MessagingException;
import javax.mail.internet.MimeUtility;
import net.liuzd.email.EmailEntity;
import org.apache.commons.mail.Email;
import org.apache.commons.mail.EmailAttachment;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
import org.apache.commons.mail.MultiPartEmail;
import org.apache.commons.mail.SimpleEmail;
/**
* Title: Description: Copyright: Copyright (c) 2011
* Company:http://liuzidong.iteye.com/ Makedate:2011-7-5 02:23:49
* @author liuzidong
* @version 1.0
* @since 1.0
*
*/
public class MailMessageFactory {
private Email email;
private SendMailType sendMailType;
private SendMessage sendMessage;
private static final String ENCODING = EmailEntity.EMAIL_ENCODING;
/**
*
*/
public MailMessageFactory() {
this(SendMailType.TEXT);
}
public MailMessageFactory(SendMailType sendMailType) {
this.sendMailType = sendMailType;
sendMessage = new SendMessage();
switch (this.sendMailType) {
case TEXT:
email = new SimpleEmail();
break;
case HTML:
email = new HtmlEmail();
break;
case FILE:
email = new MultiPartEmail();
}
//
email.setHostName(EmailEntity.EMAIL_HOST);
email.setAuthentication(EmailEntity.EMAIL_USERNAME,EmailEntity.EMAIL_PASSWORD);
email.setCharset(ENCODING); //
}
/**
* @param to
* @return
*/
public MailMessageFactory setTo(String to) {
sendMessage.setTo(to);
return this;
}
/** */
public MailMessageFactory setSubject(String subject) {
sendMessage.setSubject(subject);
return this;
}
/** */
public MailMessageFactory setText(String text) {
sendMessage.addText(text);
return this;
}
public MailMessageFactory setHtmlText(String htmlText) {
sendMessage.addHtmlText(htmlText);
return this;
}
/**
*
* @param attachMentName Email
* @param description
* @param file
* @return
*/
public MailMessageFactory setEmailAttachment(String attachMentName,String description,String filePath){
try {
sendMessage.addFile(MailType.FILE, MimeUtility.encodeWord(attachMentName),description,null,filePath);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return this;
}
/**
* Email Html
* */
public MailMessageFactory setEmailHtmlImgAttachment(String attachMentName,String description,String cldName,String filePath){
try {
sendMessage.addFile(MailType.IMG, MimeUtility.encodeWord(attachMentName),description,cldName,filePath);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return this;
}
/**
* Email Html
* */
public MailMessageFactory setEmailHtmlImgUrl(String attachMentName,String description,String cldName,String url){
try {
sendMessage.addFile(MailType.URL, MimeUtility.encodeWord(attachMentName),description,cldName,url);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return this;
}
public void send(){
//
String to = sendMessage.getTo();
if(null == to || to.length() == 0){
to = EmailEntity.EMAIL_TO;
sendMessage.setTo(to);
}
String subject = sendMessage.getSubject();
if(null != subject && !"".equals(subject)){
email.setSubject(subject);
}
try {
email.addTo(sendMessage.getTo());
email.setFrom(EmailEntity.EMAIL_FROM);
String text = sendMessage.getEmailText();
if(null != text && !"".equals(text)){
// UTF-8, buildMimeMessage
try {
email.getMimeMessage().setText(text,ENCODING);
} catch (MessagingException e) {
e.printStackTrace();
}
//email.setMsg(text);
}
String html = sendMessage.getEmailHtmlText();
//
List<SendMessage> lists = sendMessage.getImages();
EmailAttachment attachment = null;
String filePath = null;
String imgName = null;
for(SendMessage entity : lists){
filePath = entity.getFilePath();
String clidName = entity.getCitName();
imgName = entity.getImgName();
if(entity.getMailType() == MailType.FILE){
attachment = new EmailAttachment();
attachment.setPath(filePath);
attachment.setDisposition(EmailAttachment.ATTACHMENT);
attachment.setDescription(entity.getDescription());
attachment.setName(entity.getImgName());
((MultiPartEmail)email).attach(attachment);
}else if(entity.getMailType() == MailType.IMG){
File file = new File(filePath);
imgName = entity.getImgName();
String cid = ((HtmlEmail) email).embed(file, MimeUtility.encodeText(imgName));
// html clid
html = html.replace(clidName, cid);
}else if(entity.getMailType() == MailType.URL){
URL url = new URL(filePath);
imgName = entity.getImgName();
String cid = ((HtmlEmail) email).embed(url, MimeUtility.encodeText(imgName));
html = html.replace(clidName, cid);
}
}
if(sendMailType != SendMailType.TEXT){
if(null != html && !"".equals(html) && sendMailType == SendMailType.HTML){
System.out.println("HTML: "+html);
((HtmlEmail)email).setHtmlMsg(html);
}
}
long startTime = System.currentTimeMillis();
email.send();
long endTime = System.currentTimeMillis();
System.out.println(sendMailType + " !, : " + (endTime - startTime)+" !");
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (EmailException e) {
e.printStackTrace();
}
}
}
2メッセージ・オブジェクト:SendMessage
public class SendMessage {
private String to;
private String subject;
private String description;
private String citName;
private String imgName;
private String filePath;
private MailType mailType;
private String form;
private List<String> texts = new ArrayList<String>();
private List<String> htmlTexts = new ArrayList<String>();
//
private List<SendMessage> images = new ArrayList<SendMessage>();
public MailType getMailType() {
return mailType;
}
public void setMailType(MailType mailType) {
this.mailType = mailType;
}
public void addFile(MailType mailType,String imgName,String description,String citName,String filePath){
images.add(new SendMessage(mailType,imgName,description,citName,filePath));
}
public void addText(String text){
texts.add(text);
}
public void addHtmlText(String htmlText){
htmlTexts.add(htmlText);
}
public SendMessage(MailType mailType,String imgName,String description,String citName,String filePath) {
super();
this.mailType = mailType;
this.imgName = imgName;
this.description = description;
this.citName = citName;
this.filePath = filePath;
}
public List<SendMessage> getImages() {
return images;
}
public void setImages(List<SendMessage> images) {
this.images = images;
}
public String getForm() {
return form;
}
public void setForm(String form) {
this.form = form;
}
public String getImgName() {
return imgName;
}
public void setImgName(String imgName) {
this.imgName = imgName;
}
public String getTo() {
return to;
}
public void setTo(String to) {
this.to = to;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public SendMessage() {
}
public SendMessage(String to, String subject, String text) {
super();
this.to = to;
this.subject = subject;
addText(text);
}
@Override
public String toString() {
return new StringBuilder()
.append(" : ").append(to)
.append(", : ").append(form)
.append(", : ").append(subject)
.append(", : ").append(getEmailText())
.append(", : ").append(getEmailHtmlText())
.toString();
}
public String getEmailText(){
StringBuilder sbr = new StringBuilder();
List<String> list = getTexts();
for(String text : list){
sbr.append(text);
}
return sbr.toString();
}
public String getEmailHtmlText(){
StringBuilder sbr = new StringBuilder();
List<String> list = getHtmlTexts();
for(String text : list){
sbr.append(text);
}
return sbr.toString();
}
public List<String> getTexts() {
return texts;
}
public void setTexts(List<String> texts) {
this.texts = texts;
}
public List<String> getHtmlTexts() {
return htmlTexts;
}
public void setHtmlTexts(List<String> htmlTexts) {
this.htmlTexts = htmlTexts;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getCitName() {
return citName;
}
public void setCitName(String citName) {
this.citName = citName;
}
public String getFilePath() {
return filePath;
}
public void setFilePath(String filePath) {
this.filePath = filePath;
}
}
3 MailType.java
public enum MailType {
/**
*
* */
IMG,
/**
*
* */
FILE,
/**
*
* */
URL;
@Override
public String toString() {
String message = null;
switch (this) {
case IMG :
message = ", ";
case URL :
message = ", ";
default:
message = ", ";
break;
}
return message;
}
}
4 SendMailType.java
public enum SendMailType {
/**
*
* */
TEXT,
/**
*
* */
FILE,
/**
* HTML ,
* **/
HTML;
@Override
public String toString() {
String message = null;
switch (this) {
case TEXT:
message = " ";
break;
case FILE:
message = " ";
break;
case HTML :
message = " html ";
break;
}
return message;
}
}
5その他のクラスはSを参照
pringのEmail<一般的な4種類のEmailを送信する方法(TEXT,HTML,IMG,FILE)>をカプセル化しています.
http://liuzidong.iteye.com/blog/1114783