javaMail发邮件

package com.amms;

import java.util.Properties;

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 TestJmail {
     private MimeMessage mimeMsg; //MIME邮件对象   
        private Session session; //邮件会话对象   
        private Properties props; //系统属性   
        private boolean needAuth = false; //smtp是否需要认证   
        //smtp认证用户名和密码   
        private String username;   
        private String password;   
        private Multipart mp; //Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象   
           
        /**
         * Constructor
         * @param smtp 邮件发送服务器
         */  
        public TestJmail(String smtp){   
            setSmtpHost(smtp);   
            createMimeMessage();   
        }   
      
        /**
         * 设置邮件发送服务器
         * @param hostName String  
         */  
        public void setSmtpHost(String hostName) {   
            System.out.println("设置系统属性:mail.smtp.host = "+hostName);   
            if(props == null)  
                props = System.getProperties(); //获得系统属性对象    
            props.put("mail.smtp.host",hostName); //设置SMTP主机   
        }   
      
      
        /**
         * 创建MIME邮件对象   
         * @return
         */  
        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;   
            }   
        }     
          
        /**
         * 设置SMTP是否需要验证
         * @param need
         */  
        public void setNeedAuth(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");   
            }   
        }   
      
        /**
         * 设置用户名和密码
         * @param name
         * @param pass
         */  
        public void setNamePass(String name,String pass) {   
            username = name;   
            password = pass;   
        }   
      
        /**
         * 设置邮件主题
         * @param mailSubject
         * @return
         */  
        public boolean setSubject(String mailSubject) {   
            System.out.println("设置邮件主题!");   
            try{   
                mimeMsg.setSubject(mailSubject);   
                return true;   
            }   
            catch(Exception e) {   
                System.err.println("设置邮件主题发生错误!");   
                return false;   
            }   
        }  
          
        /**  
         * 设置邮件正文
         * @param mailBody String  
         */   
        public boolean setBody(String mailBody) {   
            try{   
                BodyPart bp = new MimeBodyPart();   
                bp.setContent(""+mailBody,"text/html;charset=GBK");   
                mp.addBodyPart(bp);   
              
                return true;   
            } catch(Exception e){   
            System.err.println("设置邮件正文时发生错误!"+e);   
            return false;   
            }   
        }   
        /**  
         * 添加附件
         * @param filename String  
         */   
//        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;   
//            }   
//        }   
          
        /**  
         * 设置发信人
         * @param from String  
         */   
        public boolean setFrom(String from) {   
            System.out.println("设置发信人!");   
            try{   
                mimeMsg.setFrom(new InternetAddress(from)); //设置发信人   
                return true;   
            } catch(Exception e) {   
                return false;   
            }   
        }   
        /**  
         * 设置收信人
         * @param to String  
         */   
        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;   
            }     
        }   
          
        /**  
         * 设置抄送人
         * @param copyto String   
         */   
        public boolean setCopyTo(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));   
