package com.dtb.comment;
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import java.util.Date;
import com.dtb.utils.*;
import java.io.*;
public class JavaMail {
public String sendhost;
public String receivehost;
public String from;
public String passwd;
public String to;
public JavaMail(){
this.sendhost="发送服务器";
this.receivehost="接收服务器";
this.from="帐户";
this.passwd="密码";
}
/**
* 设置发邮件信息
*
*/
public void setSendMail(String to){
if(StringUtil.isFine(to))
this.to=to;
}
/**
* 发送email
* @param from 发件人
* @param to 收件人
* @param title 标题
* @param mailcontent 内容
* @param host 发送邮件服务器(SMTP)
*/
public void sendMail(String title,String mailcontent){
Properties props = System.getProperties();//得到系统属性
props.put("mail.smtp.host",sendhost);//压入发送邮件服务器(SMTP)
props.put("mail.smtp.auth", "true"); //这样才能通过验证
MyAuthenticator myauth = new MyAuthenticator(from,passwd);
Session session = Session.getDefaultInstance(props, myauth); // Get session
try{//Define message
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
String mailList[] = to.split(";");
for(int i=0;i<mailList.length;i++){
message.addRecipient(Message.RecipientType.TO, new InternetAddress(mailList[i]));
}
message.setSubject(title);//加入邮件标题
message.setText(mailcontent);//加入邮件内容
Transport.send(message);// 发送邮件
}
catch (Exception e){e.printStackTrace();}
}
/**
* 发送附件
* @param title 标题
* @param mailconent 文体内容
* @param filenames 本地文件
*/
public void sendAppendix(String title,String mailconent,String filenames){
Properties props = System.getProperties();//得到系统属性
props.put("mail.smtp.host",sendhost);//压入发送邮件服务器(SMTP)
props.put("mail.smtp.auth", "true"); //这样才能通过验证
MyAuthenticator myauth = new MyAuthenticator(from,passwd);
Session session = Session.getDefaultInstance(props, myauth);//获取默认会话
try{
MimeMessage msg = new MimeMessage(session);//建立邮件
msg.setFrom(new InternetAddress(from));
InternetAddress[] address = {new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject(title);
MimeBodyPart mbp1 = new MimeBodyPart();//用于存放文本内容
mbp1.setText(mailconent);
MimeMultipart mimemultipart = new MimeMultipart();
mimemultipart.addBodyPart(mbp1);//加入文字内容
if(!StringUtil.isFine(filenames))
return;
String[] filelist=filenames.split(",");
MimeBodyPart mbp2;//用于存放附件内容
FileDataSource filedatasource;
for(int i=0;i<filelist.length;i++){
//逐个加入附件内容
mbp2=new MimeBodyPart();
filedatasource=new FileDataSource(filelist[i]);
mbp2.setDataHandler(new DataHandler(filedatasource));
mbp2.setFileName(filedatasource.getName());
mimemultipart.addBodyPart(mbp2);
}
//压入附件内容
msg.setContent(mimemultipart);
//压入当前时间
msg.setSentDate(new Date());
//发送邮件
Transport.send(msg);
}
catch (MessagingException mex) {
mex.printStackTrace();
}
}
/**
* 接收邮件
* @param popServer
* @param popUser
* @param popPwd
*/
public void receiveMail(){
Store store=null;
Folder folder=null;
try{
Properties props = System.getProperties();//得到系统属性
Session session = Session.getDefaultInstance(props, null);//获取默认会话
store = session.getStore("pop3");//使用POP3会话机制,连接服务器
store.connect(receivehost, from, passwd);//压入接收邮件服务器,用户,密码
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++){
printMessage(msgs[msgNum]);
}
}
catch (Exception ex){
ex.printStackTrace();
}
finally{//释放资源
try{
if (folder!=null) folder.close(false);
if (store!=null) store.close();
}
catch (Exception ex2){
ex2.printStackTrace();
}
}
}
/**
* 打印邮件内容
* @param message
*/
public void printMessage(Message message){
try{
String from=((InternetAddress)message.getFrom()[0]).getPersonal();//获得发送邮件地址
if (from==null) from=((InternetAddress)message.getFrom()[0]).getAddress();
System.out.println("FROM: "+from);
String subject=message.getSubject();//获取标题
System.out.println("SUBJECT: "+subject);
Part messagePart=message;//获取信息对象
Object content=messagePart.getContent();//附件
if (content instanceof Multipart){
messagePart=((Multipart)content).getBodyPart(0);
System.out.println("[ Multipart Message ]");
}
String contentType=messagePart.getContentType();//获取content类型
System.out.println("CONTENT:"+contentType);
//如果邮件内容是纯文本或者是HTML,那么打印出信息
if (contentType.startsWith("text/plain") || contentType.startsWith("text/html")){
InputStream is = messagePart.getInputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String thisLine="";
while ((thisLine=br.readLine())!=null){
System.out.println(thisLine);
thisLine=br.readLine();
}
}
System.out.println("-------------- END ---------------");
}
catch (Exception ex){
ex.printStackTrace();
}
}
public static void main(String[] args){
JavaMail mymail=new JavaMail();
}
}