注册后;通过注册时的邮箱来激活账号

时间:2022-10-28 19:02:21
在会员注册时让客户填入EMAIL,   
  系统自动生成密码,发送到邮箱,用户激活后才能成为会员.   
  这样的效果如何实现? 

希望能有个全面的列子   yuncpu@163.com

66 个解决方案

#1


自己写吧,这个又不难。不能什么都要例子。

#2


这个思路应该很简单吧,并且实现方法也会有多种,用户里有一个是否激活的字段,注册的时候默认未激活,发送一个链接,这个链接点击一下就做激活的动作,然后跳到首页。
有的网站则是发送激活号码,用户要自己登录网站去激活

#3


在建表的时候多添加一个字段假设为state(状态)
当用户注册成功后添加一条数据state的状态为未激活
当用户点击激活后,将state的状态变为激活的了,
就这样。。。。。。。

#4


这个很简单的。

#5


贴点代码参考下

#6


引用 3 楼 qiheia 的回复:
在建表的时候多添加一个字段假设为state(状态)
当用户注册成功后添加一条数据state的状态为未激活
当用户点击激活后,将state的状态变为激活的了,
就这样。。。。。。。


就是这样

#7


1.在用户表里加上一个字段标记是否被激活!
2.注册完后根据email发送邮件,也可以设置一个时间范围,从发送email到激活的时间段,打开该页面,激活,更改状态!
ps:生成的激活地址,你可以根据email MD5下,没什么难度!

楼上的几位都说了,挺简单的了!

#8


引用 7 楼 nike911 的回复:
1.在用户表里加上一个字段标记是否被激活! 
2.注册完后根据email发送邮件,也可以设置一个时间范围,从发送email到激活的时间段,打开该页面,激活,更改状态! 
ps:生成的激活地址,你可以根据email MD5下,没什么难度! 

楼上的几位都说了,挺简单的了!
 说起来是挺简单的 可实现的时候有点问题 希望还是能给点 code看看
在邮件发送的时候怎么把地址传过去

#9


我也想看看实现代码。。。

#10


引用 3 楼 qiheia 的回复:
在建表的时候多添加一个字段假设为state(状态) 
当用户注册成功后添加一条数据state的状态为未激活 
当用户点击激活后,将state的状态变为激活的了, 
就这样。。。。。。。

试试看

#11


发送Email的时候报错 我把错误给大家贴出来  给点修改建议
javax.mail.SendFailedException: Sending failed;
  nested exception is:
class javax.mail.AuthenticationFailedException
at javax.mail.Transport.send0(Transport.java:218)
at javax.mail.Transport.send(Transport.java:80)
at com.dist.service.EmailBusiness.ToEamil(EmailBusiness.java:52)
at com.dist.service.EmailBusiness.main(EmailBusiness.java:62)


程序的路径下有mail.jar 和activation.jar包
tomcat中的lib下面有  在网上找资料说要将\jdk1.6.0_05\jre\lib\ext下面放入这两个包 也放了 可还是报错误
程序如下
package com.dist.service; 

import java.util.Properties;

import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.servlet.http.HttpServletRequest;
import com.dist.system.tools.GlobalVariant;

public class EmailBusiness {

//会员Email确认
// private HttpServletRequest request=null;
// public EmailBusiness(HttpServletRequest request)
// {
// this.request=request;
// }
    public    void  ToEamil()
    {
     // 以下变量为用户根据自己的情况设置
     String host = "smtp.sina.com"; // 发送邮件服务器
     String user = GlobalVariant.Mail_USER; // 邮件服务器登录用户名
     String password = GlobalVariant.Mail_PASSWORD; // 邮件服务器登录密码
     String from = GlobalVariant.Mail_MAIL; // 发送人邮件地址
     String to = "yuncpu@163.com"; // 接受人邮件地址
     String subject = GlobalVariant.Mail_SIGN; // 邮件标题
     String body = "欢迎注册"  ; // 邮件内容
        System.out.println(body);
     // 以下为发送程序,用户无需改动
     try {
     Properties props = new Properties();
     props.put("mail.smtp.host", host);
     props.put("mail.smtp.auth", "true");
     Session ssn = Session.getInstance(props, null);

     MimeMessage message = new MimeMessage(ssn);

     InternetAddress fromAddress = new InternetAddress(from);
     message.setFrom(fromAddress);
     InternetAddress toAddress = new InternetAddress(to);
     message.addRecipient(Message.RecipientType.TO, toAddress);

     message.setSubject(subject);
     message.setText(body);

     Transport transport = ssn.getTransport("smtp");
    
     transport.connect(host,user,password);
     transport.sendMessage(message, message.getRecipients(Message.RecipientType.TO));
     transport.send(message);
     transport.close();
     } catch (Exception e) {
     System.out.println("邮件发送成功+:)");
     e.printStackTrace();
     }
  
    }
    public static void main(String[] args) {
EmailBusiness eb=new EmailBusiness();
eb.ToEamil();
}
}

