JAVA怎么实现邮件发送并附加图片

JAVA如何实现邮件发送并附加图片

JAVA如何实现邮件发送并附加图片?如下:

 

public class MailUtils { 
 
    public static boolean sendEmal(MyAuthenticator auther ,String hostStr,String fromEmail,String toEmai,String title,String context,boolean isdebug,boolean isAuth,String fileName) throws IOException{ 
         
        if(auther == null || StringUtils.isBlank(hostStr) || StringUtils.isBlank(fromEmail) || StringUtils.isBlank(toEmai) || StringUtils.isBlank(context)){ 
            return false; 
        } 
         
         
        String to = toEmai; 
        String from = fromEmail ; 
        String host = hostStr; 
        boolean debug = isdebug; 
        MyAuthenticator authenticator = auther;  
 
        Properties props = new Properties(); 
        props.put("mail.smtp.host", host); 
        props.put("mail.smtp.port", "25");    
        props.put("mail.smtp.auth", isAuth);  
         
        if (debug) props.put("mail.debug", debug); 
         
        Session session = Session.getInstance(props, authenticator); 
        session.setDebug(debug); 
        try { 
            // create a message 
            MimeMessage msg = new MimeMessage(session); 
            msg.setFrom(new InternetAddress(from)); 
            InternetAddress[] address = {new InternetAddress(to)}; 
            msg.setRecipients(Message.RecipientType.TO, address); 
            msg.setSubject(title); 
            msg.setSentDate(new Date()); 
            //msg.setText(context); 
            // 新建一个MimeMultipart对象用来存放BodyPart对象(事实上可以存放多个) 
            MimeMultipart mm = new MimeMultipart(); 
           // 新建一个存放信件内容的BodyPart对象 
           BodyPart mdp = new MimeBodyPart(); 
           // 给BodyPart对象设置内容和格式/编码方式 
            mdp.setContent(context, "text/html;charset=utf-8"); 
                   // 这句很重要,千万不要忘了 
            mm.addBodyPart(mdp); 
            mdp = new MimeBodyPart(); 
          DataHandler dh = new DataHandler(new ByteArrayDataSource(getImageBytes(fileName), "application/octet-stream")); 
          mdp.setDataHandler(dh);     
           // 加上这句将作为附件发送,否则将作为信件的文本内容 
           mdp.setFileName("二维码图片.png"); 
           mdp.setHeader("content-id", "<IMG1>"); 
            // 将含有附件的BodyPart加入到MimeMultipart对象中            
           mm.addBodyPart(mdp);//Multipart加入到信件   
           //将附件放入传输的信件文本内容中 
           msg.setContent(mm);  
         // ---------图片处理结束!!!!!!!!!!!!!!!! 
            Transport.send(msg); 
            return true; 
        } catch (MessagingException mex) { 
            mex.printStackTrace(); 
           return false; 
        }     
    } 
     
    private static byte[] getImageBytes(String file) throws IOException { 
        byte[] myData = null; 
        URL url = new URL(file); 
        URLConnection connection = url.openConnection(); 
        InputStream is = connection.getInputStream(); 
        try { 
            ByteArrayOutputStream byteArray = new ByteArrayOutputStream(); 
            int ch = 0; 
            while ((ch = is.read()) != -1) { 
                byteArray.write(ch); 
            } 
            // System.out.println(byteArray.size()); 
            myData = byteArray.toByteArray(); 
            // System.out.println(myData.length); 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
        return myData; 
    } 
}

 本文来自:http://bbs.ibeifeng.com/read-htm-tid-65466.html

更多java技术问题解决:http://bbs.ibeifeng.com/thread-htm-fid-131.html