使用java发送邮件sp自动发送邮件方法

注意:将jar包复制到web-info文件夹下lib:

activation.jar

mail.jar

//发送邮箱
 public static String sendEmail(String sendFrom,String sendTo,String passWord,String title,String count){
  try{
   
   String from =sendFrom.trim();//发送者
   String to =sendTo.trim();//接受者
   String subject =title.trim();//主题
   String content =count.trim();//内容
   String password =passWord.trim();//发送者邮箱密码
   String path="null";//附件的路径
   
   String mailserver ="smtp."+from.substring(from.indexOf('@')+1,from.length()); //在Internet上发送邮件时的代码(smtp服务器地址)

    Properties prop = new Properties();
    prop.put("mail.smtp.host", mailserver);
    prop.put("mail.smtp.auth", "true");
    prop.put("mail.transport.protocol", "smtp");
    Session sess = Session.getDefaultInstance(prop);
    sess.setDebug(true);
    MimeMessage message = new MimeMessage(sess);
    message.setFrom(new InternetAddress(from)); // 给消息对象设置发件人
    //设置收件人
    String toArr[]=to.split(",");
    InternetAddress[] to_mail=new InternetAddress[toArr.length];
    for(int i=0;i<toArr.length;i++){
     to_mail[i]=new InternetAddress(toArr[i]);
    }
       message.setRecipients(Message.RecipientType.BCC,to_mail);
    //设置主题
    message.setSubject(subject);
    Multipart mul = new MimeMultipart(); // 新建一个MimeMultipart对象来存放多个BodyPart对象
    BodyPart mdp = new MimeBodyPart(); // 新建一个存放信件内容的BodyPart对象
    mdp.setContent(content, "text/html;charset=gb2312");
    mul.addBodyPart(mdp); // 将含有信件内容的BodyPart加入到MimeMulitipart对象中
    
    if(!"null".equals(path)){ //当存在附件时
     // 设置信件的附件(用本机上的文件作为附件)
     mdp = new MimeBodyPart(); // 新建一个存放附件的BodyPart
     String adjunctname = new String(path.getBytes("GBK"), "ISO-8859-1"); // 此处需要转码,否则附件中包括中文时,将产生乱码   
     path = (System.getProperty("java.io.tmpdir") + "/" + path).replace(
       "\\", "/");
     System.out.println("路径:" + path);
     FileDataSource fds = new FileDataSource(path);
     DataHandler handler = new DataHandler(fds);
     mdp.setFileName(adjunctname);
     mdp.setDataHandler(handler);
     mul.addBodyPart(mdp);
    }
    
    message.setContent(mul); // 把mul作为消息对象的内容
    message.saveChanges();
    
    Transport transport = sess.getTransport("smtp");
    // 以smtp方式登录邮箱,第1个参数是发送邮件用的邮件服务器SMTP地址,第2个参数为用户名,第3个参数为密码
    
    // qq邮箱POP3服务器(端口995)
    // SMTP服务器(端口465或587)


   
     transport.connect(mailserver,from,password);
     transport.sendMessage(message, message.getAllRecipients());
     
     transport.close();
    
   
   return "success";
  
  } catch (Exception e) {
  e.printStackTrace();
   
   return "error";
  }
 }

posted on 2013-07-22 12:59  qgc  阅读(295)  评论(0编辑  收藏  举报

导航