//                transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.CC));   
                //transport.send(mimeMsg);   
                  
                System.out.println("发送邮件成功!");   
                transport.close();   
                  
                return true;   
            } catch(Exception e) {  
                e.printStackTrace();
                System.err.println("邮件发送失败!"+e);   
                return false;   
            }   
        }   
      
        /**
         * 调用sendOut方法完成邮件发送
         * @param smtp
         * @param from
         * @param to
         * @param subject
         * @param content
         * @param username
         * @param password
         * @return boolean
         */  
        public static boolean send(String smtp,String from,String to,String subject,String content,String username,String password) {  
            TestJmail theMail = new TestJmail(smtp);  
            theMail.setNeedAuth(true); //需要验证  
              
            if(!theMail.setSubject(subject)) return false;  
            if(!theMail.setBody(content)) return false;  
            if(!theMail.setTo(to)) return false;  
            if(!theMail.setFrom(from)) return false;  
            theMail.setNamePass(username,password);  
              
            if(!theMail.sendOut()) return false;  
            return true;  
        }  
          
        /**
         * 调用sendOut方法完成邮件发送,带抄送
         * @param smtp
         * @param from
         * @param to
         * @param copyto
         * @param subject
         * @param content
         * @param username
         * @param password
         * @return boolean
         */  
        public static boolean sendAndCc(String smtp,String from,String to,String copyto,String subject,String content,String username,String password) {  
            TestJmail theMail = new TestJmail(smtp);  
            theMail.setNeedAuth(true); //需要验证  
              
            if(!theMail.setSubject(subject)) return false;  
            if(!theMail.setBody(content)) return false;  
            if(!theMail.setTo(to)) return false;  
            if(!theMail.setCopyTo(copyto)) return false;  
            if(!theMail.setFrom(from)) return false;  
            theMail.setNamePass(username,password);  
              
            if(!theMail.sendOut()) return false;  
            return true;  
        }  
          
        /**
         * 调用sendOut方法完成邮件发送,带附件
         * @param smtp
         * @param from
         * @param to
         * @param subject
         * @param content
         * @param username
         * @param password
         * @param filename 附件路径
         * @return
         */  
        public static boolean send(String smtp,String from,String to,String subject,String content,String username,String password,String filename) {  
            TestJmail theMail = new TestJmail(smtp);  
            theMail.setNeedAuth(true); //需要验证  
              
            if(!theMail.setSubject(subject)) return false;  
            if(!theMail.setBody(content)) return false;  
//            if(!theMail.addFileAffix(filename)) return false;   
            if(!theMail.setTo(to)) return false;  
            if(!theMail.setFrom(from)) return false;  
            theMail.setNamePass(username,password);  
              
            if(!theMail.sendOut()) return false;  
            return true;  
        }  
          
        /**
         * 调用sendOut方法完成邮件发送,带附件和抄送
         * @param smtp
         * @param from
         * @param to
         * @param copyto
         * @param subject
         * @param content
         * @param username
         * @param password
         * @param filename
         * @return
         */  
        public static boolean sendAndCc(String smtp,String from,String to,String copyto,String subject,String content,String username,String password,String filename) {  
            TestJmail theMail = new TestJmail(smtp);  
            theMail.setNeedAuth(true); //需要验证  
              
            if(!theMail.setSubject(subject)) return false;  
            if(!theMail.setBody(content)) return false;  
//            if(!theMail.addFileAffix(filename)) return false;   
            if(!theMail.setTo(to)) return false;  
            if(!theMail.setCopyTo(copyto)) return false;  
            if(!theMail.setFrom(from)) return false;  
            theMail.setNamePass(username,password);  
              
            if(!theMail.sendOut()) return false;  
            return true;  
        }  
}


package com.amms;

public class TestMailDomain {
    public static void main(String[] args){  
        for (int i = 0; i < 5; i++) {
        String smtp = "smtp.qq.com";  //smtp服务器
        String from = "2066976178@qq.com";  
        String to = "572354908@qq.com";  
        String copyto = "";  
        String subject = "炸死你";  
        String content = "炸死你";  
        String username="2066976178@qq.com";  
        String password="123456ooo";  
        String filename = "";  
TestJmail.sendAndCc(smtp, from, to, copyto, subject, content, username, password, filename);  
    }
    }
}


ava.lang.NoClassDefFoundError:com/sun/mail/util/LineInputStream

java.lang.NoClassDefFoundError:com/sun/activation/registries/LogSupport

 

原因:

MyEclipse6.5的javaee.jar中的mail包与JavaMail包有冲突。

:/Program Files/MyEclipse 6.5/myeclipse/eclipse/plugins/com.genuitec.eclipse.j2eedt.core_6.5.0.zmyeclipse650200806/data/libraryset/EE_5这个路径里,可以看到javaee.jar,用rar把这个文件打开,然后进到javax文件夹里,删除mail.jar和activation.jar(我的javaee.jar里,这两个东西是文件夹
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值