JavaMail学习(带附件发送)

以前觉得JavaMail是一种很高大上玩意,所以就在网上找了关于JavaMail的知识,其实也没想像中那么高大上,我就只学习了发送邮件的部分,那么我就来贴上自己写的代码啦,具体实现代码有详细的解释了

第一个是发送普通邮件

// 发送普通邮件

    public static void sendTextmail() throws MessagingException {

        // 第一步.获取Session(注:这个是javax.mail下的类)

        /*

         * public static Session getInstance(java.util.Properties props, Authenticator authenticator)

         * 

         * props需要指定两个键值,一个是指定服务器主机名,另一个是指定是否需要认证!这里设置时必须验证true

         * authenticator是一个接口,表示认证器,就是客户端的身份登陆。我们需要自己来实现这个接口,实现这个接口需要使用账户和密码

         */

        Properties props = new Properties();

        props.setProperty("mail.host", "smtp.sohu.com");

        props.setProperty("mail.smtp.auth", "true");

        Authenticator auth = new Authenticator() {

            @Override

            protected PasswordAuthentication getPasswordAuthentication() {

                return new PasswordAuthentication("lishun1005",

                        "leason841553484");

            }

        };

        Session session = Session.getInstance(props, auth);

        // 第二步:创建MimeMessage对象

        MimeMessage msg = new MimeMessage(session);

        msg.setFrom(new InternetAddress("[email protected]"));// 设置发信人



        msg.setRecipients(RecipientType.TO, "[email protected]");// 发送,可以发给多个人,相当于群发

        msg.setRecipients(RecipientType.BCC, "[email protected]");// 暗送(只发给一个人)

        msg.setRecipients(RecipientType.CC, "[email protected]");// 抄送人:

        msg.setSubject("发送给王尼玛");// 设置邮件标题;

        msg.setContent("普通邮件", "text/plan;charset=utf-8");// 设置正文和正文的编码方式



        // 发送邮件



        Transport.send(msg);



    }

第二个是带附件的发送

 

// 发带附件的邮件

    public static void sendTextAndFilemail() throws MessagingException,

            IOException {

        Properties props = new Properties();

        props.setProperty("mail.host", "smtp.sohu.com");

        props.setProperty("mail.smtp.auth", "true");

        Authenticator auth = new Authenticator() {

            @Override

            protected PasswordAuthentication getPasswordAuthentication() {

                return new PasswordAuthentication("lishun1005",

                        "leason841553484");

            }

        };

        Session session = Session.getInstance(props, auth);

        

        MimeMessage msg = new MimeMessage(session);

        msg.setFrom(new InternetAddress("[email protected]"));// 设置发信人

        msg.setRecipients(RecipientType.TO, "[email protected]");

        msg.setSubject("发送给王尼玛");

        

        /*

         * 当发送包含附件的邮件时,邮件体就为多部件形式! 1. 创建一个多部件的部件内容!MimeMultipart

         * MimeMultipart就是一个集合,用来装载多个主体部件! 2. 我们需要创建两个主体部件,一个是文本内容的,另一个是附件的。

         * 主体部件叫MimeBodyPart 3. 把MimeMultipart设置给MimeMessage的内容!这段内容是在网上找到的学习资料,自己感兴趣自己就再理解一番

         */

        MimeMultipart list = new MimeMultipart();// 创建多部分内容



        // 创建MimeBodyPart

        MimeBodyPart part1 = new MimeBodyPart();

        // 设置文本的内容

        part1.setContent("带附件的邮件", "text/html;charset=utf-8");

        // 把文本添加到集合中

        list.addBodyPart(part1);



        // 创建MimeBodyPart

        MimeBodyPart part2 = new MimeBodyPart();

        part2.attachFile(new File("D:/王尼玛.jpg"));// 设置附件的内容

        part2.setFileName(MimeUtility.encodeText("王尼玛.jpg"));// 设置显示的文件名称,其中encodeText用来处理中文乱码问题

        list.addBodyPart(part2);



        msg.setContent(list);// 把它设置给邮件作为邮件的内容。



        // 发送邮件



        Transport.send(msg);



    }

 

你可能感兴趣的:(javamail)