郑桂良ID:phker
107次访问,排名2万外好友0人,关注者0
phker的文章
原创 4 篇
翻译 0 篇
转载 0 篇
评论 2 篇
最近评论
phker:已经替换过了!
目前的这个是最新的!
使用了比较好的代码!
如果有人想要完整的代码请联系QQ273082449
phker:不好意思这个不是最佳的中文处理方法!是我转载的
最佳的方法我待会回家贴上!
文章分类
    收藏
      相册
      存档
      软件项目交易
      订阅我的博客
      XML聚合  FeedSky
      订阅到鲜果
      订阅到Google
      订阅到抓虾
      订阅到BlogLines
      订阅到Yahoo
      订阅到GouGou
      订阅到飞鸽
      订阅到Rojo
      订阅到newsgator
      订阅到netvibes

      原创 JavaMail中文附件处理(转载)收藏

      新一篇: 最佳css控制打印方法 | 

       

      package mail;

      import java.io.IOException;
      import java.io.UnsupportedEncodingException;

      import java.util.Date;
      import java.util.List;
      import java.util.Map;
      import java.util.Properties;
      import javax.activation.DataHandler;
      import javax.activation.FileDataSource;
      import javax.mail.*;
      import javax.mail.internet.InternetAddress;
      import javax.mail.internet.MimeBodyPart;
      import javax.mail.internet.MimeMessage;
      import javax.mail.internet.MimeMultipart;
      import javax.mail.internet.MimeUtility;

      import com.opensymphony.xwork2.ActionContext;
      import org.apache.commons.logging.Log;
      import org.apache.commons.logging.LogFactory;

      public class sendMail {
          
      private List<String> fujian;
          
      private List<String> fujianContentType;
          
      private List<String> fujianFileName;

          
      private mailConfig mailconfig;
          
      private user.YongHu yh;
          
      private String to_mailAddress;// 收件人
          private String subject;// 主题
          private String content;// 信件内容
          private String from_mailAddress;// 发件人
          private String Msg;
          
      private static Log log = LogFactory.getLog(sendMail.class);
          
          


          
      // 初始化
          private void init() throws Exception {
               Map session
      =(Map) ActionContext.getContext().get("session");
              
      if (this.yh == null{
                  
      this.yh = new user.YongHu();
                  
      if (session.get(Struts2.sessionVariableName.userName) == null{
                      
      throw (new Exception("你还没有登陆"));
                  }
       else {
                      
      this.yh.setDomain((String) session.get(Struts2.sessionVariableName.userDomain));
                      
      this.yh.setName((String) session.get(Struts2.sessionVariableName.userName));
                      
      this.yh.setPassword((String) session.get(Struts2.sessionVariableName.userPassWord));
                  }

              }


              
      if ("".equals(this.from_mailAddress)) {
                  
      this.from_mailAddress = yh.getName() + "@" + yh.getDomain();
              }


          }


          Multipart mm 
      = new MimeMultipart();// 新建一个MimeMultipart对象用来存放多个BodyPart对象

          
      // 发送邮件
          public String sendmail() {
              
              
      try {
                  
                  init();
                  Map application
      = (Map) ActionContext.getContext().get("application");
                  mailConfig mailconfig 
      = (mailConfig) application.get(Struts2.sessionVariableName.mailConfig);
                  Properties props 
      = new Properties();
                  props.put(
      "mail.smtp.host", mailconfig.getSendHost());// 存储发送邮件服务器
                  props.put("mail.smtp.auth""true");// 是否通过验证
                  Session s = Session.getInstance(props);
                  
      // s.setDebug(true);
                  MimeMessage message = new MimeMessage(s);
                  
      // --给消息对象设置发件人、收件人、主题、发信时间--

                  
      // 设置发件人
                  if (this.from_mailAddress == null{    
                      
      this.from_mailAddress = this.yh.getName() + "@"
                              
      + this.yh.getDomain();
                  }

                  message.setFrom(
      new InternetAddress(this.from_mailAddress));
                  
      if ("".equals(this.to_mailAddress) || this.to_mailAddress == null{
                      
      throw (new Exception("收件人不能为空"));
                  }

                  InternetAddress to 
      = new InternetAddress(this.to_mailAddress);
                  message.setRecipient(Message.RecipientType.TO, to);
      // 设置收件人,并设置其接收类型为TO
                  message.setSubject(this.subject);// 设置主题
                  message.setSentDate(new Date());// 设置信件日期
                  TianJiaNeiRong();
                  TianJiaFuJian();
                  message.setContent(mm);
      // 把mm作为消息对象的内容
                  message.saveChanges();

                  Transport transport 
      = s.getTransport(mailconfig.getSendProtocol());
                  
      // 以smtp方式登录邮箱,第一个参数是发送邮件用的邮件服务器SMTP地址,第二个参数为用户名,第三个参数为密码
                  
      // transport.connect(mailconfig.getSendHost(),yh.getName()+"%"+yh.getDomain(),yh.getPassword());
                  transport.connect(mailconfig.getSendHost(), yh.getName(), yh
                          .getPassword());        
                  
                  transport.sendMessage(message, message.getAllRecipients());
                  
                  log.info(message.toString());
                  transport.close();
                  Msg 
      = "邮件已发送";
                  
      return "success";
              }
       catch (Exception e) {
                  Msg 
      = "发送失败:" + e.getMessage();
                  
      return "failed";
              }

          }


          
      // 添加邮件内容
          private void TianJiaNeiRong() throws MessagingException {
              BodyPart mdp 
      = new MimeBodyPart();
              
      //mdp.setText(this.content);    
              mdp.setContent(this.content,  "text/html;charset="UTF-8"" );
              mm.addBodyPart(mdp);
          }


          
      // 添加多个附件
          private void TianJiaFuJian() throws MessagingException, IOException {
              
      for (int i = 0; i < this.fujian.size(); i++{
                  
      if (fujianFileName.get(i) != ""{
                      BodyPart mdp 
      = new MimeBodyPart();
                      String path 
      = fujian.get(i).toString();
                      FileDataSource fds 
      = new FileDataSource(path);
                      DataHandler dh 
      = new DataHandler(fds);
                      mdp.setDataHandler(dh);                
                      log.info(
      "附件名:"+fujianFileName.get(i));
                      
      //mailCaoZuo.base64encode()的作用是防止文件名乱码
                      mdp.setFileName(MimeUtility.encodeText(fujianFileName.get(i)));// 加上文件名将作为附件发送,否则将作为信件的文本内容;MimeUtility.encodeText()函数是把中文的文件名转换为base64编码,可以用
      MimeUtility.decodeText()解码;只有编码后你所发送的邮件才能被其他软件正确解析否则乱码!
                      log.info("编码后的附件名:"+mdp.getFileName());                
                      mm.addBodyPart(mdp);
      // 将含有附件的BodyPart加入到MimeMultipart对象中
                  }

              }

          }


          
      public void setTo_mailAddress(String to_mailAddress) {
              
      this.to_mailAddress = to_mailAddress;
          }


          
      public void setSubject(String subject) {
              
      if ("".equals(subject)) {
                  subject 
      = "无标题";
              }
              
              
      try {
                  
      this.subject=MimeUtility.encodeText( subject,"UTF-8","B");
                               
      //MimeUtility.decodeText()邮件头的解码
              }
       catch (UnsupportedEncodingException e) {
                  e.printStackTrace();
              }
       
          }


          
      public void setContent(String content) {
              
      if ("".equals(content)) {
                  content 
      = " ";
              }
          
                  
      this.content = content;    //邮件体在javamail里面是不需要编码的,javamail会自动编码
          }


          
      public void setFrom_mailAddress(String from_mailAddress) {

              
      this.from_mailAddress = from_mailAddress;
          }


          
      public void setYh(user.YongHu yh) {
              
      this.yh = yh;
          }


          
      public String getMsg() {
              
      return Msg;
          }


          
      public void setFujian(List<String> fujian) {
              
      this.fujian = fujian;
          }


          
      public void setFujianContentType(List<String> fujianContentType) {
              
      this.fujianContentType = fujianContentType;
          }


          
      public void setFujianFileName(List<String> fujianFileName) {
              
      this.fujianFileName = fujianFileName;
          }


          
      public mailConfig getMailconfig() {
              
      return mailconfig;
          }


          
      public void setMailconfig(mailConfig mailconfig) {
              
      this.mailconfig = mailconfig;
          }


      }

      发表于 @ 2008年02月21日 15:48:00|评论(loading...)|编辑

      新一篇: 最佳css控制打印方法 | 

      评论

      #phker 发表于2008-04-07 19:04:26  IP: 125.116.252.*
      不好意思这个不是最佳的中文处理方法!是我转载的
      最佳的方法我待会回家贴上!
      #phker 发表于2008-04-13 17:58:32  IP: 125.114.9.*
      已经替换过了!
      目前的这个是最新的!
      使用了比较好的代码!
      如果有人想要完整的代码请联系QQ273082449
      发表评论  


      当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
      Csdn Blog version 3.1a
      Copyright © phker