`
liuzhiqiang19890403
  • 浏览: 56658 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

java mail发送邮件(带附件)

 
阅读更多

 /**

     * 发送邮件  带附件

     * @param mailInfo

     * @param attachment

     */

    public static boolean doSendHtmlEmail(MailSenderInfo mailInfo,File attachment) {

    // 判断是否需要身份认证    

    MyAuthenticator authenticator = null;    

    Properties pro = mailInfo.getProperties();   

    if (mailInfo.isValidate()) {    

    // 如果需要身份认证,则创建一个密码验证器    

      authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());    

    }   

    // 根据邮件会话属性和密码验证器构造一个发送邮件的session    

    Session sendMailSession = Session.getDefaultInstance(pro,authenticator);    

    try {    

    // 根据session创建一个邮件消息    

    Message mailMessage = new MimeMessage(sendMailSession);    

    // 创建邮件发送者地址    

    Address from = new InternetAddress(mailInfo.getFromAddress());    

    // 设置邮件消息的发送者    

    mailMessage.setFrom(from);   

    // 创建邮件的接收者地址,并设置到邮件消息中    

    Address to = new InternetAddress(mailInfo.getToAddress());    

    mailMessage.setRecipient(Message.RecipientType.TO,to);    

    // 设置邮件消息的主题    

    mailMessage.setSubject(mailInfo.getSubject());    

    // 设置邮件消息发送的时间    

    mailMessage.setSentDate(new Date());    

    // 设置邮件消息的主要内容    

    Multipart multipart = new MimeMultipart();

         

         // 添加邮件正文

         BodyPart contentPart = new MimeBodyPart();

         String mailContent = mailInfo.getContent(); 

         contentPart.setContent(mailContent, "text/html;charset=UTF-8");

         multipart.addBodyPart(contentPart);

         

      // 添加附件的内容

         if (attachment != null) {

             BodyPart attachmentBodyPart = new MimeBodyPart();

             DataSource source = new FileDataSource(attachment);

             attachmentBodyPart.setDataHandler(new DataHandler(source));

             // 网上流传的解决文件名乱码的方法,其实用MimeUtility.encodeWord就可以很方便的搞定

             // 这里很重要,通过下面的Base64编码的转换可以保证你的中文附件标题名在发送时不会变成乱码

             //sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();

             //messageBodyPart.setFileName("=?GBK?B?" + enc.encode(attachment.getName().getBytes()) + "?=");

             //MimeUtility.encodeWord可以避免文件名乱码

             attachmentBodyPart.setFileName(MimeUtility.encodeWord(attachment.getName()));

             multipart.addBodyPart(attachmentBodyPart);

         }

         mailMessage.setContent(multipart);

    // 发送邮件    

    Transport.send(mailMessage); 

    return true;

    } catch (Exception ex) {   

    logger.info("邮件发送失败,邮箱地址:【"+mailInfo.getToAddress()+"】");

        //ex.printStackTrace();    

    }   

    return false;

    }

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

Global site tag (gtag.js) - Google Analytics