- 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();
- }
- }