tmp

package com.xinglu.test.mail;
//该程序是javamail,用于发送邮件的
import java.util.*;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
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;

public class SendMail {

    private MimeMessage mimeMsg;      //MIME邮件对象
    
    private Session session;          //邮件会话对象
    private Properties props;         //系统属性
    private boolean needAuth=false;   //smtp是否需要认证
    
    private String username="";       //smtp认证用户名和密码
    private String password="";
    
    private Multipart mp;             //Multipart对象,邮件内容、标题、附件等内容
    
    public SendMail(){
        //setSmtpHost(getConfig.mailHost); //如果没有指定有加你服务
        createMimeMessage();
    }
    
    public SendMail(String smtp){
        setSmtpHost(smtp);
        createMimeMessage(); 
    }
    
    public void setSmtpHost(String hostName){
        System.out.println("设置系统属性:mail.stmp.host="+hostName);
        if(props==null) props=System.getProperties();                 //获取系统属性
        props.put("mail.smtp.host",hostName);                         //设置SMTP主机
        
        if(hostName.contains("qq") || hostName.contains("gmail")
                || hostName.contains("sohu")|| hostName.contains("yahoo")
                || hostName.contains("yeah")){
            props.setProperty("mail.smtp.timeout","25000");     
            props.setProperty("mail.smtp.starttls.enable","true");      
            props.setProperty("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");    
            props.setProperty("mail.smtp.socketFactory.fallback","false"); 
            props.put("mail.smtp.port", "465"); 
        }else{
            props.put("mail.smtp.port", "25"); 
        }
    }
    
    public boolean createMimeMessage(){
        try{
            System.out.println("准备获取邮件会话对象!");
            session=Session.getDefaultInstance(props,null);
        }catch(Exception e){
            System.err.println("获取邮件会话对象时发生错误!"+e);
            return false;
        }
        System.out.println("准备创建MIME邮件对象");
        try{
            mimeMsg =new MimeMessage(session);//创建MIME邮件对象
            mp=new MimeMultipart();
            
            return true;
        }catch(Exception e){
            System.err.println("创建MIME邮件对象失败"+e);
            return false;
        }
    }
    
    public void setNeedAnth(boolean need){
        System.out.println("设置smtp身份认证:mail.smtp.auth="+need);
        if(props==null) props=System.getProperties();
        
        if(need){
            props.put("mail.smtp.auth", "true");
        }else{
            props.put("mail.smtp.auth", false);
        }
    }
    
    public void setNamePass(String name,String pass){
        username=name;
        password=pass;
    }
    
    public boolean setSubject(String mailSubject){
        System.out.print("设置邮件主题");
        try{
            mimeMsg.setSubject(mailSubject);
            return true;
        }catch(Exception e){
            System.err.println("设置邮件主题发生错误");
            return 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){
            System.err.println("设置邮件正文是发生错误!"+e);
            return false;
        }
    }
    
    public boolean addFileAffix(String filename){
        System.out.println("增加邮件附件:"+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){
            System.err.println("增加邮件附件"+filename+"发生错误:"+e);
            return false;
        }
    }
    
    public boolean setForm(String from){
        System.out.println("设置发信人");
        try{
            mimeMsg.setFrom(new InternetAddress(from));
            return true;
        }catch(Exception e){
            return false;
        }
    }
    
    public boolean setTo(String to){
        if(to==null) return false;
        try{
            mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
            return true;
        }catch(Exception e){
            return false;
        }
    }
    
    public boolean setCopyTp(String copyto){
        if(copyto==null) return false;
        try{
            mimeMsg.setRecipients(Message.RecipientType.CC, (Address[])InternetAddress.parse(copyto));
            return true;
        }catch(Exception e){
            return false;
        }
    }
    
    public boolean sendout(){
        try{
            mimeMsg.setContent(mp);
            //mimeMsg.saveChanges();
            
            System.out.println("正在发送邮件....");
            
            Session mailSession=Session.getInstance(props,null);
            Transport transport=mailSession.getTransport("smtp");
            transport.connect((String)props.get("mail.smtp.host"),username,password);
            transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.TO));
            
            System.out.println("发送邮件成功!");
            transport.close();
            
