4.21~4.23学习总结

1:服务端,客户端大体代码编写完毕,但与数据库进行信息的判断从而改变画面还未全部完成

2:实现了发送qq邮箱作为注册的验证码。

SendMail类

package service;

import pojo.Mail;
import utils.CreatCode;
import utils.MailUtil;

/**
 *    发送邮箱验证码
 * 1.邮件服务器地址 2.邮件服务器端口后 3.账号 4.密码:授权码。
 */
public class SendEmail {
    public static String sendEmail(String email) {//发送一封简单的邮件
        Mail mail = new Mail();
        mail.setHost("smtp.qq.com"); // 设置邮件服务器
        mail.setPortNumber("465"); // 设置邮件服务器端口号
        mail.setSender("******@qq.com"); // 发送人
        mail.setName("超星"); // 发送人昵称
        mail.setReceiver(email);// 接收人
        mail.setUsername("*********@qq.com"); // 登录账号
        mail.setPassword("*******"); // 授权码
        mail.setSubject("超星学习通注册验证码");
        String code= CreatCode.creatCode(8);//生成随机密码
        mail.setMessage("验证码: "+code+"\r\n"+"该验证码用于账号的注册,不要轻易泄露给他人");//邮件内容
        if (new MailUtil().send(mail)) {
            System.out.println("发送成功");
        } else {
            System.out.println("发送失败");
        }
        return code;
    }
}

Mail实体类

package pojo;

import java.io.Serializable;

/**
 * 邮件实体类
 */
public class Mail implements Serializable {
    /**
     * 序列号
     */
    private static final long serialVersionUID = -3562218214168975242L;
    /**
     * 邮件编码s
     */
    public static final String ENCODEING = "UTF-8";
    /**
     * 服务器地址
     */
    private String host;
    /**
     * 服务器端口号
     */
    private String portNumber;
    /**
     * 发件人的邮箱
     */
    private String sender;
    /**
     * 收件人的邮箱
     */
    private String receiver;
    /**
     * 发件人昵称
     */
    private String name;
    /**
     * 账号
     */
    private String username;
    /**
     * 密码
     */
    private String password;
    /**
     * 主题
     */
    private String subject;
    /**
     * 信息(支持HTML)
     */
    private String message;

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    public String getSender() {
        return sender;
    }

    public String getPortNumber() {
        return portNumber;
    }

    public void setPortNumber(String portNumber) {
        this.portNumber = portNumber;
    }

    public void setSender(String sender) {
        this.sender = sender;
    }

    public String getReceiver() {
        return receiver;
    }

    public void setReceiver(String receiver) {
        this.receiver = receiver;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

}

邮件发送实现工具类

package utils;

import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
import pojo.Mail;

public class MailUtil {
    public boolean send(Mail mail) {
        // 发送email对象
        HtmlEmail email = new HtmlEmail();
        try {
            // 这里是SMTP发送服务器的名字
            email.setHostName(mail.getHost());
            // 端口号不为空时,用户自定义的端口号为SMTP发送服务器端口号
            if (!"".equals(mail.getPortNumber())) {
                email.setSSLOnConnect(true);
                email.setSslSmtpPort(mail.getPortNumber());
            }
            // 字符编码集的设置
            email.setCharset(Mail.ENCODEING);
            // 收件人的邮箱
            email.addTo(mail.getReceiver());
            // 发送人的邮箱
            email.setFrom(mail.getSender(), mail.getName());
            // 如果需要认证信息的话,设置认证:用户名-密码。分别为发件人在邮件服务器上的注册名称和密码
            email.setAuthentication(mail.getUsername(), mail.getPassword());
            // 要发送的邮件主题
            email.setSubject(mail.getSubject());
            // 要发送的信息,由于使用了HtmlEmail,可以在邮件内容中使用HTML标签
            email.setMsg(mail.getMessage());
            // 发送
            email.send();
            return true;
        } catch (EmailException e) {
            e.printStackTrace();
            return false;
        }
    }
}

判断邮箱是否正确的工具类

package utils;
import java.util.regex.Pattern;
public final class EmailCheck
{
    public static boolean isValidEmail(String email) {
        if ((email != null) && (!email.isEmpty())) {
            return Pattern.matches("^(\\w+([-.][A-Za-z0-9]+)*){3,18}@\\w+([-.][A-Za-z0-9]+)*\\.\\w+([-.][A-Za-z0-9]+)*$", email);
        }
        return false;
    }
}

返回随机验证码的工具类

package utils;

import java.util.Random;

public class CreatCode {
    /*
     * 返回一个随机验证码
     * */
    public static String creatCode(int n) {
        //3、定义一个字符串变量记录生成的随机字符
        String code = "";
        Random r = new Random();
        //2、定义一个for循环,循环n次,依次生成随机字符
        for (int i = 0; i < n; i++) {
            //i=0 1 2
            //3、生成一个随机字符,英文大、小写 数字(0 1 2 )
            int type = r.nextInt(3);//0 1 2
            switch (type) {
                case 0:
                    //大写字符(A 65-Z 65+25)
                    char ch = (char) (r.nextInt(26) + 65);
                    code += ch;
                    break;
                case 1:
                    //小写字符(a 97-z 97+25)
                    char ch1 = (char) (r.nextInt(26) + 97);
                    code += ch1;
                    break;
                case 2:
                    //数字字符
                    code += r.nextInt(10);//0-9
                    break;
            }
        }
        return code;
    }


}

总结:尽快完成数据库和服务器和客户端之间的交互, 然后开始制作APP主界面,制作数据库。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡卡卡卡罗特

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值