#12


以前也写过类似的程序,都是小系统里的,没有很多的限制,网上有很多这种例子的,去查一下。

#13


这个应该很简单.

#14


class javax.mail.AuthenticationFailedException 

#15


给了思路就很好了。

#16


这个简单的,楼上的大侠们说了无数的方法和途径!就差帮你写出来啦!java mail的例子网上实在是太多了!我再补充一呢呢:就是邮件的正文内容html的形式发送!这样直接点击链接就完成相关操作。

#17


transport.sendMessage(message, message.getRecipients(Message.RecipientType.TO)); 

     Transport.send(message,message.getRecipients(Message.RecipientType.TO));
     transport.send(message);

问题已经找出来;但对于上面的几个调用方法不是太明白;有了解的给详细解释下;
拜托不要说很简单之类的话;如果觉得不值得一说的话;麻烦你就别留言了;谢谢

#18


你可以先去查阅些JAVAMAIL的相关资料。然后再回到你这个应用来。很快就可以明白了。

#19


引用 8 楼 fanyuanwaifdl 的回复:
引用 7 楼 nike911 的回复:
1.在用户表里加上一个字段标记是否被激活! 
2.注册完后根据email发送邮件,也可以设置一个时间范围,从发送email到激活的时间段,打开该页面,激活,更改状态! 
ps:生成的激活地址,你可以根据email MD5下,没什么难度! 

楼上的几位都说了,挺简单的了! 
 说起来是挺简单的 可实现的时候有点问题 希望还是能给点 code看看 
在邮件发送的时候怎么把地址传过去


你直接传登录首页的地址也是可以的吧

#20


zx

#21


引用 3 楼 qiheia 的回复:
在建表的时候多添加一个字段假设为state(状态)
当用户注册成功后添加一条数据state的状态为未激活
当用户点击激活后,将state的状态变为激活的了,
就这样。。。。。。。

就像他说的一样,加个状态标记字段,默认为未激活,
至于自动生成密码,这个也蛮简单,你可以用随机数加随机字母产生。
客户确认激活时其实就是个更新操作,把状态更新一下就可以了

#22


哦,谢谢啊

#23


果真是难了不会,会了不难呀!
真是苦了我们这些脑子还在糊涂中的人啊。
各位仁兄还是写一段例子或是指认一下楼主代码中的错误吧。

#24


恩,有道理,顶LS!

#25


老说有 倒是整一段看看 好学习下 啊

#26


验证失败,请检查smtp服务器是否设置以及用户名 密码等,

#27


支持一下!!

#28


发送:URL+动态参数,用户进入页面中根据参数去修改数据表状态

#29


学习

#30


学习。。

#31


 恩看看

#32


上个学期做过,实现原理就是利用javax.mail包来发送邮件(下载该组件,里面有文档说明怎么用),在发送的邮件里面包含随机生成的验证码,同时将该验证码保存在服务器(比如application对象),这样就可以通过点击发到注册用户邮件的链接来验证激活用户了.

#33


努力 啊

#34


c#程序里怎么导入动画啊?

#35


我感觉说起来貌似很简单,但是做的时候却发现原来还差了很多,大家多动手吧

#36


看到了,谢谢11楼提供

#37


路过,看一下

#38


