改变世界的是这样一群人,他们寻找梦想中的乐园,当他们找不到时,他们亲手创造了它

发送邮件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包

 

posted @ 2016-07-19 13:10  水狼一族  阅读(375)  评论(0编辑  收藏  举报
改变世界的是这样一群人,他们寻找梦想中的乐园,当他们找不到时,他们亲手创造了它