• JavaWeb 之邮件发送


    1. 邮件协议概述

    • SMTP(Simple Mail Transfer Protocol, 简单邮件传输协议) 发邮件协议;
    • POP3(Post Office Protocol Version 3, 邮局协议第3版) 收邮件协议;
    • IMAP(Internet Message Access Protocol, 因特网消息访问协议)收发邮件协议;

    2. 邮件服务器名称

    • SMTP 服务器的端口号为 25,服务器名称为 smtp.xxx.xxx;
    • POP3 服务器的端口号为 110,服务器名称为 pop3.xxx.xxx;

    3. JavaMail 发邮件

    3.1 导包

    • mail.jar;
    • activition.jar;
    • J2EE javax.mail 包

    3.2 核心类

    1. Session

      • 如果得到了它,表示已经与服务器连接上了, 与 Connection 的作用相似.
    2. MimeMessage

      • 它表示一个邮件对象,可以调用它的 setXxx()方法,设置发件人,发件人,主题以及正文等;
    3. TransPort

      • 发邮件;

    // 得到 Session, 需要使用 Session.getInstance(Properties, Authenticator);
        Properties props = new Properties();
        props.setProperty("mail.host","smtp.163.com"); //设置服务器主机名
        props.setProperty("mail.smtp.auth","true"); //设置是否需要验证
    
        Authenticator auth = new Authenticator(){
                protected PasswordAuthentication getPasswordAuthentication(){
                    return new PasswordAuthentication("用户名","密码");
                }
        };
    
        // 得到 session 对象
        Session session = Session.getInstance(props,auth);
        try{
            // 创建 MimeMessage
            MimeMessage msg = new MimeMessage(session);
            msg.setFrom(new InternetAddess("用户名@163.com")); // 设置发件人
            msg.setRecipients(RecipientType.TO, "收件人@126.com"); // 设置收件人
            msg.setRecipients(RecipientType.CC, "收件人@sohu.com"); // 设置抄送
            msg.setRecipients(RecipientType.BCC, "收件人@sina.com"); // 设置暗送
    
            msg.setSubject("这是一封测试邮件"); // 设置标题
    
            // 第一种方式: 普通邮件
            msg.setContent("下雨天","text/html;charset=utf-8"); //邮件内容
    
            // 第二种方式: 带有附件的邮件
            /*
             * 当发送包含附件的邮件时, 邮件体为多部件形式!
             *  1. 创建一个多部件的部件内容! MimeMultipart
             *  MimeMultipart 就是一个集合, 用来装载多个主体部件!
             *  2. 我们需要创建两个主体部件, 一个是文本内容的, 另一个是附件;
             *     主体部件叫 MimeBodyPart
             *  3. 把 MimeMultipart 设置给 MimeMessage 的内容!!
             */
    
             MimeMultipart list = new MimeMultipart(); // 创建多部分内容
    
             // 创建 MimeBodyPart
             MimeBodyPart part2 = new MimeBodyPart();
             // 设置主体部件的内容
             part2.setContent("这是测试邮件","text/html;charset=utf-8");
             // 把主体部件添加到集合中
             list.addBodyPart(part2);
    
             // 创建第二个 MimeBodyPart
             MimeBodyPart part3 = new MimeBodyPart();
             // 设置主体部件的内容
             part3.attachFile(new File("c:/浮夸.mp3"));
             // 设置显示的文件名称, 其中 encodeText 用来处理中文乱码问题
             part3.setFilename(MimeUtility.encodeText("浮夸.avi"));
             // 把主体部件添加到集合中
             list.addBodyPart(part3);
    
             // 把多部件设置给邮件作为邮件的内容
             msg.setContent(list);
    
            // 发送
            Transport.send(msg);
        }catch(MessagingException e){
            throw new RuntimeException(e);
        }
    
    
        // 使用 MailUtils 工具发送邮件
        public void fun2() throws Exception{
    
            // 1. 得到 Session 对象
            Session session = MailUtils.createSession("smtp.163.com","用户名","密码");
    
            // 2. 创建 Mail 对象
            Mail mail = new Mail("发件地址","收件地址","邮件主题","邮件内容");
    
            // 3. 创建附件对象
            AttachBean ab = new AttachBean(new File("C:/浮夸.avi"),"浮夸.avi");
    
            // 添加到 mail 中
            mail.addAttach(ab);
    
            // 发送
            MailUtils.send(session,mail);
        }
    

    参考资料:

  • 相关阅读:
    Java.Io 初步了解
    Java 对象序列化与反序列化
    Java
    Java
    Java
    实现文件拷贝
    Java
    Java 国际化标准程序实现
    【C#】分享带等待窗体的任务执行器一枚
    解决64位Windows2003程序字体很小的问题
  • 原文地址:https://www.cnblogs.com/linkworld/p/7637134.html
Copyright © 2020-2023  润新知