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