package com.test.mail;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import java.io.*;
/**
*收发邮件
*@author aa
*@version jdk1.4.1 tomcat5.1.0
*/
public class MailBean {
/**MIME邮件对象*/
private MimeMessage mimeMsg=null;
/**邮件会话对象*/
private Session mailSession=null;
/**Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象*/
private Multipart mp=null;
/**
*构造函数,初始化
*/
public MailBean() {
}
/**
* 发件初始化
*
*/
public void init() {
try {
Properties props = System.getProperties(); //获得系统属性对象
//props.put("mail.smtp.port","25");
props.put("mail.smtp.auth", "true");
mailSession = Session.getInstance(props, null); //获得邮件会话对象
mimeMsg = new MimeMessage(mailSession); //创建MIME邮件对象
mp = new MimeMultipart();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
*设置主题
*@param mailSubject 主题
*@return 返回设置主题是否成功,成功则true,否则false
*/
public boolean setSubject(String mailSubject) {
try {
mimeMsg.setSubject(mailSubject);
return true;
} catch (Exception e) {
return false;
}
}
/**
*设置主体
*@param mailBody 主体
*@return 返回设置主体是否成功,成功则true,否则false
*/
public boolean setBody(String mailBody) {
try {
BodyPart bp = new MimeBodyPart();
bp.setContent(
"<meta http-equiv=Content-Type content=text/html;charset=gb2312>"
+ mailBody,
"text/html;charset=gb2312");
mp.addBodyPart(bp);
return true;
} catch (Exception e) {
return false;
}
}
/**
*添加附件
*@param filename 附件地址
*@return 返回添加附件是否成功,成功则true,否则false
*/
public boolean addAttach(String filename) {
try {
BodyPart bp = new MimeBodyPart();
FileDataSource fileds = new FileDataSource(filename);
bp.setDataHandler(new DataHandler(fileds));
bp.setFileName(fileds.getName());
mp.addBodyPart(bp);
return true;
} catch (Exception e) {
return false;
}
}
/**
*设置发件人
*@param from 发件人
*@return 返回设置发件人是否成功,成功则true,否则false
*/
public boolean setFrom(String from) {
try {
mimeMsg.setFrom(new InternetAddress(from)); //设置发信人
return true;
} catch (Exception e) {
return false;
}
}
/**
*设置收件人
*@param to 收件人
*@return 返回设置收件人是否成功,成功则true,否则false
*/
public boolean setTo(String to) {
try {
mimeMsg.setRecipients(
Message.RecipientType.TO,
InternetAddress.parse(to));
return true;
} catch (Exception e) {
return false;
}
}
/**
*设置收件人
*@param copyto 收件人
*@return 返回设置收件人是否成功,成功则true,否则false
*/
public boolean setCopyTo(String copyto) {
try {
mimeMsg.setRecipients(
Message.RecipientType.CC,
(Address[]) InternetAddress.parse(copyto));
return true;
} catch (Exception e) {
return false;
}
}
/**
*发件操作
* @param smtpServer
* @param smtpUser
* @param smtpPassword
* @return 返回发送成功信息
*/
public String send(String smtpServer,String smtpUser,String smtpPassword) {
String str = null;
try {
mimeMsg.setContent(mp);
mimeMsg.saveChanges();
Transport transport = mailSession.getTransport("smtp");
transport.connect(smtpServer,smtpUser,smtpPassword);
transport.sendMessage(
mimeMsg,
mimeMsg.getRecipients(Message.RecipientType.TO));
transport.close();
str = "发邮件成功!";
} catch (Exception e) {
str = e.toString();
}
return str;
}
/**
*收件操作
*@param popServer 收件服务器
*@param popUser 收件用户名
*@param popPassword 收件密码
*@return 返回收件结果,若不成功返回错误信息
*/
public String receive(
String popServer,
String popUser,
String popPassword) {
String str = "";
Store store = null;
Folder folder = null;
try {
Properties props = System.getProperties();
Session session = Session.getDefaultInstance(props, null);
store = session.getStore("pop3");
store.connect(popServer, popUser, popPassword);
folder = store.getDefaultFolder();
if (folder == null)
throw new Exception("No default folder");
folder = folder.getFolder("INBOX");
if (folder == null)
throw new Exception("No POP3 INBOX");
folder.open(Folder.READ_ONLY);
Message[] msgs = folder.getMessages();
for (int msgNum = 0; msgNum < msgs.length; msgNum++) {
str+= printMessage(msgs[msgNum]);
}
} catch (Exception ex) {
str+= ex.toString();
} finally {
try {
if (folder != null)
folder.close(false);
if (store != null)
store.close();
} catch (Exception ex2) {
str+= ex2.toString();
}
}
return str;
}
/**
*显示邮件内容
*@param message 邮件对象
*@return 返回邮件内容
*/
public String printMessage(Message message) {
String str = "<table>";
try {
//From
String from =
((InternetAddress) message.getFrom()[0]).getPersonal();
if (from == null)
from = ((InternetAddress) message.getFrom()[0]).getAddress();
str += "<tr><Td>FROM: " + from + "</td></tR>";
//Subject
String subject = message.getSubject();
str += "<tr><Td>SUBJECT: " + subject + "</td></tr>";
Part messagePart = message;
Object content = messagePart.getContent();
if (content instanceof Multipart) {
messagePart = ((Multipart) content).getBodyPart(0);
}
//ContentType
String contentType = messagePart.getContentType();
str+= "<tr><Td>CONTENT:"
+ contentType
+ "</tD></tr><tr><Td valign=top>";
//Content
if (contentType.startsWith("text/plain")
|| contentType.startsWith("text/html")) {
InputStream is = messagePart.getInputStream();
BufferedReader reader =
new BufferedReader(new InputStreamReader(is));
String thisLine = reader.readLine();
while (thisLine != null) {
str += thisLine;
thisLine = reader.readLine();
}
}
str += "</tD></tr>";
} catch (Exception ex) {
str += "<tr><td>" + ex.toString() + "</tD></tR>";
}
str+= "</table>";
return str;
}
}