mailbox.java
来自「基于Sturts+Spring+Hibernate的一个高级销售管理系统。内容丰」· Java 代码 · 共 310 行
JAVA
310 行
package com.yuanchung.sales.util.emailutil;
import java.io.IOException;
import java.util.Date;
import java.util.Enumeration;
import java.util.Properties;
import java.util.Vector;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.AuthenticationFailedException;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import org.apache.log4j.Logger;
/**
*
* @author 福建圆创软件;
* @function 构造邮箱工具类;
*/
public class MailBox {
private static Logger logger = Logger.getLogger(MailBox.class);// 记载日志
private String mailTo = null;// 邮件接受者;
private String mailFrom = null;// 邮件发送者
private String smtpHost = null;// 邮件服务器地址;
private boolean debug = false;// 是否采用调试方式
private String messageBasePath = null;
private String subject = null;// 邮件主题;
/** 邮件内容* */
private String msgContent;// 邮件主题内容;
private String messageContentMimeType = "text/html; charset=utf-8";// 设置邮件类型和编码;
private Vector attachedFileList;// 附件列表;
private String mailAccount = null;// 邮件数量;
private String mailPass = null;
private String mailbccTo = null;// 接受者b--发送副本给附加人b;
private String mailccTo = null;// 接受者c--发送副本给附加人c;s
// 构造函数;
public MailBox() {
super();
}
// 实例化方法;
public void init() {
}
/**
* @author 福建圆创软件;
* @function 封装邮件,把必要的信息装载进邮件;
* @param session
* 在邮件发送中的会话
* @param msg
* 邮件对象;
* @throws IOException
* 输入输出流异常;
* @throws MessagingException
* 邮件异常;
*/
private void fillMail(Session session, MimeMessage msg) throws IOException,
MessagingException {
String fileName = null;
Multipart mPart = new MimeMultipart();
/**判断发件人是否为空**/
if (mailFrom != null) {
msg.setFrom(new InternetAddress(mailFrom));
logger.debug("发送人Mail地址:" + mailFrom);
} else {
logger.debug("没有指定发送人邮件地址!");
return;
}
/**判断收件人是否为空**/
if (mailTo != null) {
InternetAddress[] address = InternetAddress.parse(mailTo);
msg.setRecipients(Message.RecipientType.TO, address);
logger.debug("收件人Mail地址:" + mailTo);
} else {
logger.debug("没有指定收件人邮件地址!");
return;
}
/**邮件附加收件人c是否为空**/
if (mailccTo != null) {
InternetAddress[] ccaddress = InternetAddress.parse(mailccTo);
logger.debug("CCMail地址:" + mailccTo);
msg.setRecipients(Message.RecipientType.CC, ccaddress);
}
/**邮件附加收件人b是否为空**/
if (mailbccTo != null) {
InternetAddress[] bccaddress = InternetAddress.parse(mailbccTo);
logger.debug("BCCMail地址:" + mailbccTo);
msg.setRecipients(Message.RecipientType.BCC, bccaddress);
}
msg.setSubject(subject);//设置主题
InternetAddress[] replyAddress = { new InternetAddress(mailFrom) };//设置回信地址;
msg.setReplyTo(replyAddress);//传入回信地址位置;
MimeBodyPart mBodyContent = new MimeBodyPart();//设置邮件主体部分;
/**判断邮件主体是否为空**/
if (msgContent != null)//如果内容不为空;
mBodyContent.setContent(msgContent, messageContentMimeType);//设置主体的编码;
else{
mBodyContent.setContent("", messageContentMimeType);
}
mPart.addBodyPart(mBodyContent);//总体部分加入主体部分;
/**附件位置s**/
if (attachedFileList != null) {
for (Enumeration fileList = attachedFileList.elements(); fileList
.hasMoreElements();) {
fileName = (String) fileList.nextElement();
MimeBodyPart mBodyPart = new MimeBodyPart();
FileDataSource fds = new FileDataSource(messageBasePath
+ fileName);
logger.debug("Mail发送的附件为:" + messageBasePath + fileName);
mBodyPart.setDataHandler(new DataHandler(fds));
mBodyPart.setFileName(fileName);
mPart.addBodyPart(mBodyPart);
}
}
msg.setContent(mPart);//邮件加入总体部分;
msg.setSentDate(new Date());//发送时间
}
/**
* @author 福建圆创软件;
* @function 发送邮件;
* @return 返回类型为int,1为成功,3为失败;
* @throws IOException
* @throws MessagingException
*/
public int sendMail() throws IOException, MessagingException {
int loopCount;
Properties props = System.getProperties();
props.put("mail.smtp.host", smtpHost);
props.put("mail.smtp.auth", "true");
MailAuthenticator auth = new MailAuthenticator();
Session session = Session.getInstance(props, auth);
session.setDebug(debug);
MimeMessage msg = new MimeMessage(session);
Transport trans = null;
try {
fillMail(session, msg);
trans = session.getTransport("smtp");
try {
trans.connect(smtpHost, MailAuthenticator.LU_MAIL_USER,
MailAuthenticator.LU_MAIL_PASSWORD);
} catch (AuthenticationFailedException e) {
e.printStackTrace();
logger.debug("连接邮件服务器错误:");
return 3;
} catch (MessagingException e) {
logger.debug("连接邮件服务器错误:");
return 3;
}
trans.send(msg);
trans.close();
} catch (MessagingException mex) {
logger.debug("发送邮件失败:");
mex.printStackTrace();
Exception ex = null;
if ((ex = mex.getNextException()) != null) {
System.out.println(ex.toString());
ex.printStackTrace();
}
return 3;
} finally {
try {
if (trans != null && trans.isConnected())
trans.close();
} catch (Exception e) {
System.out.println(e.toString());
}
}
logger.debug("发送邮件成功!");
return 0;
}
public String getMailTo() {
return mailTo;
}
public void setMailTo(String mailTo) {
this.mailTo = mailTo;
}
public String getMailFrom() {
return mailFrom;
}
public void setMailFrom(String mailFrom) {
this.mailFrom = mailFrom;
}
public String getSmtpHost() {
return smtpHost;
}
public void setSmtpHost(String smtpHost) {
this.smtpHost = smtpHost;
}
public boolean isDebug() {
return debug;
}
public void setDebug(boolean debug) {
this.debug = debug;
}
public String getMessageBasePath() {
return messageBasePath;
}
public void setMessageBasePath(String messageBasePath) {
this.messageBasePath = messageBasePath;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getMsgContent() {
return msgContent;
}
public void setMsgContent(String msgContent) {
this.msgContent = msgContent;
}
public String getMessageContentMimeType() {
return messageContentMimeType;
}
public void setMessageContentMimeType(String messageContentMimeType) {
this.messageContentMimeType = messageContentMimeType;
}
public Vector getAttachedFileList() {
return attachedFileList;
}
public void setAttachedFileList(Vector attachedFileList) {
this.attachedFileList = attachedFileList;
}
public String getMailAccount() {
return mailAccount;
}
public void setMailAccount(String mailAccount) {
this.mailAccount = mailAccount;
}
public String getMailPass() {
return mailPass;
}
public void setMailPass(String mailPass) {
this.mailPass = mailPass;
}
public String getMailbccTo() {
return mailbccTo;
}
public void setMailbccTo(String mailbccTo) {
this.mailbccTo = mailbccTo;
}
public String getMailccTo() {
return mailccTo;
}
public void setMailccTo(String mailccTo) {
this.mailccTo = mailccTo;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?