java邮件发送

渐渐地越来越多的小工具,是程序越来越简单,我还是一个比较复古的人,总是喜欢那种最原始的东西.
想到以后的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,主体部件1
MimeBodyPart part1 = new MimeBodyPart ();
part1.setContent("这是一个含有图片附件的多部件邮件!", "text/html;charset=utf-8");
list.addBodyPart(part1);

//2,主体部件2
MimeBodyPart  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
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值