精华内容
下载资源
问答
  • 本篇文章主要介绍了Java实现邮箱找回密码实例代码,可以通过邮箱找回丢失密码,具有一定的参考价值,有需要的可以了解一下。
  • 主要为大家详细介绍了利用java实现邮箱群发功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Java实现邮箱激活账号

    2015-01-06 12:10:28
    Java实现邮箱激活账号功能
  • 本资源内容为用java实现邮箱信息的发送,包括完整源码和jar包,简单易读,方便需要的道友下载。
  • Java实现邮箱激活功能

    热门讨论 2013-02-19 15:51:35
    Java实现邮箱激活账号的功能,可以参考我的博客 博客地址:http://blog.csdn.net/jolingogo/article/details/8591197
  • java实现邮箱发送功能实例源码,代码简单易读,都有注释
  • java实现邮箱验证码所需的jar包,用java代码给指定的邮箱发送邮件
  • java实现邮箱验证码

    千次阅读 2017-12-22 08:24:40
    接上文,接下来介绍下java实现邮箱验证码 第一步:加载邮件发送的 第二步:编写邮件发送的方法 public boolean send(String txt, String to, String subject) { Properties props = new Properties...

    接上文,接下来介绍下java实现邮箱验证码

    第一步:加载邮件发送的


    第二步:编写邮件发送的方法

    public boolean send(String txt, String to, String subject) {
    Properties props = new Properties();
    // 设置发送邮件的邮件服务器的属性(这里使用网易的smtp服务器)
    props.put("mail.smtp.host", host);
    // 需要经过授权,也就是有户名和密码的校验,这样才能通过验证(一定要有这一条)
    props.put("mail.smtp.auth", "true");
    // 用刚刚设置好的props对象构建一个session
    Session session = Session.getDefaultInstance(props);
    // 有了这句便可以在发送邮件的过程中在console处显示过程信息,供调试使
    // 用(你可以在控制台(console)上看到发送邮件的过程)
    session.setDebug(true);
    // 用session为参数定义消息对象
    MimeMessage message = new MimeMessage(session);
    try {
    // 加载发件人地址
    message.setFrom(new InternetAddress(from));
    // 加载收件人地址
    message.addRecipient(Message.RecipientType.TO, new InternetAddress(
    to));
    // 加载标题
    message.setSubject(subject);
    // 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件
    Multipart multipart = new MimeMultipart();
    // 设置邮件的文本内容
    BodyPart contentPart = new MimeBodyPart();

    //加上"text/html; charset=utf-8",表示支持html格式的邮件
    contentPart.setContent(txt, "text/html; charset=utf-8");


    multipart.addBodyPart(contentPart);
    message.setContent(multipart);
    // 保存邮件
    message.saveChanges();
    // 发送邮件
    Transport transport = session.getTransport("smtp");
    // 连接服务器的邮箱
    transport.connect(host, user, pwd);
    // 把邮件发送出去
    transport.sendMessage(message, message.getAllRecipients());
    transport.close();
    } catch (Exception e) {
    LOGGER.error("Exception:" + e);
    }
    return true;
    }




    展开全文
  • java实现邮箱发送的功能,代码都有注释,很容易理解,已经过测试
  • 【实战】Java实现邮箱验证

    千次阅读 2018-05-04 11:22:15
    Java实现邮箱验证一、JavaMail1.什么是JavaMail? JavaMail,提供给开发者处理电子邮件相关的编程接口,它是sun发布的用来处理email的API,它可以方便地执行一些常用的邮件传输。2.为什么要学习JavaMail? 用户...

    Java实现邮箱验证

    一、JavaMail

    1.什么是JavaMail?

        JavaMail,提供给开发者处理电子邮件相关的编程接口,它是sun发布的用来处理email的API,它可以方便地执行一些常用的邮件传输。

    2.为什么要学习JavaMail?

        用户注册后,网站发送一封激活邮件验证

        用户过生日,系统发送生日祝福邮件

    3.邮件协议

    1)SMTP协议

    默认端口号25

    2)POP3协议

     

    二、项目描述

           整个项目主要是通过用户注册页面,将用户注册的信息存入到数据库的同时,向注册用户的邮箱发送一封注册邮件,用户可以在自己的邮箱中打开注册邮件,点击连接,会出现注册成功的提示,与此同时数据库表中的用户注册状态修改。

         数据库的sql语句

    create database regist_web;
    use regist_web;
    create table `user`(
        id int(11) primary key auto_increment comment '用户id',
        username varchar(255) not null comment '用户名',
        email varchar(255) not null comment '用户邮箱',
        password varchar(255) not null comment '用户密码',
        state int(1) not null default 0 comment '用户激活状态:0表示未激活,1表示激活',
        code varchar(255) null comment '激活码'
    )engine=InnoDB default charset=utf8;

    1.整体项目架构

     

     

    2.项目流程

    1)项目主要是通过Maven库来导入包并管理包。首先我们建立第一个maven项目,这里注意勾选上Create a simple project(skip archetype selection).

    此外,注意这里的packaging选为war包。

     

     

    当第一次建立maven工程会报错,选择工程项目的

     

    右键选中generate.....即可ok。

    2)pom.xml导包

     

    (3)修改项目的文件为你的配置

    src/main/resources中db.propertie为你的数据库配置文件。

    src/main/java/utils/MailUtil.java中修改为你的发件人邮箱、密码(在这里我测试的是我通过163邮箱向qq邮箱能够成功发送邮件)

     

    3.项目结果

     


     


     

     

     

     

     

    三、项目源码

    点击打开链接

    展开全文
  • 该工具类是用java实现邮箱发送功能的工具类,有了该类,你只需调用其中的方法,传入邮箱地址、邮件主题、邮件内容即可,十分方便,可以自行更改里边的设置。
  • java实现邮箱发送功能,并且可以不间断的定时发送
  • 最近小编找项目,看到imooc上的一个实战小项目,就是java实现邮箱的注册与激活, 下面是我个人写完的代码在我的网盘链接:https://pan.baidu.com/s/1hsrjlbQ 密码:1vst(里面包含我的视屏展示) 下面是效果展示...

    最近小编找项目,看到imooc上的一个实战小项目,就是java实现邮箱的注册与激活,

    下面是我个人写完的代码在我的网盘链接:https://pan.baidu.com/s/1hsrjlbQ 密码:1vst(里面包含我的视屏展示)

    下面是效果展示(ps:由于代码太多就展示效果,其他想学的就去java实现邮件发送视频地址

    邮箱展示


    注册界面

    注册成功

    数据库Mysql

    以上就是展示,代码在我的网盘,地址给了,具体怎么导包,我给的那个地址会有讲解,就不一一在这里解释了,毕竟也是小编做了几天的空余时间做的。



    展开全文
  • Java 实现邮箱验证

    千次阅读 2017-08-22 23:07:35
    1.Java实现用户注册,邮箱验证码激活的核心代码: 1.1 在RegisterServlet 用户注册类中 public class RegisterServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override ...

    1.Java实现用户注册,邮箱验证码激活的核心代码:

    1.1 在RegisterServlet 用户注册类中

    public class RegisterServlet extends HttpServlet {
    
        private static final long serialVersionUID = 1L;
    
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            this.doPost(request, response);
        }
    
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            String userName=request.getParameter("username");
            String password=request.getParameter("password");
            String email=request.getParameter("email");
            System.out.println(userName+" "+password+" "+email);
            UserService userService=new UserServiceImpl();
    
            if(userService.doRegister(userName,password,email)){
                request.setAttribute("msg", "注册成功,请登录邮箱激活账号");
            }else{
                request.setAttribute("msg", "注册失败,请检查相关信息");
            }
            request.getRequestDispatcher("/result.jsp").forward(request, response);
        }
    }

    1.2 在ActiveServlet 邮箱验证中:

    public class ActiveServlet extends HttpServlet {
    
         private static final long serialVersionUID = 1L;
    
         @Override
         protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              String code=request.getParameter("code");
              UserService userService=new UserServiceImpl();
              if(userService.activeUser(code)){
                   request.getRequestDispatcher("/welcome.jsp").forward(request, response);
              }else{
                   request.getRequestDispatcher("/fail.jsp").forward(request, response);
              }
         }
         @Override
         protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              this.doGet(request, response);
         }
    }

    1.3 在UserService中

    public interface UserService {
         boolean doRegister(String userName, String password, String email);
         boolean activeUser(String code);
    }

    1.4 在UserServiceImpl中

    public class UserServiceImpl implements UserService {
    
         public boolean doRegister(String userName, String password, String email) {
              // 这里可以验证各字段是否为空
    
              //利用正则表达式(可改进)验证邮箱是否符合邮箱的格式
              if(!email.matches("^\\w+@(\\w+\\.)+\\w+$")){
                  return false;
              }
              //生成激活码
              String code=CodeUtil.generateUniqueCode();
              User user=new User(userName,email,password,0,code);
              //将用户保存到数据库
              UserDao userDao=new UserDaoImpl();
              //保存成功则通过线程的方式给用户发送一封邮件
              if(userDao.save(user)>0){
                  new Thread(new MailUtil(email, code)).start();;
                  return true;
              }
              return false;
         }
    
         public boolean activeUser(String code) {
              UserDao userDao=new UserDaoImpl();
              if(userDao.activeUser(code)>0){
                  return true;
              }else{
                  return false;
              }
         }
    }

    1.5 在UserDao中

    public interface UserDao {
         int save(User user);
         int activeUser(String code);
    }

    1.6 在UserDaoImpl中

    public class UserDaoImpl implements UserDao{
         public int save(User user) {
              int num=0;
              try {
                  Connection conn=DBUtil.getConnection();
                  String sql ="insert into user(username,email,password,state,code) values(?,?,?,?,?)";
                  PreparedStatement pstmt=conn.prepareStatement(sql);
                  pstmt.setString(1, user.getUserName());
                  pstmt.setString(2, user.getEmail());
                  pstmt.setString(3, user.getPassword());
                  pstmt.setInt(4, user.getState());
                  pstmt.setString(5, user.getCode());
                  num=pstmt.executeUpdate();
                  DBUtil.close(conn,pstmt, null);
              } catch (SQLException e) {
                  e.printStackTrace();
              }
              return num;
         }
    
         public int activeUser(String code) {
              int num=0;
              try {
                  Connection conn=DBUtil.getConnection();
                  String sql="update user set state=1 where code=?";
                  PreparedStatement pstmt=conn.prepareStatement(sql);
                  pstmt.setString(1, code);
                  num=pstmt.executeUpdate();
                  DBUtil.close(conn,pstmt,null);
              } catch (SQLException e) {
                  e.printStackTrace();
              }
              return num;
         }
    }

    1.7 在CodeUtil中

    public class CodeUtil {
         //生成唯一的激活码
         public static String generateUniqueCode(){
              return UUID.randomUUID().toString().replaceAll("-", "");
         }
    }

    1.8 在 MailUtils中

    public class MailUtil implements Runnable {
         private String email;// 收件人邮箱
         private String code;// 激活码
    
         public MailUtil(String email, String code) {
              this.email = email;
              this.code = code;
         }
    
         public void run() {
              // 1.创建连接对象javax.mail.Session
              // 2.创建邮件对象 javax.mail.Message
              // 3.发送一封激活邮件
              String from = "xxx@qq.com";// 发件人电子邮箱
              String host = "smtp.qq.com"; // 指定发送邮件的主机smtp.qq.com(QQ)|smtp.163.com(网易)
    
              Properties properties = System.getProperties();// 获取系统属性
    
              properties.setProperty("mail.smtp.host", host);// 设置邮件服务器
              properties.setProperty("mail.smtp.auth", "true");// 打开认证
    
              try {
                  //QQ邮箱需要下面这段代码,163邮箱不需要
                  MailSSLSocketFactory sf = new MailSSLSocketFactory();
                  sf.setTrustAllHosts(true);
                  properties.put("mail.smtp.ssl.enable", "true");
                   properties.put("mail.smtp.ssl.socketFactory", sf);
    
    
                  // 1.获取默认session对象
                  Session session = Session.getDefaultInstance(properties, new Authenticator() {
                       public PasswordAuthentication getPasswordAuthentication() {
                            return new PasswordAuthentication("xxx@qq.com", "xxx"); // 发件人邮箱账号、授权码
                       }
                  });
    
                  // 2.创建邮件对象
                  Message message = new MimeMessage(session);
                  // 2.1设置发件人
                  message.setFrom(new InternetAddress(from));
                  // 2.2设置接收人
                   message.addRecipient(Message.RecipientType.TO, new InternetAddress(email));
                  // 2.3设置邮件主题
                  message.setSubject("账号激活");
                  // 2.4设置邮件内容
                  String content = "<html><head></head><body><h1>这是一封激活邮件,激活请点击以下链接</h1><h3><a href='http://localhost:8080/RegisterDemo/ActiveServlet?code="
                            + code + "'>http://localhost:8080/RegisterDemo/ActiveServlet?code=" + code
                            + "</href></h3></body></html>";
                  message.setContent(content, "text/html;charset=UTF-8");
                  // 3.发送邮件
                  Transport.send(message);
                  System.out.println("邮件成功发送!");
              } catch (Exception e) {
                  e.printStackTrace();
              }
         }
    }

    1.9 在DBUtil中

    public class DBUtil {
         private static ComboPooledDataSource cpds=null;
    
         static{
              cpds=new ComboPooledDataSource("mysql");
         }
    
         public static Connection getConnection(){
              Connection connection=null;
              try {
                  connection = cpds.getConnection();
              } catch (SQLException e) {
                  e.printStackTrace();
              }
              return connection;
         }
    
         public static void close(Connection conn,PreparedStatement pstmt,ResultSet rs){
              try {
                  if(rs!=null){
                       rs.close();
                  }
                  if(pstmt!=null){
                       pstmt.close();
                  }
                  if(rs!=null){
                       rs.close();
                  }
              } catch (SQLException e) {
                  e.printStackTrace();
              }
    
         }
    }

    1.10 所用到数据库表

    create table `user`(
         id int(11) primary key auto_increment comment '用户id',
        username varchar(255) not null comment '用户名',
        email varchar(255) not null comment '用户邮箱',
        password varchar(255) not null comment '用户密码',
        state int(1) not null default 0 comment '用户激活状态:0表示未激活,1表示激活',
        code varchar(255) not null comment '激活码'
    )engine=InnoDB default charset=utf8;

     

         PS:若想通过代码更好的理解Java发送邮件,请:https://github.com/luomingkui/RegisterDemo

     

    2.Java实现用户登录邮箱验证项目的核心代码:

    2.1 点击获取验证码,调用如下:

         在AdminUserController中

    //获取验证码
    @RequestMapping(value = "getVcode")
    @ResponseBody
    public Map<String, Object> getVcode(HttpServletRequest request) {
        String userName = request.getParameter("userName");
        Map<String , Object> map =new HashMap<String , Object>(4);
        String msg;
        try {
            String send=adminUserService.genSendVecode(userName);
            map.put("status", Constant.SUCCESS);
            map.put("msg", send);
            return map;
        } catch (Exception e) {
            if (e instanceof WlbException) {
                msg = e.getMessage();
            } else {
                msg = "管理系统异常,请稍候重试";
            }
            WlbManageLogger.e(">>>>>> loginIn action时异常,具体原因:%s", e.getLocalizedMessage()); 
            e.printStackTrace();
        }
        map.put("status", Constant.ERROR);
        map.put("msg", msg);
        return map;
    }

    2.2 在AdminUserService中:

    @Service
    public class AdminUserService {
        @Autowired
        private AdminUserDao adminUserDao;
        @Autowired
        private AdminAuthDao adminAuthDao;
    
        private static String randString = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";//随机产生的字符串
    
        private static long expireTime = 24 * 60 * 60 * 1000;
    
        public static String generateVcode(String cellphone) {
            StringBuilder tmp = new StringBuilder();
            Random rand = new Random();
            for (int i = 0; i < 6; i++) {
                tmp.append(getRandomString(rand.nextInt(36)));
            }
            return tmp.toString();
        }
    
        public static String getRandomString(int num){
            return String.valueOf(randString.charAt(num));
        }
    
        /**
         * 邮箱发送验证码
         * @param userEmail
         * @return
         */
        public String genSendVecode(String userEmail) {
            // 1. 校验邮箱是否正确
            // 2. 校验邮箱是否合法
            // 3. 生成验证码
            // 4. 将验证码发送至指定邮箱
            if (!RegexUtil.emailVerify(userEmail) || !userEmail.endsWith("@wolaibao.com") || !userEmail.endsWith("@zhongbao.email") ) {
                throw new WlbException("用户账户错误,请重新输入");
            }
            AdminUser adminUser = findAdminByAccount(userEmail);
            if (null == adminUser || StringUtils.isBlank(adminUser.getUsername())
                    || adminUser.getStatus()!=0) {
                throw new WlbException("用户账户错误,请重新输入");
            }
            AdminAuth lastAuth = adminAuthDao.selectLastVcode(userEmail);
            if (lastAuth != null && System.currentTimeMillis() - lastAuth.getUpdateTime().getTime() < (1 * 60 * 1000)) {
                throw new WlbException("验证码已经发送至邮箱请勿重复获取");
            }
    
            String vcode;
            if (lastAuth == null || System.currentTimeMillis() - lastAuth.getExpireTime() > 0) {
                vcode = generateVcode(userEmail);
                AdminAuth adminAuth = new AdminAuth();
                adminAuth.setEmail(userEmail);
                adminAuth.setVcode(vcode);
                adminAuth.setExpireTime(System.currentTimeMillis() + expireTime);
                adminAuthDao.insert(adminAuth);
            } else {
                vcode = lastAuth.getVcode();
                adminAuthDao.update(lastAuth);
            }
            MsgService.sendMail(userEmail, "管理后台登录验证", "管理后台登录验证码为:" + vcode + "\n有效期为24小时!");
            return "我有效期为24来保管理后台登录验证已经发送至邮箱,小时,请注意保管验证码";
        }
    
        private AdminUser findAdminByAccount(String userEmail) {
            return adminUserDao.selectByAccount(userEmail);
        }
    }

    2.3 在 MsgService 发送邮件接口中:

    @Service
    public class MsgService {
    /**
     * 调用邮件发送接口
     * @param to
     * @param subject
     * @param content
     */
     public static void sendMail(String to, String subject, String content) {
        try {
            NetRequest mailRequest = new NetRequest(ClientApiMethod.MSG_EMAIL).setMethod(RequestMethod.GET);
             Map<String, Object> params = new HashMap<>();
             params.put("to", to);
             params.put("content", content);
             params.put("subject", subject);
             mailRequest.setParams(params);
             String msgRsp = new HttpExecutor().execute(mailRequest, String.class);
             Loggers.MANAGE.debug("REQUEST email : ", to, "\nRESPONSE", msgRsp.trim());
         } catch (Exception e) {
            Loggers.MANAGE.error("SendMsg error: \n", e);
         }
        }
    }

    2.4 在NetRequest中

    public class NetRequest {
        /**
         * 请求方法
         */
        private RequestMethod method = RequestMethod.GET;
        /**
         * 请求url
         */
        private String path;
    
        /**
         * 标示
         */
        private String tag;
    
        public NetRequest(String url) {
            this.path = url;
            this.tag = "request-" + hashCode();
        }
        public RequestMethod getMethod() {
            return method;
        }
    
        public NetRequest setMethod(RequestMethod method) {
            this.method = method;
            return this;
        }
        public String getUrl() {
            return path;
        }
    
        public NetRequest setUrl(String path) {
            this.path = path;
            return this;
        }
    
        public String getTag() {
            return tag;
        }
    
        public NetRequest setTag(String tag) {
            this.tag = tag;
            return this;
        }
    
    }
    

    2.5 在ClientApiMethod中

    public class ClientApiMethod {
    private static final String MSG_HOST = Config.getInstance().getHttpMsgHost();
     public static final String MSG_EMAIL = MSG_HOST + "/msg/email.json";
     public static final String MSG_EMAIL_HTML = MSG_HOST + "/msg/emailHtml.json";
     public static final String APL_NOTIFY = "/taskDistribution/taskDistributionManager.json";
    }

    2.6 在HttpExecutor中

    public class HttpExecutor {
        public List<HttpTask> taskList = new ArrayList<HttpTask>();
        /**
         * 同步执行请求
         * @param netRequest 请求
         * @param cls  接口响应结果Class
         * @param <T>
         * @return
         */
        public <T> T execute(NetRequest netRequest,Class<T> cls) {
            HttpTask httpTask = new HttpTask().setHttpParam(netRequest);
            taskList.add(httpTask);
            String responseData= httpTask.start();
            if(StrUtil.isBlank(responseData))return null;
            T response =null;
            try {
                response = netRequest.getDataParser().parseResponse(responseData, cls);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return response;
        }
    }

     

     

    展开全文
  • java实现邮箱推送

    千次阅读 2018-12-26 14:23:25
    这边使用qq邮箱演示; 首先进入qq邮箱,进入设置,账户设置;...import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.MessagingException; imp...
  • Java实现邮箱激活账户实例

    千次阅读 多人点赞 2017-07-24 22:39:34
    在网站注册时一般都会要验证注册用户身份的合法性,通常的做法是提供手机号验证或者邮箱...这里通过实例来介绍一下邮箱验证的实现过程,例子可以运行,暂时没有发现什么问题,不过也可能有不安全的地方,欢迎大家指正。
  • Java实现邮箱验证码

    千次阅读 2017-12-15 16:33:39
    声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。邮箱验证码一般能使用邮箱注册的...使用邮箱来发送验证码,不需要像短信验
  • 这是一个实现注册时候邮箱验证的方法调用的是163邮箱的邮件服务器
  • JAVA实现邮箱注册功能

    万次阅读 2018-11-27 10:49:55
    现在的互联网项目中基本都实现邮箱注册的功能,但是该如何实现了,想必没接触过得人心里应该没有个具体的步骤 现在我们来看下是如何具体的实现一个邮箱注册的功能。 第一步、先选用个邮箱作为实例 以QQ邮箱为例...
  • java实现邮箱群发功能

    千次阅读 2017-11-13 15:48:08
    近来无事,在网上看了一些大牛文章,其中看到一篇比较好的,分享...邮箱实体 import java.io.Serializable; /** * 邮件实体类 */ public class Mail implements Serializable { /** * 序列号 */ private
  • java实现邮箱提醒功能

    千次阅读 热门讨论 2018-04-23 10:37:03
    链接:demo下载链接 密码: 7aq5。这里分享一个自己做得邮箱提醒功能,请测试得时候,改成自己得邮箱及相关配置。以免造成不必要得打扰 ,谢谢了
  • Java实现邮箱找回密码

    千次阅读 2017-07-04 20:11:20
    通过邮件找回密码功能的实现 1、最近开发一个系统,有个需求就是,忘记密码后通过邮箱找回。现在的系统在注册的时候都会强制输入邮箱,其一目的就是 通过邮件绑定找回,可以进行密码找回。通过java发送邮件的功能...
  • Java实现邮箱验证功能

    千次阅读 2019-05-17 02:23:27
    最近在做课设,需要实现一个邮箱注册的功能,因此需要后台发送邮件来验证。 我选择了网易邮箱。申请邮箱后打开smtp服务。 登录网易邮箱后,在设置里打开smtp功能 勾选上面两个框框,然后记住自己的...
  • JAVA实现使用QQ邮箱发送验证码功能 QQ邮箱设置 第一步,打开QQ邮箱(地址:https://mail.qq.com/); 第二步,登录后点击设置 第三步,点击账户,下拉找到POP3/IMAP/SMTP/Exchange/CardDAV/...
  • Java mail邮箱发送1. 邮箱信息实体类2. jar包依赖3. 发送邮箱实现 绑定阿里云域名,创建域名账户,并配置解析域名账户,获得发送邮箱的权限,上限两百封,超出要¥… 阿里云邮件推送控制台 ...申请邮箱并解析域名 ...
  • 一个java发送发送QQ邮件的小玩意。需要的jar包已经在压缩包里面了,但是需要自己去自己相应的QQ邮箱找到自己的16位码,

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 69,946
精华内容 27,978
关键字:

java实现邮箱

java 订阅