基于163邮件服务器实现邮箱验证

基于163实现邮箱验证,需先开启邮箱的SMTP服务,利用javax中的mail包实现对邮件的操作。

依赖文件

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
</dependency>

MailUtil.java

public class MailUtil {
    public static final String FROM = "*******@163.com"; //发件人的email
    public static final String PWD = "*****"; //发件人密码--邮箱密码
    public static final String URL = "http://****"; //项目主页
    public static final int TIMELIMIT = 1000*60*60*24; //激活邮件过期时间24小时
    public static final String HOST = "smtp.163.com"; //163的smtp服务器
    public static final String SMTP = "smtp";
    //激活账号
    public static UserAuth activateMail(UserAuth user) throws Exception {
        //注册邮箱
        String email  = user.getAccount();
        //当前时间戳
        Long curTime = System.currentTimeMillis();
        //激活的有效时间
        Long activateTime = curTime+TIMELIMIT;
        //激活码--用于激活邮箱账号
        String token = Md5Util.md5(email+curTime);
        user.setToken(token);
        //过期时间
        user.setTimes(activateTime);
        //发送的邮箱内容
        String content = "<p>欢迎使用MINISCENE!<br><br>请在24小时内点击下面的链接激活帐户:"+"<br><a href='"+URL+"/user/activate.html?v=1.0&token="+token+"&email="+email+"'>"+URL+"/user/activate.html?v=1.0&token="+token+"&email="+email+"</a></p>";
        //调用发送邮箱服务
        MailUtil.sendMail(email, "MINISCENE账号激活", content);
        return user;
    }
    //找回密码
    public static int codeMail(String email,String code){
        //发送的邮箱内容
        String content = "<p>答应我,不要轻易告诉别人验证码,并在5分钟内重置密码:<br>请收好您的验证码:"+code+"</p>";
        //调用发送邮箱服务
        try{
            MailUtil.sendMail(email, "密码找回", content);
            return 1;
        }catch (Exception e){
            e.printStackTrace();
            return 0;
        }
    }
    //邮件发送
    public static void sendMail(String email,String title,String content) throws Exception {

        Properties props = new Properties(); //加载一个配置文件
        // 使用smtp:简单邮件传输协议
        props.put("mail.smtp.host", HOST);//存储发送邮件服务器的信息
        props.put("mail.smtp.port", 465);//设置端口
        props.put("mail.smtp.auth", "true");//同时通过验证
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        Session session = Session.getInstance(props);//根据属性新建一个邮件会话
        MimeMessage message = new MimeMessage(session);//由邮件会话新建一个消息对象
        message.setFrom(new InternetAddress(FROM));//设置发件人的地址
        message.setRecipient(Message.RecipientType.CC, new InternetAddress(FROM)); //抄送
        message.setRecipient(Message.RecipientType.TO, new InternetAddress(email));//设置收件人,并设置其接收类型为TO
        message.setSubject(title);//设置标题
        //设置信件内容
        message.setContent(content, "text/html;charset=gbk"); //发送HTML邮件
        message.setSentDate(new Date());//设置发信时间
        message.saveChanges();//存储邮件信息
        //发送邮件
        Transport transport = session.getTransport(SMTP);
        transport.connect(FROM, PWD);
        transport.sendMessage(message, message.getAllRecipients());//发送邮件,其中第二个参数是所有已设好的收件人地址
        transport.close();
    }
}

生成token的MD5加密工具:

MD5Util.java

public class Md5Util {
    //MD5加密,生成32位md5码
    public static String md5(String inStr){
        MessageDigest StrMD5 = null;
        try{
            StrMD5 = MessageDigest.getInstance("MD5");
        }catch (Exception e){
            e.printStackTrace();  
            return "";  
        }  
        char[] charArray = inStr.toCharArray();  
        byte[] byteArray = new byte[charArray.length];  
        for (int i = 0; i < charArray.length; i++)
            byteArray[i] = (byte) charArray[i];
        byte[] md5Bytes = StrMD5.digest(byteArray);
        StringBuffer hexValue = new StringBuffer();  
        for (int i = 0; i < md5Bytes.length; i++){
            int val = ((int) md5Bytes[i]) & 0xff;
            if (val < 16)
                hexValue.append("0");
            hexValue.append(Integer.toHexString(val));
        }  
        return hexValue.toString();  
    }
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要使用Java发送电子邮件,您需要使用JavaMail API。以下是使用JavaMail API和163邮箱发送电子邮件的示例代码: ```java import java.util.Properties; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class SendEmail { public static void main(String[] args) { String to = "recipient@example.com"; // 收件人电子邮件 String from = "your_email@163.com"; // 发件人电子邮件 String password = "your_email_password"; // 发件人电子邮件密码 // 配置SMTP服务器属性 Properties properties = new Properties(); properties.put("mail.smtp.host", "smtp.163.com"); properties.put("mail.smtp.port", "25"); properties.put("mail.smtp.auth", "true"); // 获取会话对象并进行身份验证 Session session = Session.getDefaultInstance(properties, new javax.mail.Authenticator() { protected javax.mail.PasswordAuthentication getPasswordAuthentication() { return new javax.mail.PasswordAuthentication(from, password); } }); try { // 创建MimeMessage对象 MimeMessage message = new MimeMessage(session); // 设置发件人 message.setFrom(new InternetAddress(from)); // 设置收件人 message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // 设置邮件主题 message.setSubject("Test Email"); // 设置邮件正文 message.setText("Hello, this is a test email from Java."); // 发送电子邮件 Transport.send(message); System.out.println("Email sent successfully."); } catch (MessagingException e) { throw new RuntimeException(e); } } } ``` 请注意,您需要将您的电子邮件地址和密码替换为示例代码中的“your_email@163.com”和“your_email_password”。另外,请确保在使用此代码之前已经在您的帐户中启用了SMTP服务。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

芋圆在睡觉

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

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

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

打赏作者

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

抵扣说明:

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

余额充值