javaMail简易实现

来源:互联网 发布:samba端口转发 编辑:程序博客网 时间:2024/05/22 12:37

之前学习的java后台实现的邮件的简单代码与大家分享一下,欢迎拍砖!

也没有时间仔细整理,大概使用到的包包括:


代码示例如下:

package com.mail.impl;

import java.util.ArrayList;
import java.util.Properties;
import java.util.StringTokenizer;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
/**
 * java邮件发送实现类
 * @author
 * 2014-04-22
 * 1.通过addTo(地址)方法增加多个发送地址
 * 2.通过addCopy()方法增加多个抄送地址
 * 3,通过addBcc()方法增加多个暗送地址
 */
public class Mailer {
    
    protected Session session; /*javamail session对象*/
    protected String fromadd; //发送地址
    protected String subject; //邮件标题
    protected ArrayList tolist = new ArrayList(); //存放字符串形式的收信地址
    protected ArrayList copylist = new ArrayList(); //存放抄送地址
    protected ArrayList bcclist = new ArrayList(); //存放暗送地址
    protected String body; //存放信的内容
    protected String mailhost; //SMTP服务器地址
    protected boolean verbose = true; //是否打印控制台
    protected String username;//邮箱用户名
    protected String pwd;
    
    public String getUsername() {
        return username;
    }


    public void setUsername(String username) {
        this.username = username;
    }


    public String getPwd() {
        return pwd;
    }


    public void setPwd(String pwd) {
        this.pwd = pwd;
    }


    public String getFromadd() {
        return fromadd;
    }


    public void setFromadd(String fromadd) {
        this.fromadd = fromadd;
    }

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public ArrayList getTolist() {
        return tolist;
    }


    public void setTolist(ArrayList tolist) {
        this.tolist = tolist;
    }
    
    public void setTolist(String s) {
        this.tolist = tokenize(s);
    }
    
    
    public void addTo(String to){
        this.tolist.add(to);
    }
   
    
    
    public ArrayList getCopylist() {
        return copylist;
    }


    public void setCopylist(ArrayList copylist) {
        this.copylist = copylist;
    }

    public void setCopylist(String s){
        this.copylist = tokenize(s);
    }

    public void addCopy(String s){
        this.copylist.add(s);
    }
    
    
    
    
    public ArrayList getBcclist() {
        return bcclist;
    }


    public void setBcclist(ArrayList bcclist) {
        this.bcclist = bcclist;
    }

    public void setBcclist(String s){
        this.bcclist = tokenize(s);
    }
    
    public void addBcc(String s){
        this.bcclist.add(s);
    }
    

    public String getBody() {
        return body;
    }


    public void setBody(String body) {
        this.body = body;
    }

    

    public boolean isVerbose() {
        return verbose;
    }


    public void setVerbose(boolean verbose) {
        this.verbose = verbose;
    }
    
    public void setServer(String s) {
        mailhost = s;
    }

 
    public boolean isComplie(){
        if(fromadd == null ||fromadd.length() == 0){
            System.err.println("doSend: no fromadd");
            return false;
        }
        
        if(subject == null || subject.length() == 0){
            System.err.println("doSend: no subject");
            return false;
        }
        
        if(tolist.size() == 0){
            System.err.println("doSend: no tolist");
            return false;
        }
        
        if(body == null || body.length() == 0){
            System.err.println("doSend: no body");
            return false;
        }
        
        if(mailhost.length() == 0 || mailhost == null){
            System.err.println("doSend: no mailhost");
            return false;
        }
        
        return true;
    }
    
    public synchronized void doSend(){
        if(!isComplie()){
            throw new IllegalArgumentException("doSend Message is no Complie");
        }
        Properties pro = new Properties();
        pro.setProperty("mail.smtp.host", mailhost);
        pro.setProperty("mail.smtp.auth", "true");
        
        if(session == null){
            session = Session.getDefaultInstance(pro);
        }
        if(verbose){
            session.setDebug(true);
        }
        
        final Message message = new MimeMessage(session);
        InternetAddress[] addresses;
        
        
        try {
            addresses = new InternetAddress[tolist.size()];
            for(int i=0;i<addresses.length;i++){
                    addresses[i] = new InternetAddress((String)tolist.get(i));
            }
            message.setRecipients(Message.RecipientType.TO, addresses);
            message.setFrom(new InternetAddress(fromadd));
        
            addresses = new InternetAddress[copylist.size()];
            for(int i=0;i<addresses.length;i++){
                addresses[i] = new InternetAddress((String)copylist.get(i));
            }
            message.setRecipients(Message.RecipientType.CC, addresses);
            
            addresses = new InternetAddress[bcclist.size()];
            for(int i=0;i<addresses.length;i++){
                addresses[i] = new InternetAddress((String)bcclist.get(i));
            }
            message.setRecipients(Message.RecipientType.BCC, addresses);
            
            message.setSubject(subject);
            message.setText(body);
            
       } catch (AddressException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (MessagingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
            
            
        new Thread(){
            
            public void run(){
                Transport trans;
                try {
                    trans = session.getTransport("smtp");
                    trans.connect(mailhost, username, pwd);
                    trans.sendMessage(message, message.getAllRecipients());
                } catch (NoSuchProviderException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (MessagingException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                
                
            }
        }.start();
        
        
        
    }
    
    

    protected ArrayList tokenize(String s){
        ArrayList arr = new ArrayList();
        StringTokenizer tokenizer = new StringTokenizer(s,",");
        while(tokenizer.hasMoreTokens()){
            arr.add(tokenizer.nextToken().trim());
        }
        
        return arr;
    }
    
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Mailer mail = new Mailer();
        mail.setServer("smtp.163.com");
        mail.setFromadd("xxx@163.com");
        mail.setUsername("xxxxx");
        mail.setPwd("xxxxx");
        mail.addTo("xxxxxx@qq.com");
        mail.setSubject("java mail");
        mail.setBody("Test Java Client Mail Send Program");
        mail.doSend();
        
    }

}


0 0
原创粉丝点击