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);

    }

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。