看一下  学习了 

#39


当用户注册成功后添加一条数据state的状态为未激活 
当用户点击激活后,将state的状态变为激活的了, 

#40


学习,以前看过人家的,觉得如果自己写的话,学习一下应该能搞定

#41


 回帖是一种美德!每天回帖即可获得 10 分可用分!

#42


第一,首先确认下你的用户名,密码,右键地址是否正确。
第二,你的设置是否禁用了SMTP/POP3了。。
第三,有可能现在163已经不支持SMTP/POP3了,建议换个邮箱试试,如:qq邮箱,将smtp/pop3开启。

#43


引用楼主 fanyuanwaifdl 的帖子:
在会员注册时让客户填入EMAIL,
系统自动生成密码,发送到邮箱,用户激活后才能成为会员.
这样的效果如何实现?

希望能有个全面的列子   yuncpu@163.com



浮躁加懒惰
眼高手低、好逸恶劳。。。。。。。

#44


学习下

#45


学习。UP

#46


引用 43 楼 unixlinuxsys 的回复:
引用楼主 fanyuanwaifdl 的帖子:
在会员注册时让客户填入EMAIL, 
系统自动生成密码,发送到邮箱,用户激活后才能成为会员. 
这样的效果如何实现? 

希望能有个全面的列子   yuncpu@163.com 




浮躁加懒惰 
眼高手低、好逸恶劳。。。。。。。
 首先感谢你能参与本帖; 
我在做这个的时候已经找了很多资料;邮件发送已经成功;但还是报那样的错误;所以就发上来;
最后查出报错的是 transport.send(message);  这句话注释后还可以正常发送;
集思广益;再次感谢大家.

#47


呵  LS都讲的比较清晰了  
BTW: 在注册的时候可以使用 观察者模式 ^_^

#48


我没做过

在用户注册的时候除了要加用户状态之外 同时生成个随机码 然后用JAVAMAIL 一起发到用户邮箱里去(当然也可以直接发个链接 让用户点完之后直接激活)

大概就是这样吧..

#49


邮箱的话 我建议你用QQ

#50


另外 生成的随机码绝对不能重复 因为回头激活的时候是要根据激活码查找用户的 (或者是根据激活码跟用户一起查找)

#1


自己写吧,这个又不难。不能什么都要例子。

#2


这个思路应该很简单吧,并且实现方法也会有多种,用户里有一个是否激活的字段,注册的时候默认未激活,发送一个链接,这个链接点击一下就做激活的动作,然后跳到首页。
有的网站则是发送激活号码,用户要自己登录网站去激活

#3


在建表的时候多添加一个字段假设为state(状态)
当用户注册成功后添加一条数据state的状态为未激活
当用户点击激活后,将state的状态变为激活的了,
就这样。。。。。。。

#4


这个很简单的。

#5


贴点代码参考下

#6


引用 3 楼 qiheia 的回复:
在建表的时候多添加一个字段假设为state(状态)
当用户注册成功后添加一条数据state的状态为未激活
当用户点击激活后,将state的状态变为激活的了,
就这样。。。。。。。


就是这样

#7


1.在用户表里加上一个字段标记是否被激活!
2.注册完后根据email发送邮件,也可以设置一个时间范围,从发送email到激活的时间段,打开该页面,激活,更改状态!
ps:生成的激活地址,你可以根据email MD5下,没什么难度!

楼上的几位都说了,挺简单的了!

#8


引用 7 楼 nike911 的回复:
1.在用户表里加上一个字段标记是否被激活! 
2.注册完后根据email发送邮件,也可以设置一个时间范围,从发送email到激活的时间段,打开该页面,激活,更改状态! 
ps:生成的激活地址,你可以根据email MD5下,没什么难度! 

楼上的几位都说了,挺简单的了!
 说起来是挺简单的 可实现的时候有点问题 希望还是能给点 code看看
在邮件发送的时候怎么把地址传过去

#9


我也想看看实现代码。。。

#10


引用 3 楼 qiheia 的回复:
在建表的时候多添加一个字段假设为state(状态) 
当用户注册成功后添加一条数据state的状态为未激活 
当用户点击激活后,将state的状态变为激活的了, 
就这样。。。。。。。

