首页 > 学院 > 开发设计 > 正文

JavaMail学习(带附件发送)

2019-11-14 23:31:32
字体:
来源:转载
供稿:网友
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("lishun1005@sohu.com"));// 设置发信人        msg.setRecipients(RecipientType.TO, "lishun1005@sohu.com");// 发送,可以发给多个人,相当于群发        msg.setRecipients(RecipientType.BCC, "lishun1005@sohu.com");// 暗送(只发给一个人)        msg.setRecipients(RecipientType.CC, "lishun1005@sohu.com");// 抄送人:        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("lishun1005@sohu.com"));// 设置发信人        msg.setRecipients(RecipientType.TO, "lishun1005@sohu.com");        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);    }


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表