            return true;
        }catch(Exception e){
            System.out.println("邮件发送失败!"+e);
            return false;
        }
    }
    
    public static void sendToSomebody(String mailbody,String title,String toEmail){
        //发送的邮件内容
        //String mailbody=mailbody;
            
        //指明让那个smtp转发
        SendMail themail=new SendMail("smtp.163.com");
        
        //校验身份
        themail.setNeedAnth(true);
        
        //邮件标题
        if(themail.setSubject(title)==false) return;
        //将要发送的内容放入邮件体
        if(themail.setBody(mailbody)==false) return;
        
        //发往哪里
        if(themail.setTo(toEmail)==false) return;
        //谁发送的
        if(themail.setForm("[email protected]")==false) return;
        
        //发送附件
        //if(themail.addFileAffix("xxx.xx")==false) return;
        //将在163网站上的邮件用户名和密码放入邮件体
        themail.setNamePass("xinglu19", "1S31M41V51K6");
        //发送
        if(themail.sendout()==false) return;
    }
    public static List<String> addr = new ArrayList<String>();
    public static Map<String , String> passMap = new HashMap<String , String>();
    public static Map<String , String> domainMap = new HashMap<String , String>();
    public static Map<String , String> userNameMap = new HashMap<String , String>();
    public static Map<String , String> fromMap = new HashMap<String , String>();
    
    public static void init(){
        //----------------163-------------------
        domainMap.put("163", "smtp.163.com");
        passMap.put("163", "1S31M41V51K6");
        userNameMap.put("163", "xinglu19");
        fromMap.put("163", "[email protected]");
        addr.add("163");
        //----------------126-------------------
        domainMap.put("126", "smtp.126.com");
        passMap.put("126", "sushe110");
        userNameMap.put("126", "AronXinglu");
        fromMap.put("126", "[email protected]");
        addr.add("126");
        //----------------139-------------------
        domainMap.put("139", "smtp.139.com");
        passMap.put("139", "sushe110");
        userNameMap.put("139", "13416176159");
        fromMap.put("139", "[email protected]");
        addr.add("139");
        //----------------qq-------------------
        domainMap.put("qq", "smtp.qq.com");
        passMap.put("qq", "sushe1");
        userNameMap.put("qq", "530153251");
        fromMap.put("qq", "[email protected]");
        addr.add("qq");
      //----------------outlook-------------------
        domainMap.put("outlook", "smtp.outlook.com");
        passMap.put("outlook", "sushe110");
        userNameMap.put("outlook", "xinglu31");
        fromMap.put("outlook", "[email protected]");
        addr.add("outlook");
      //----------------gmail-------------------
        domainMap.put("gmail", "smtp.gmail.com");
        passMap.put("gmail", "gS3gM4gV5gK6");
        userNameMap.put("gmail", "xinglu31");
        fromMap.put("gmail", "[email protected]");
        addr.add("gmail");
      //---------------2980-------------------
        domainMap.put("2980", "smtp.2980.com");
        passMap.put("2980", "sushe110");
        userNameMap.put("2980", "xinglu31");
        fromMap.put("2980", "[email protected]");
        addr.add("2980");
        //----------------yeah.net-------------------
        domainMap.put("yeah", "smtp.yeah.net");
        passMap.put("yeah", "sushe110");
        userNameMap.put("yeah", "xinglu19");
        fromMap.put("yeah", "[email protected]");
        addr.add("yeah");
      //----------------tom-------------------
        domainMap.put("tom", "smtp.tom.com");
        passMap.put("tom", "sushe110");
        userNameMap.put("tom", "xinglu31");
        fromMap.put("tom", "[email protected]");
      //----------------sohu-------------------
        domainMap.put("sohu", "smtp.sohu.com");
        passMap.put("sohu", "sushe110");
        userNameMap.put("sohu","lua_erlang");
        fromMap.put("sohu", "[email protected]");
        addr.add("sohu");
      //----------------sina-------------------
        domainMap.put("sina", "smtp.sina.com.cn");
        passMap.put("sina", "sushe110");
        userNameMap.put("sina", "xinglu19");
        fromMap.put("sina", "[email protected]");
        addr.add("sina");
      //----------------yahoo-------------------
        domainMap.put("yahoo", "smtp.mail.yahoo.com");
        passMap.put("yahoo", "sushe110");
        userNameMap.put("yahoo","xinglu19");
        fromMap.put("yahoo", "[email protected]");
        addr.add("yahoo");
    }
    public static void main(String[] args){
        String mailbody = "WAHAHA";
        String title = "AHA";
        //String toEmail = "[email protected]";
        String toEmail = "[email protected]";
        init();
        //sendToSomebody(mailbody , title , toEmail);
        //for(String use:addr){
        String use = "yeah";
        String smtp = domainMap.get(use);
        String userName = userNameMap.get(use);
        String pass = passMap.get(use);
        String fromAddr = fromMap.get(use);
        sendToSomebody(mailbody,title,toEmail
                ,smtp , userName , pass
                ,fromAddr);
        //}
    }
    
    public static void sendToSomebody(String mailbody,String title,String toEmail
            ,String smtp , String userName , String pass
            ,String fromAddr){
        //发送的邮件内容
        //String mailbody=mailbody;
            
        //指明让那个smtp转发
        SendMail themail=new SendMail(smtp);
        
        //校验身份
        themail.setNeedAnth(true);
        //邮件标题
        if(themail.setSubject(title)==false) return;
        //将要发送的内容放入邮件体
        if(themail.setBody(mailbody)==false) return;
        
        //发往哪里
        if(themail.setTo(toEmail)==false) return;
        //谁发送的
        if(themail.setForm(fromAddr)==false) return;
        
        //发送附件
        //if(themail.addFileAffix("xxx.xx")==false) return;
        //将在163网站上的邮件用户名和密码放入邮件体
        themail.setNamePass(userName, pass);
        //发送
        if(themail.sendout()==false) return;
    }
}


你可能感兴趣的:(tmp)