试试看

#11


发送Email的时候报错 我把错误给大家贴出来  给点修改建议
javax.mail.SendFailedException: Sending failed;
  nested exception is:
class javax.mail.AuthenticationFailedException
at javax.mail.Transport.send0(Transport.java:218)
at javax.mail.Transport.send(Transport.java:80)
at com.dist.service.EmailBusiness.ToEamil(EmailBusiness.java:52)
at com.dist.service.EmailBusiness.main(EmailBusiness.java:62)


程序的路径下有mail.jar 和activation.jar包
tomcat中的lib下面有  在网上找资料说要将\jdk1.6.0_05\jre\lib\ext下面放入这两个包 也放了 可还是报错误
程序如下
package com.dist.service; 

import java.util.Properties;

import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.servlet.http.HttpServletRequest;
import com.dist.system.tools.GlobalVariant;

public class EmailBusiness {

//会员Email确认
// private HttpServletRequest request=null;
// public EmailBusiness(HttpServletRequest request)
// {
// this.request=request;
// }
    public    void  ToEamil()
    {
     // 以下变量为用户根据自己的情况设置
     String host = "smtp.sina.com"; // 发送邮件服务器
     String user = GlobalVariant.Mail_USER; // 邮件服务器登录用户名
     String password = GlobalVariant.Mail_PASSWORD; // 邮件服务器登录密码
     String from = GlobalVariant.Mail_MAIL; // 发送人邮件地址
     String to = "yuncpu@163.com"; // 接受人邮件地址
     String subject = GlobalVariant.Mail_SIGN; // 邮件标题
     String body = "欢迎注册"  ; // 邮件内容
        System.out.println(body);
     // 以下为发送程序,用户无需改动
     try {
     Properties props = new Properties();
     props.put("mail.smtp.host", host);
     props.put("mail.smtp.auth", "true");
     Session ssn = Session.getInstance(props, null);

     MimeMessage message = new MimeMessage(ssn);

     InternetAddress fromAddress = new InternetAddress(from);
     message.setFrom(fromAddress);
     InternetAddress toAddress = new InternetAddress(to);
     message.addRecipient(Message.RecipientType.TO, toAddress);

     message.setSubject(subject);
     message.setText(body);

     Transport transport = ssn.getTransport("smtp");
    
     transport.connect(host,user,password);
     transport.sendMessage(message, message.getRecipients(Message.RecipientType.TO));
     transport.send(message);
     transport.close();
     } catch (Exception e) {
     System.out.println("邮件发送成功+:)");
     e.printStackTrace();
     }
  
    }
    public static void main(String[] args) {
EmailBusiness eb=new EmailBusiness();
eb.ToEamil();
}
}

#12


以前也写过类似的程序,都是小系统里的,没有很多的限制,网上有很多这种例子的,去查一下。

#13


这个应该很简单.

#14


class javax.mail.AuthenticationFailedException 

#15


给了思路就很好了。

#16


这个简单的,楼上的大侠们说了无数的方法和途径!就差帮你写出来啦!java mail的例子网上实在是太多了!我再补充一呢呢:就是邮件的正文内容html的形式发送!这样直接点击链接就完成相关操作。

#17


transport.sendMessage(message, message.getRecipients(Message.RecipientType.TO)); 

     Transport.send(message,message.getRecipients(Message.RecipientType.TO));
     transport.send(message);

问题已经找出来;但对于上面的几个调用方法不是太明白;有了解的给详细解释下;
拜托不要说很简单之类的话;如果觉得不值得一说的话;麻烦你就别留言了;谢谢

#18


你可以先去查阅些JAVAMAIL的相关资料。然后再回到你这个应用来。很快就可以明白了。

#19


引用 8 楼 fanyuanwaifdl 的回复:
引用 7 楼 nike911 的回复:
1.在用户表里加上一个字段标记是否被激活! 
2.注册完后根据email发送邮件,也可以设置一个时间范围,从发送email到激活的时间段,打开该页面,激活,更改状态! 
ps:生成的激活地址,你可以根据email MD5下,没什么难度! 

