zoukankan      html  css  js  c++  java
  • 发送邮件java实现

    下面代码可以实现普通qq邮箱发送邮件的功能,可以传附件,但是是固定的附件:

    需要两个jar包:mail.jar,activation.jar

    mail.jar 下载地址:
    http://java.sun.com/products/javamail/downloads/index.html

    activation.jar 下载地址:
    http://java.sun.com/products/javabeans/jaf/downloads/index.html

    必须要在qq邮箱中获得第三方登录授权码:

    代码:

        /**
         * 发送邮件(可以携带附件)
         * @param to 收件人
         */
        public void sendMessage(String to)
           {          
              // 发件人电子邮箱
              String from = "XXXXXXXXX@qq.com";
              // 发件人电子邮箱密码(此为QQ邮箱第三方客户端登录授权码)
              String password = "**********";
              // 指定发送邮件的主机为 
              String host = "smtp.qq.com";
              // 获取系统属性
              Properties properties = System.getProperties();
              // 设置邮件服务器
              properties.setProperty("mail.smtp.host", host);
              properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
              properties.put("mail.smtp.port", "465");
              properties.put("mail.smtp.socketFactory.port", "465");
              properties.put("mail.smtp.auth", true);
              // 获取默认session对象
              Session session = Session.getDefaultInstance(properties,new Authenticator(){
                public PasswordAuthentication getPasswordAuthentication()
                {
                    //发件人邮件用户名、密码
                     return new PasswordAuthentication("XXXXXXXXX@qq.com", "**********"); 
                }
              });
              //设置获取debug信息
              session.setDebug(true);
              try{
                 // 创建默认的 MimeMessage 对象
                 MimeMessage message = new MimeMessage(session);
                 // Set From: 头部头字段(发件人)
                 message.setFrom(new InternetAddress(from));
                 // Set To: 头部头字段(收件人)
                 message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));
                 // Set Subject: 头部头字段(邮件主题)
                 message.setSubject("测试邮件!");
                 // 设置消息体
                 message.setText("这是一个测试邮件");
                 //读取附件
                 try {
                     // 设置一个超文本对象
                     Multipart multipart = new MimeMultipart();
                     // 设置一个超文本的内容对象
                     BodyPart bodyPart;
                     // 创建一个文件读取对象,从文件路径将文件读取出来
                     File file = new File("D:/****.docx");
                     // 判断文件不存在则抛出异常
                     if(!file.exists()){
                         throw new IOException("文件不存在!请确定文件路径是否正确");
                     }
                     bodyPart = new MimeBodyPart();
                     // 创建一个文件数据对象来管理文件数据
                     DataSource dataSource = new FileDataSource(file);
                     // 将文件数据设置成统一的数据然后设置为bodyPart的数据
                     bodyPart.setDataHandler(new DataHandler(dataSource));
                     //文件名要加入编码,不然出现乱码
                     bodyPart.setFileName(MimeUtility.encodeText(file.getName()));
                     // 将bodyPart设置为附件的内容
                     multipart.addBodyPart(bodyPart);
                     //将附件加入邮件中
                     message.setContent(multipart);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                 
                 // 获得transport示例对象
                 Transport transport = session.getTransport("smtp");
                 // 打开连接
                 transport.connect(host, from, password);
                 // 将message对象传递给transport对象,将邮件发送出去
                 transport.sendMessage(message, message.getAllRecipients());
                 // 关闭传输对象
                 transport.close();
                 System.out.println("Sent message successfully....");
              }catch (MessagingException mex) {
                 mex.printStackTrace();
              }
           }

     点击下载所需jar包

  • 相关阅读:
    Spring+Spring MVC+Hibernate框架搭建实例
    数据结构:串
    为什么java中用枚举实现单例模式会更好
    验证码原理分析及实现
    Servlet监听器——实现在线登录人数统计小例子
    IntelliJ IDEA 远程调试 Tomcat 的方法
    SQL注入的一些技巧分享
    Java中String与byte[]的转换
    JavaSE基础:集合类
    二叉树的非递归遍历
  • 原文地址:https://www.cnblogs.com/shuilangyizu/p/5684362.html
Copyright © 2011-2022 走看看