你的位置:首页 > Java教程

[Java教程]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);  }