Java email

包含多个抄送  多发送都一样

    private MimeMessage mimeMsg; //邮件对象


    private Session session; //发送邮件的Session会话


    private Properties props;//邮件发送时的一些配置信息的一个属性对象


    private String sendUserName; //发件人的用户名


    private String sendUserPass; //发件人密码


    private Multipart mp;//附件添加的组件


   private List files = new LinkedList();//存放附件文件


    public EmailHandle(String smtp) {
            sendUserName = "";
            sendUserPass = "";
        setSmtpHost(smtp);// 设置邮件服务器
        createMimeMessage(); // 创建邮件
    }


    public void setSmtpHost(String hostName) {
        if (props == null)
            props = System.getProperties();
        props.put("mail.smtp.host", hostName);
    }


    public boolean createMimeMessage(){
        try {
            // 用props对象来创建并初始化session对象
            session = Session.getDefaultInstance(props, null);
        } catch (Exception e) {
            System.err.println("获取邮件会话对象时发生错误!" + e);
            return false;
        }
        try {
            mimeMsg = new MimeMessage(session);  // 用session对象来创建并初始化邮件对象
            mp = new MimeMultipart();// 生成附件组件的实例
        } catch (Exception e) {
            return false;
        }
        return true;
    }
    /**
         * 设置SMTP的身份认证
         */
    public void setNeedAuth(boolean 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) {
        sendUserName = name;
        sendUserPass = pass;
    }
    /**
         * 设置邮件主题
         * @param mailSubject
         * @return
         */
    public boolean setSubject(String mailSubject) {
        try {
            mimeMsg.setSubject(mailSubject);
        } catch (Exception e) {
            return false;
        }
        return true;
    }
    /**
         * 设置邮件内容,并设置其为文本格式或HTML文件格式,编码方式为UTF-8
         * @param mailBody
         * @return
         */
    public boolean setBody(String mailBody) {
        try {
            BodyPart bp = new MimeBodyPart();
            bp.setContent("<meta http-equiv=Content-Type content=text/html; charset=UTF-8>"+ mailBody, "text/html;charset=UTF-8");
            // 在组件上添加邮件文本
            mp.addBodyPart(bp);     
        } catch (Exception e) {
            System.err.println("设置邮件正文时发生错误!" + e);
            return false;
        }
        return true;
    }
    /**
         * 增加发送附件
         * @param filename
         * 邮件附件的地址,只能是本机地址而不能是网络地址,否则抛出异常
         * @return
         */
    public boolean addFileAffix(String filename) {
        try {
            BodyPart bp = new MimeBodyPart();
            FileDataSource fileds = new FileDataSource(filename);
            bp.setDataHandler(new DataHandler(fileds));
            bp.setFileName(MimeUtility.encodeText(fileds.getName(),"utf-8",null));  // 解决附件名称乱码
            mp.addBodyPart(bp);// 添加附件
            files.add(fileds);
        } catch (Exception e) {
            System.err.println("增加邮件附件:" + filename + "发生错误!" + e);
           return false;
        }
        return true;
   }
   public boolean delFileAffix(){
              try {
                FileDataSource fileds = null;
                for(Iterator it =  files.iterator() ;it.hasNext();) {
                       fileds = (FileDataSource)it.next(); 
                       if(fileds != null && fileds.getFile() != null){
                               fileds.getFile().delete();
                       }
                }
               }catch (Exception e) {
             return false;
          }
        return true;
    }
    /**
         * 设置发件人地址
         * @param from
         * 发件人地址
         * @return
         */
    public boolean setFrom(String from) {
        try {
            mimeMsg.setFrom(new InternetAddress(from));
        } catch (Exception e) {
            return false;
        }
        return true;
    }
    /**
         * 设置收件人地址
         * @param to收件人的地址
         * @return
         */
    public boolean setTo(String to) {
        if (to == null)
            return false;
        try {
            mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
        } catch (Exception e) {
            return false;
        }
        return true;
    }
    
    /** 
     * 设置抄送人地址 
     *  
     * @param to抄送人的地址 
     * @return 
     */  
    public boolean setCc(String cc[]) {  
    String toListcs = null; 
        if (cc == null)  
            return false;  
        try {  
     //       mimeMsg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc));  
          //抄送 
            if(cc!=null) 
            { 
            toListcs = getMailList(cc); 
            InternetAddress[] iaToListcs = new InternetAddress().parse(toListcs); 
            mimeMsg.setRecipients(Message.RecipientType.CC, iaToListcs); // 抄送人 
            } 
            
        } catch (Exception e) {  
            return false;  
        }  
        return true;  
    } 
    
    /**
         * 发送附件
         * @param copyto
         * @return
         */
    public boolean setCopyTo(String copyto) {
        if (copyto == null)
            return false;
        try {
            mimeMsg.setRecipients(javax.mail.Message.RecipientType.CC,InternetAddress.parse(copyto));
        } catch (Exception e) {
            return false;
        }
        return true;
    }
    
    private String getMailList(String[] mailArray) { 


    StringBuffer toList = new StringBuffer(); 
    int length = mailArray.length; 
    if (mailArray != null && length < 2) { 
    toList.append(mailArray[0]); 
    } else { 
    for (int i = 0; i < length; i++) { 
    toList.append(mailArray[i]); 
    if (i != (length - 1)) { 
    toList.append(","); 
   


   
   
    return toList.toString(); 


   
    
    /**
         * 发送邮件
         * @return
         */
    public String sendEmail() {
            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"), sendUserName,sendUserPass);
            // 发送邮件
            transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.TO));
            transport.sendMessage(mimeMsg, mimeMsg.getRecipients(Message.RecipientType.CC));
            System.out.println("发送邮件成功!");
            transport.close();
             return "0";
        } catch (MessagingException e) {
// TODO Auto-generated catch block
         e.printStackTrace();
         return "1";
}

    }



    public static String  assetSendEmail(String subject, String toaddress,String content,String fromAddress,String fromAPass)throws Exception {
        String cs[]={"××××××××@126.com","××××××××@126.com"};
    EmailHandle emailHandle = new EmailHandle(hostName);
        emailHandle.setFrom(fromAddress);
        emailHandle.setNeedAuth(true);
        emailHandle.setSubject(subject);
        emailHandle.setBody(content);
        emailHandle.setTo(toaddress);
        emailHandle.setCc(cs);
        emailHandle.setNamePass(fromAddress, fromAPass);
        return emailHandle.sendEmail();


}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值