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主界面,制作数据库。