zoukankan      html  css  js  c++  java
  • JavaMail邮件开发

    JavaMail邮件开发

    (api  + 配置)

    开发中,邮件的应用?

             -à 注册,填写生日;  后期系统会自动发送生日祝贺

    -à 发货,发货提醒!邮件提醒!

    邮件:

             1. 发邮件;【程序中如何发邮件!】

             2. 收邮件;【很多客户端工具, foxmail 】

    邮件开发准备:

    准备工作, 环境搭建:

    1. 本地搭建一个邮件服务器

      -à 易邮服务器,eyoumailserversetup.exe

    2. 新建邮箱账号

      张三给李四发邮件。

      步骤1:

             新建域名: 工具, 服务器设置, 单域名框中输入 itcast.com

      步骤2:

             新建邮箱账号:  zhangsan@itcast.com

                      lisi@itcast.com

    3. 安装foxmail

             配置邮件发送服务器(smtp):  localhost      25

            邮件接收服务器(pop3):  localhost     110

             再新建账号,就可以接收邮件了!

    邮件开发之普通邮件:

    JavaMail开发,先引入jar文件:

             activation.jar   【如果使用jdk1.6或以上版本,可以不用这个jar文件】

             mail.jar       【邮件发送核心包】

    /**
     * 1. 发送一封普通邮件
     * @author Jie.Yuan
     *
     */
    public class App_SendMail {
    
        @Test
        public void testSend() throws Exception {
            
            //0. 邮件参数
            Properties prop = new Properties();
            prop.put("mail.transport.protocol", "smtp");    // 指定协议
            prop.put("mail.smtp.host", "localhost");        // 主机   stmp.qq.com
            prop.put("mail.smtp.port", 25);                    // 端口
            prop.put("mail.smtp.auth", "true");                // 用户密码认证
            prop.put("mail.debug", "true");                    // 调试模式
            
            //1. 创建一个邮件的会话
            Session session = Session.getDefaultInstance(prop);
            //2. 创建邮件体对象 (整封邮件对象)
            MimeMessage message = new MimeMessage(session);
            //3. 设置邮件体参数: 
            //3.1 标题
            message.setSubject("我的第一封邮件    ");
            //3.2 邮件发送时间
            message.setSentDate(new Date());
            //3.3 发件人
            message.setSender(new InternetAddress("zhangsan@itcast.com"));
            //3.4 接收人
            message.setRecipient(RecipientType.TO, new InternetAddress("lisi@itcast.com"));
            //3.5内容
            message.setText("你好,已经发送成功!  正文....");  // 简单纯文本邮件
            message.saveChanges();   // 保存邮件(可选)
            
            //4. 发送
            Transport trans = session.getTransport();
            trans.connect("zhangsan", "888");
            // 发送邮件
            trans.sendMessage(message, message.getAllRecipients());
            trans.close();
        }
    }

    邮件开发之带图片

    /**
     * 带图片资源的邮件
     * @author Jie.Yuan
     *
     */
    public class App_2SendWithImg {
        
        // 初始化参数
        private static Properties prop;
        // 发件人
        private static InternetAddress sendMan = null;
        static {
            prop = new Properties();
            prop.put("mail.transport.protocol", "smtp");    // 指定协议
            prop.put("mail.smtp.host", "localhost");        // 主机   stmp.qq.com
            prop.put("mail.smtp.port", 25);                    // 端口
            prop.put("mail.smtp.auth", "true");                // 用户密码认证
            prop.put("mail.debug", "true");                    // 调试模式
            try {
                sendMan = new InternetAddress("zhangsan@itcast.com");
            } catch (AddressException e) {
                throw new RuntimeException(e);
            }
        }
    
        @Test
        public void testSend() throws Exception {
            // 1. 创建邮件会话
            Session session = Session.getDefaultInstance(prop);
            // 2. 创建邮件对象
            MimeMessage message = new MimeMessage(session);
            // 3. 设置参数:标题、发件人、收件人、发送时间、内容
            message.setSubject("带图片邮件");
            message.setSender(sendMan);
            message.setRecipient(RecipientType.TO, new InternetAddress("lisi@itcast.com"));
            message.setSentDate(new Date());
            
            /***************设置邮件内容: 多功能用户邮件 (related)*******************/
            // 4.1 构建一个多功能邮件块
            MimeMultipart related = new MimeMultipart("related");
            // 4.2 构建多功能邮件块内容 = 左侧文本 + 右侧图片资源
            MimeBodyPart content = new MimeBodyPart();
            MimeBodyPart resource = new MimeBodyPart();
            
            // 设置具体内容: a.资源(图片)
            String filePath = App_2SendWithImg.class.getResource("8.jpg").getPath();
            DataSource ds = new FileDataSource(new File(filePath));
            DataHandler handler = new DataHandler(ds);
            resource.setDataHandler(handler);
            resource.setContentID("8.jpg");   // 设置资源名称,给外键引用
            
            // 设置具体内容: b.文本
            content.setContent("<img src='cid:8.jpg'/>  好哈哈!", "text/html;charset=UTF-8");
            
            related.addBodyPart(content);
            related.addBodyPart(resource);
            
            /*******4.3 把构建的复杂邮件快,添加到邮件中********/
            message.setContent(related);
            
            
            // 5. 发送
            Transport trans = session.getTransport();
            trans.connect("zhangsan", "888");
            trans.sendMessage(message, message.getAllRecipients());
            trans.close();
        }
    }

    邮件开发之带图片 + 附件

    /**
     * 3. 带图片资源以及附件的邮件
     * @author Jie.Yuan
     *
     */
    public class App_3ImgAndAtta {
        
        // 初始化参数
        private static Properties prop;
        // 发件人
        private static InternetAddress sendMan = null;
        static {
            prop = new Properties();
            prop.put("mail.transport.protocol", "smtp");    // 指定协议
            prop.put("mail.smtp.host", "localhost");        // 主机   stmp.qq.com
            prop.put("mail.smtp.port", 25);                    // 端口
            prop.put("mail.smtp.auth", "true");                // 用户密码认证
            prop.put("mail.debug", "true");                    // 调试模式
            try {
                sendMan = new InternetAddress("zhangsan@itcast.com");
            } catch (AddressException e) {
                throw new RuntimeException(e);
            }
        }
    
        @Test
        public void testSend() throws Exception {
            // 1. 创建邮件会话
            Session session = Session.getDefaultInstance(prop);
            // 2. 创建邮件对象
            MimeMessage message = new MimeMessage(session);
            // 3. 设置参数:标题、发件人、收件人、发送时间、内容
            message.setSubject("带图片邮件");
            message.setSender(sendMan);
            message.setRecipient(RecipientType.TO, new InternetAddress("lisi@itcast.com"));
            message.setSentDate(new Date());
            
            /*
             * 带附件(图片)邮件开发
             */
            // 构建一个总的邮件块
            MimeMultipart mixed = new MimeMultipart("mixed");
            // ---> 总邮件快,设置到邮件对象中
            message.setContent(mixed);
            // 左侧: (文本+图片资源)
            MimeBodyPart left = new MimeBodyPart();
            // 右侧: 附件
            MimeBodyPart right = new MimeBodyPart();
            // 设置到总邮件块
            mixed.addBodyPart(left);
            mixed.addBodyPart(right);
            
            /******附件********/
            String attr_path = this.getClass().getResource("a.docx").getPath();
            DataSource attr_ds = new FileDataSource(new File(attr_path));
            DataHandler attr_handler = new DataHandler(attr_ds);
            right.setDataHandler(attr_handler);
            right.setFileName("a.docx");
            
            
            /***************设置邮件内容: 多功能用户邮件 (related)*******************/
            // 4.1 构建一个多功能邮件块
            MimeMultipart related = new MimeMultipart("related");
            // ----> 设置到总邮件快的左侧中
            left.setContent(related);
            
            // 4.2 构建多功能邮件块内容 = 左侧文本 + 右侧图片资源
            MimeBodyPart content = new MimeBodyPart();
            MimeBodyPart resource = new MimeBodyPart();
            
            // 设置具体内容: a.资源(图片)
            String filePath = App_3ImgAndAtta.class.getResource("8.jpg").getPath();
            DataSource ds = new FileDataSource(new File(filePath));
            DataHandler handler = new DataHandler(ds);
            resource.setDataHandler(handler);
            resource.setContentID("8.jpg");   // 设置资源名称,给外键引用
            
            // 设置具体内容: b.文本
            content.setContent("<img src='cid:8.jpg'/>  好哈哈!", "text/html;charset=UTF-8");
            
            related.addBodyPart(content);
            related.addBodyPart(resource);
            
            
            
            // 5. 发送
            Transport trans = session.getTransport();
            trans.connect("zhangsan", "888");
            trans.sendMessage(message, message.getAllRecipients());
            trans.close();
        }
    }

    3. 注意

    Java project。

    如果是web项目,因为javaee自带的有邮件功能,可能存在问题!

    我们要用自己的mail.jar文件功能!  需要删除javaee中mail包!

    author@nohert
  • 相关阅读:
    UVa -- 401 Palindromes
    ffplay播放PCM裸流
    VLC2.2.4命令参数
    kurento搭建以及运行kurento-hello-world
    webrtp官方demo运行
    webrtc相关概念
    linux下面用Mingw编译libx264
    learning webrtc 使用node.js
    ffmpeg转码指南
    rtmpdump禁用openssl
  • 原文地址:https://www.cnblogs.com/gzgBlog/p/13836395.html
Copyright © 2011-2022 走看看