• JavaMail API的应用


    JavaMail API 是一个用于阅读、编写和发送电子消息的可选包(标准扩展),用来创建邮件用户代理(Mail User Agent,MUA)类型程序。

    JavaMail API 需要 JavaBeans Activation Framework 来支持任意数据块的输入及相应处理。

    下载后解压.zip 文件,将 mail.jar 文件和 activation.jar 文件复制到 JRE(Java 运行时环境,Java Runtime Environment)目录下的 lib/ext 目录中去。

    或者,将 jar 文件添加系统到 CLASSPATH 中。

    首先,需要针对各个邮箱的服务器地址等信息进行分别了解

    1.网易邮箱的 POP3 与 SMTP 服务器

    邮箱 POP3 服务器(端口110 SMTP 服务器(端口25
      188.com
    pop3.188.com smtp.188.com
      163.com
    pop3.163.com smtp.163.com
      126.com
    pop3.126.com smtp.126.com
      netease.com
    pop.netease.com smtp.netease.com
      yeah.net
    pop.yeah.net smtp.yeah.net

    SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。
    SMTP 认证,简单地说就是要求必须在提供了账户名和密码之后才可以登录 SMTP 服务器,这就使得那些垃圾邮件的散播者无可乘之机。

    2.腾讯邮箱的 POP3 与 SMTP 服务器

    邮箱POP3服务器(端口995)SMTP服务器(端口465或587)
    qq.com pop.qq.com smtp.qq.com

    SMTP服务器需要身份验证。所以需要获取授权码。

    具体内容:http://service.mail.qq.com/cgi-bin/help?subtype=1&&no=1001256&&id=28

    代码演示:

    利用JavaMail接收邮件 

    // JavaMail接收邮件
    // 设置邮件服务器、用户名、密码及整个应用程序中共享的其它信息
    Properties props = new Properties();
    props.put("mail.pop3.host", "pop.163.com");
    props.put("mail.pop3.port", "110");
    // 用 getInstance() 创建一个独立的 session
    Session session = Session.getDefaultInstance(props);
    // 连接到一个 Store,获取一个 Folder
    Store store = session.getStore("pop3");
    store.connect("y**********@163.com", "y*************");
    // POP3 唯一可以用的文件夹是 INBOX。如果使用 IMAP,还可以用其它文件夹。
    Folder folder = store.getFolder("INBOX");
    folder.open(Folder.READ_ONLY);
    int size = folder.getMessageCount();
    for(int i=1; i<=size; i++) {
      Message message = folder.getMessage(i);
      String from = message.getFrom()[0].toString();
      String subject = message.getSubject();
      // 用 getContent() 来获取其内容,或者用 writeTo() 将内容写入流。getContent()方法只能得到消息内容,writeTo() 的输出却包含消息头。
      // String content = (String) message.getContent();
      Date date = message.getSentDate();
      System.out.println("From: " + from);
      System.out.println("Subject: " + subject);
      // System.out.println("Content: " + content);
      System.out.println("Date: " + date);
      System.out.println("接收成功!");
    }
    // 读完邮件,需要关闭与 folder 和 store 的连接。
    folder.close(true);
    store.close();

     利用JavaMail发送邮件

    // JavaMail发送邮件
    Properties props = System.getProperties();
    props.put("mail.smtp.host", "smtp.163.com");
    props.put("mail.smtp.port", "25");
    props.put("mail.smtp.auth", "true");
    Session session = Session.getDefaultInstance(props, new Authenticator() {
      @Override
      protected PasswordAuthentication getPasswordAuthentication() {
        // 通过用户名和密码访问受保护的资源
        return new PasswordAuthentication("y**********@163.com", "y*************");
      }
    });
    
    MimeMessage message = new MimeMessage(session);
    message.setFrom(new InternetAddress("y**********@163.com"));
    // Address address = new InternetAddress("xxx@qq.com")确定信件地址
    // 需要消息显示多个 from 地址,可以使用 addFrom() 方法:Address address[] = ...;message.addFrom(address);
    // 三种预定义的地址类型是:Message.RecipientType.TO、Message.RecipientType.CC、Message.RecipientType.BCC
    message.addRecipient(Message.RecipientType.TO, new InternetAddress("3********@qq.com"));
    // 设置主题
    message.setSubject("JavaMail发送测试");
    // message.setContent("Hello", "text/plain")设置内容,参数分别代表内容和 mime 类型。MIME 类型缺省为 text/plain
    message.setText("JavaMail发送测试JavaMail发送测试JavaMail发送测试");
    // 用协议指定的语言发送消息(通常是 SMTP)
    Transport.send(message);
    System.out.println("发送邮件成功!");
    
  • 相关阅读:
    layui表格数据统计
    浅谈权限控制
    搜索栏实时更新查找内容
    虚拟域名
    关于阿里云服务器安装了Apache开放80端口访问不了网页
    验证码思路
    计算标准差 Exercise07_11
    倒置数组 Exercise07_12
    找出最小元素的下标 Exercise07_10
    找出最小元素 Exercise07_09
  • 原文地址:https://www.cnblogs.com/loveflycforever/p/5861923.html
Copyright © 2020-2023  润新知