java发送邮件demo

工作中会经常用到java的邮件发送功能,下面是个小demo
jdk1.6以上需要mail.jar的jar包,请注意一下

/*  配置文件内容
         * mail.smtp.host=smtp.qq.com 
         * mail.smtp.port=587 
         * mail.debug=true
         * mail.smtp.auth=true 
         * mail.user=qq
         * mail.password=shouquanma
         */
        //配置文件位置
        String filePath = Test4.class.getClassLoader().getSystemResource("")+"/mail.properties";
        filePath=filePath.substring(5);
        InputStream ips=new FileInputStream(new File(filePath));
        Properties props = new Properties();
        props.load(ips);
        ips.close();
        //邮件的host,用户名,以及授权码
        String host=props.getProperty("mail.stmp.host");
        final String user=props.getProperty("mail.user");
        final String password=props.getProperty("mail.password");
        //提供权限的类
        Authenticator au=new Authenticator(){
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(user,password);
            }
        };
        //根据配置文件和权限类获取一个会话
        Session session = Session.getInstance(props, au);
        //通过会话新建一个邮件
        MimeMessage message=new MimeMessage(session);
        //创建mixed模式的文件,这种模式可以带有附件,当然也可以不带。另外还有related模式的,不过还是推荐这种
        Multipart mixed=new MimeMultipart("mixed");
        /*下面说一下BodyPart 和 Multipart之间的关系(有不足的地方欢迎补充交流)
         * Multipart 是message的Content(内容)
         * BodyPart可以是附件,可以是带有链接的文件等等。而且,一个Multipart可以包含多个BodyPart,最后用addBodyPart方法组合一下就可以了
         */
        BodyPart bp=new MimeBodyPart();
        //用datasource 和datahandler去处理附件,附件只需要提供一个地址即可,名字可以自己设置
        //另外,如果需要添加多个附件,可以简历多个BodyPart
        DataSource ds=new FileDataSource(filePath);
        DataHandler dh=new DataHandler(ds);
        bp.setDataHandler(dh);
        bp.setFileName("mail.properties");
        mixed.addBodyPart(bp);
        //这里设置的是邮件的具体内容,类似于response中设置header
        BodyPart bp2=new MimeBodyPart();
        bp2.setContent("<a href='http://www.soso.com'>搜搜</a>", "text/html;charset=utf-8");
        mixed.addBodyPart(bp2);
        //全部组合完成后,设置主题,发送方,收件方,以及将内容设定好,保存一下
        message.setSubject("这是一封测试邮件");
        message.setFrom(new InternetAddress("send@qq.com"));
        message.setRecipient(RecipientType.TO, new InternetAddress("recipient@qq.com"));
        message.setContent(mixed);
        message.saveChanges();
        //通过会话获取传输类,然后建立连接,发送邮件,关掉连接。和socket很类似
        Transport transport=session.getTransport("smtp");
        transport.connect(host, user, password);
        transport.send(message);
        transport.close();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值