楼上的几位都说了,挺简单的了! 
 说起来是挺简单的 可实现的时候有点问题 希望还是能给点 code看看 
在邮件发送的时候怎么把地址传过去


你直接传登录首页的地址也是可以的吧

#20


zx

#21


引用 3 楼 qiheia 的回复:
在建表的时候多添加一个字段假设为state(状态)
当用户注册成功后添加一条数据state的状态为未激活
当用户点击激活后,将state的状态变为激活的了,
就这样。。。。。。。

就像他说的一样,加个状态标记字段,默认为未激活,
至于自动生成密码,这个也蛮简单,你可以用随机数加随机字母产生。
客户确认激活时其实就是个更新操作,把状态更新一下就可以了

#22


哦,谢谢啊

#23


果真是难了不会,会了不难呀!
真是苦了我们这些脑子还在糊涂中的人啊。
各位仁兄还是写一段例子或是指认一下楼主代码中的错误吧。

#24


恩,有道理,顶LS!

#25


老说有 倒是整一段看看 好学习下 啊

#26


验证失败,请检查smtp服务器是否设置以及用户名 密码等,

#27


支持一下!!

#28


发送:URL+动态参数,用户进入页面中根据参数去修改数据表状态

#29


学习

#30


学习。。

#31


 恩看看

#32


上个学期做过,实现原理就是利用javax.mail包来发送邮件(下载该组件,里面有文档说明怎么用),在发送的邮件里面包含随机生成的验证码,同时将该验证码保存在服务器(比如application对象),这样就可以通过点击发到注册用户邮件的链接来验证激活用户了.

#33


努力 啊

#34


c#程序里怎么导入动画啊?

#35


我感觉说起来貌似很简单,但是做的时候却发现原来还差了很多,大家多动手吧

#36


看到了,谢谢11楼提供

#37


路过,看一下

#38


看一下  学习了 

#39


当用户注册成功后添加一条数据state的状态为未激活 
当用户点击激活后,将state的状态变为激活的了, 

#40


学习,以前看过人家的,觉得如果自己写的话,学习一下应该能搞定

#41


 回帖是一种美德!每天回帖即可获得 10 分可用分!

#42


第一,首先确认下你的用户名,密码,右键地址是否正确。
第二,你的设置是否禁用了SMTP/POP3了。。
第三,有可能现在163已经不支持SMTP/POP3了,建议换个邮箱试试,如:qq邮箱,将smtp/pop3开启。

#43


引用楼主 fanyuanwaifdl 的帖子:
在会员注册时让客户填入EMAIL,
系统自动生成密码,发送到邮箱,用户激活后才能成为会员.
这样的效果如何实现?

希望能有个全面的列子   yuncpu@163.com



浮躁加懒惰
眼高手低、好逸恶劳。。。。。。。

#44


学习下

#45


学习。UP

#46


引用 43 楼 unixlinuxsys 的回复:
引用楼主 fanyuanwaifdl 的帖子:
在会员注册时让客户填入EMAIL, 
系统自动生成密码,发送到邮箱,用户激活后才能成为会员. 
这样的效果如何实现? 

希望能有个全面的列子   yuncpu@163.com 




浮躁加懒惰 
眼高手低、好逸恶劳。。。。。。。
 首先感谢你能参与本帖; 
我在做这个的时候已经找了很多资料;邮件发送已经成功;但还是报那样的错误;所以就发上来;
最后查出报错的是 transport.send(message);  这句话注释后还可以正常发送;
集思广益;再次感谢大家.

#47


呵  LS都讲的比较清晰了  
BTW: 在注册的时候可以使用 观察者模式 ^_^

#48


我没做过

在用户注册的时候除了要加用户状态之外 同时生成个随机码 然后用JAVAMAIL 一起发到用户邮箱里去(当然也可以直接发个链接 让用户点完之后直接激活)

大概就是这样吧..

#49


邮箱的话 我建议你用QQ

#50


另外 生成的随机码绝对不能重复 因为回头激活的时候是要根据激活码查找用户的 (或者是根据激活码跟用户一起查找)