java邮件发送

来源:互联网 发布:软件复杂性 编辑:程序博客网 时间:2024/06/07 00:06
渐渐地越来越多的小工具,是程序越来越简单,我还是一个比较复古的人,总是喜欢那种最原始的东西.想到以后的java邮件发送可能多数会使用封装好的工具类,还是有点不舍,觉得还是把这种原始的记录下来.
java邮件发送主要涉及    两个包:mail.jar , activation.jar包    三个对象:javax.mail.Session,MimeMessage,Transport    Session需要两个参数:Properties,Authenticator    Properties props = new Properties();    props.setProperty("mail.host","smtp.163.com");//服务器主机名    props.setProperty("mail.smtp.auth","true); //邮箱        Authenticator anth = new Authenticator(){ //抽象类        @Override        protected PasswordAuthentication getPasswordAuthentication() {            return new PasswordAuthentication("账号", "密码");                 }    }    Session session = Session.getInstance(props,auth);MimeMessage msg = new MimeMessage(session);     msg.setFrom("");    msg.setRecipients(RecipientType.TO,"");    msg.setRecipients(RecipientType.CC,"");抄送    msg.setRecipients(RecipientType.BCC,"");密送/*** 当发送含有附件的邮件时,邮件体为多部件形式    * 1,创建一个多部件的邮件内容:MimeMultiPart,    * MimeMultiPart 就是一个集合,用来装在多个主体部件!    * 2,邮件的主体部件:MimeBodyPart    可以为文本内容,也可以为附件    * 3,将含有多个主体部件的邮件主体设置给MimeMessage*/MimeMultiPart list = new MimeMultiPart();//1,主体部件1MimeBodyPart part1 = new MimeBodyPart ();part1.setContent("这是一个含有图片附件的多部件邮件!", "text/html;charset=utf-8");list.addBodyPart(part1);//2,主体部件2MimeBodyPart  part2 = new MimeBodyPart();part2.attachFile(new File("F:/a.jpg"));part2.setFileName(MimeUtility.encodeText("图片.jsp"));list.addBodyPart(part2);//msg.setContent(list);Transport.send(msg);

遇到的问题:
1,邮件的发送,需要发送邮件的服务器授予smtp的权限
2,try {

            Transport.send(msg);        } catch (Exception e) {            System.out.println("错误:::"+e.getMessage());         }        打印出错误信息是null;

原因:msg.setContent(Object o,String type);
邮件内容的第一个参数是:邮件内容的对象,可以是字符串,
第二个参数是邮件内容的类型:text/html;charset=utf-8,
无意间将这两个参数设置错了.

0 0