科帮网

登录/注册
您现在的位置:论坛 盖世程序员(我猜到了开头 却没有猜到结局) 项目源码 > java实现简单的邮箱发送验证码系统源码
总共48087条微博

动态微博

查看: 15910|回复: 6

java实现简单的邮箱发送验证码系统源码

[复制链接]
admin    

1244

主题

544

听众

1万

金钱

管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    跳转到指定楼层
    楼主
    发表于 2015-04-07 21:29:15 |只看该作者 |倒序浏览
    简单的邮箱发送验证码系统源码
    % [+ d( K# ^8 I( O) Q* {+ Z
            验证码的作用:有效防止这种问题对某一个特定用户用特定程序方式进行不断的注册(比如注册机),这样会导致大量垃圾用户的存在。实际上是用验证码是现在很多网站通行的方式(比如招商银行的网上个人银行,腾讯的QQ社区),我们利用比较简易的方式实现了这个功能。虽然注册麻烦一点,但是对社区还来说这个功能还是很有必要,也很重要 ~
    : K9 x+ E: m2 |1 R+ d0 n功能说明:                  
    2 R( t0 H) T( q# ?' v0 r! I/ ~3 ?( S8 N4 ?1 \+ P6 C
         一、系统采用struts2+mail-1.4 后台返回 json格式
    0 j. N4 ], o! N1 S7 l3 d     二、发送HTML文件,待发送的邮件以htm的格式存放,可以是网络上的htm文件,可以是本地的htm文件/ {* O% y+ d% H3 y& w: x
         三、可以指定发送附件的目录,系统会加载指定目录的全部附件一起发送
    3 b* v3 V  j  [- |9 ]) G* W& L; P     四、发送邮件以txt文件保存,每行保存一个邮件地址
    ' g) N  Q  G1 `: H- R9 h8 ^     五、可以指定发送邮件是采用什么样的编码9 X6 T, D3 \  w# }* o7 e( s
         六、可以指定发送邮件的服务器
    8 v% y9 b+ P% E' S     七、可以指定将发送成功的邮件保存到哪个文件中4 |! q7 i6 J( u# [
         八、可以指定将发送失败的邮件保存到哪个文件中
    1 U) q% ?1 i) S8 G7 t; Y8 E, C, o     九、用户可以实现Handler,对发送的内容进行特殊处理,例如根据每封邮件获取对应的收件人名称等。
    : T2 _; n" G" K2 a4 r
    ! y3 C4 o0 b* r' n+ G' |编译环境:Eclipse# j6 N( A$ ~. L8 Y

    6 P5 A$ a& x( |: \! q4 A8 Hmail-config.xml 配置 可以自定义内容:
    : ?& u. Q; @$ m0 x$ Q) w
    1. <?xml version="1.0" encoding="UTF-8"?>1 b5 {$ f2 u: h7 Y0 @' g4 N! D$ p
    2. <Mail>
      6 `# j/ D( y1 z( ~
    3.         <!--邮件服务器IP或名称-->5 N" k8 ~0 R6 u
    4.         <MailHost>smtp.97java.com</MailHost>
      $ E. s; @( J1 i2 z" ?) ^) d4 k
    5.         <!--邮件服务器端口 -->) s  N6 X5 C7 b# m  [! l8 ^
    6.         <MailPort>25</MailPort>6 N1 P7 q/ T; |& U/ G) Y
    7.         <!--登陆邮件服务器的名称-->
      . k4 Y8 s7 _0 l! N$ r& p
    8.         <Username>admin@97java.com</Username>        
        m- K6 x" [' Z+ ^! u7 b5 s
    9.         <!--登陆邮件服务器的密码-->
      " z! Y) x# S. P  |' T) a
    10.         <Password>123</Password>
      $ Q9 ]! ^5 {0 k6 `* u
    11.         <!--发送邮件的电邮地址-->3 U1 j* I( Y$ \5 M; Y; r$ ], Y
    12.         <MailFrom>admin@97java.com</MailFrom>* }1 X+ G- e0 Q8 k' P9 E: b. t, @
    13.         <!--接受邮件的电邮地址  用于错误统计-->
      1 h- Z' [9 W; z
    14.         <ToAddress>345849402@qq.com</ToAddress>
      # s0 S! j" j3 @( A1 D+ i1 F
    15.         <!--邮件发送的内容,可以是本地的网页,也可是网络上的网页.如果是文本文件,直接将后缀名txt改为htm即可-->. M1 Z! j: r) g3 @, ?4 c9 F: k
    16.         <MailHtmlPath>ValidateCode.htm</MailHtmlPath>
      / E4 t! k9 K/ _" e9 u- q9 P$ s
    17.         <!--保存发送成功邮件的文件,可以配置为绝对路径,也可以配置为相对路径,不配置不保存-->
      ! Q$ x; n# J. Q6 m  B# C
    18.         <SaveMailSendedSuccFile>email_succ.txt</SaveMailSendedSuccFile>
      $ S) ?* T& F9 v5 F
    19.         <!--包含已经发送了的电子邮件的地址.可以配置为绝对路径,也可以配置为相对路径,不配置不保存-->( D' p4 T$ @3 d
    20.         <SaveMailSendedFailFile>email_fail.txt</SaveMailSendedFailFile>
      # K' g$ Z4 s% z
    21.         <!-- 配置Handler.邮件发送之前,对邮件的内容根据每个email关键字,进行特定的替换.
      2 d7 t. [1 ]. E  L# K* I1 d
    22.                  如在发送之前需要根据电子邮件获取当前接收方的名称,可以在这里估处理.不配置不处理,& [0 ]5 [( D; a
    23.                  配置的Handler必须实现接口:com.acts.web.util.mail.Handler2 N& v9 }2 D' ]+ O/ b
    24.                  可以参见我的实例实现类:com.acts.web.util.mail.EmailHandler3 t+ b" L/ o( ]8 p+ y
    25.         -->
        B5 O  ^1 G1 o3 ]
    26.         <Handler>com.qq.email.EmailHandler</Handler>8 E8 T# r  y1 F
    27. </Mail>
    复制代码
    ValidateCode.htm 配置说明:
    & _+ A) m: e' r, [8 {3 N- h
    1. <html>! D* B; p8 s8 P0 K. N
    2. <head>
      $ ]( Q, @8 T( N( A8 v& U8 b1 Z
    3. <meta http-equiv="Content-Language" content="zh-cn">
      . J; H  |& v2 U4 P2 f
    4. <meta http-equiv="Content-Type" content="text/html; charset=GBK">
      2 n9 F# V- a( q6 G
    5. </head>
      ! h0 R, ~: X3 E: }) O6 e
    6. <body>% |7 l, w4 l8 h+ ]' J2 I( |: P
    7. Email 地址验证<br>
      $ [" N( H: z; s9 v' H1 K8 [
    8. 这封信是由  科帮网 发送的。<br>* |" l; x& O- E
    9. 您收到这封邮件,是由于在 科帮网 进行了新用户注册,或用户修改 Email 使用了这个邮箱地址。<br>
      6 f3 T1 Z- w3 z9 {
    10. 如果您并没有访问过 科帮网,或没有进行上述操作,请忽略这封邮件。您不需要退订或进行其他进一步的操作。<br>7 R( D% j8 G+ ~( t
    11. ----------------------------------------------------------------------<br>) X/ ^0 J) \# C- y7 P: a/ o+ t7 h: O
    12. 帐号激活说明<br>
      + j8 u4 Q* g" L2 A0 J
    13. ----------------------------------------------------------------------<br>
      8 x3 J; \( M- q2 t% s8 ?8 x
    14. 如果您是 科帮网 的新用户,或在修改您的注册 Email 时使用了本地址,我们需要对您的地址有效性进行验证以避免垃圾邮件或地址被滥用。<br>
      ( L% x# K7 B* U3 f9 ]
    15. 您只需将下面的验证码输入提示框即可: {code}<br>( X, {# O0 V" N* q
    16. 感谢您的访问,祝您使用愉快!<br>
      5 D5 g/ Y% Q$ f0 u. M, q
    17. 此致<br>4 p5 v9 C% R9 r
    18. 科帮网  管理团队.# C" l" f2 ?$ g# ?  o; n  y5 p, H
    19. </body>9 R8 R6 @9 g) c& `' z( T: f
    20. </html>
      4 h& Q3 T9 F) n$ j5 \& z) @
    复制代码
    EmailAction.action 配置说明:
    3 m! V% l4 A; I
    1. package com.qq.email;
      # Z0 H6 o" h/ G, ?, c. r

    2. ) a% C) N$ ]. u/ X# {; B
    3. import com.opensymphony.xwork2.Action;5 b* m% P4 |+ T) }; X3 v6 v* I
    4. import com.opensymphony.xwork2.ActionSupport;+ C, {, [- |$ O. |; u

    5. 5 B: ?( A3 L& P; ?/ P1 \/ M% }
    6. public class EmailAction extends ActionSupport{9 S* h  g; `" a% U# _, b& t' Y

    7. 5 b. i( A3 g1 m9 a+ F% K; P
    8.         private static final long serialVersionUID = 778594180547957394L;1 {0 y* t" t/ I0 e# q6 _
    9.         7 t6 {( Z% y* @" q4 F
    10.         private String email;
      $ @9 ]5 S6 a& ^
    11.         private String message;; D, h; X0 d5 l# A
    12.         public  String sendEmail(){
      ! K" ]  d1 G- ~$ G, ]1 l0 n
    13.                 int num =   MailUtil.getRandomNum();
      ' @9 i6 @! E+ c8 T  i4 I" E
    14.                 String validateCode =  num +"";
      4 C$ P+ v: l8 X5 y  M# k
    15.                 Boolean flag =   MailUtil.checkEmail(email);2 ]4 |0 q* {; e5 }0 ]
    16.                 if(flag){$ o/ m! ~9 b' G# k( c3 o$ [( U
    17.                         MyAuthenticator.sendValidateCodeByHtml(email, validateCode);
      * b1 W) Y* K; t* e2 ^& q$ h0 A( w
    18.                         message = "发送邮箱验证码成功";( O! X: a  y/ j6 W) T/ |0 }
    19.                 }else{, A; d; s$ d* f& e
    20.                         message = "逗比你输入的是邮箱嘛";* z! N' I: t# z# x  G
    21.                 }* U2 m* Y! W6 C0 B
    22.                 return Action.SUCCESS;# k$ S& Q: y9 Y/ F7 Y; v
    23.         }
      $ _. [/ ^# e. l, H9 T

    24. 0 R& i& L! ?$ e1 r6 ^/ u
    25.         public String getEmail() {
      1 |7 v2 }. P+ U9 f
    26.                 return email;  h4 }5 v- P: h. X2 N* m7 M" F/ [
    27.         }
      0 b% e. n4 r3 b2 @6 d
    28. * f$ a6 t" e: A) r
    29.         public void setEmail(String email) {
      % e& P! ?3 \. J6 c
    30.                 this.email = email;8 _4 z& M% n5 a3 h5 Y
    31.         }5 r0 b7 p3 T) X" ^' W. h
    32. . h; j% j  M& B3 w! I, |% N
    33.         public String getMessage() {
      " Q5 Y" k8 y1 l: K+ Y1 N+ c- c
    34.                 return message;* z4 g5 B. q* H' `
    35.         }
      / e5 e! m1 A; W$ ^% }
    36. 5 L" n7 o0 e/ G. J
    37.         public void setMessage(String message) {9 _. x9 ^9 ?- [
    38.                 this.message = message;  C0 Z- N. n7 ?1 |' k
    39.         }" K; d: b' ^+ C  N) u
    40. }
      0 u! `8 m- ~/ |' T
    复制代码
    struts.xml配置说明:& X0 u" F1 W) u  v  I- X& y
    1. <?xml version="1.0" encoding="UTF-8" ?># ]; \! H- G, a6 y" @
    2. <!DOCTYPE struts PUBLIC2 n# M( t' e* C0 h
    3.         "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN": ~- }! S; a2 w9 X: t) v6 e1 w% B9 j: S5 y
    4.         "http://struts.apache.org/dtds/struts-2.3.dtd">
      7 a3 s1 Y: [; |
    5. <struts>
      5 R) e1 r; F3 ], ~
    6.         <constant name="struts.devMode" value="false" />
      ) d/ R5 _4 a# U$ l5 l
    7.         <constant name="struts.i18n.encoding" value="UTF-8" />
      ! J* @" v3 ?* C+ |/ m( H
    8.         <constant name="struts.multipart.maxSize" value="10701096" /><!-- 上传文件最大值 -->2 j: x% g) W4 }; x, o" d: w& }3 x
    9.         <constant name="struts.multipart.saveDir" value="/tmp" /><!-- 上传文件设置属性 -->
      8 U9 E) B4 A$ K! R  l' ~4 G4 w
    10.         <constant name="struts.custom.i18n.resources" value="global" />) Q* Q" F6 k6 v/ F5 T
    11.         <constant name="struts.custom.i18n.resources" value="resource_ch" />, A2 d+ j3 u" h  |' P3 I0 O$ ]- A
    12.         <constant name="struts.action.extension" value="action"></constant>$ b. D/ r  t  i; M, Z6 B9 o, V8 \
    13.         <package name="email" extends="json-default">( s( P! W0 j* \' A) ?
    14.                 <action name="email_*" class="com.qq.email.EmailAction" method="{1}">
      " q8 C4 e6 o. }; j, V! x
    15.                         <result type="json">" D" t; Q/ W8 {9 X! q* ^! Y2 t
    16.                                 <param name="root">message</param>( {7 M. P: F& W$ w( }
    17.                         </result>" ]) q8 A6 D/ j- g- _' T
    18.                 </action>; L* P& J9 R9 e
    19.         </package>
      & o! z. H7 F* ?, ~2 ~/ Q
    20. </struts>9 R$ C; [; I3 f6 W( y8 M( O
    复制代码

    6 h. b$ L" l  P0 |2 F1 Kemail.jsp 部分代码说明:/ ~/ ?0 k/ Z1 w0 ~2 T# o
    1. <HTML>
      $ O- d4 K$ w( l  E: l( `
    2. <META http-equiv="Content-Type" content="text/html; charset=utf-8">
      , M( B- \$ B' l; T6 e
    3. <title>科帮网发送email测试系统</title>: Q' z1 c" G9 A' }
    4.     <script type="text/javascript" src="js/jquery-1.8.3.js" ></script>
      ) }* [; w; W, B8 L- P. a+ d* b
    5.     <script type="text/javascript" src="js/jquery.form.js" ></script>0 c, B: ]8 Z% R
    6.     <script type="text/javascript" src="js/layer.min.js"></script>3 t( f* E2 |2 K; r# ]  D* ^( D
    7.     <link rel="stylesheet" type="text/css" href="skin/layer.css">
      8 f8 r( o2 [' W0 u5 Q8 Y  ^
    8.     <script type="text/javascript">
      6 D( J+ p4 S' y
    9. //发送邮箱验证码
      6 {$ M2 R& |. z. i; X- p. C
    10. function sendEmail(){# Y7 O" m0 h8 c, e$ U  k
    11.         var email = $.trim($("#email").val())2 l% L) a% F  @0 Q# W
    12.         if(""===email){( a6 Q! Y* d5 d8 E! ^( ~8 \
    13.       layer.msg('小逗比能输入邮箱', 2, 13);3 R  p. I0 Z% K4 b' w( `3 c/ C
    14.       return;
      ! q; a9 f; `' q6 Y4 w
    15.         }
      7 w7 ^5 k9 ]& i' A5 N8 l  Z
    16.         $.ajax({
      : F* p; ^8 c% r% D) d
    17.    url:"email_sendEmail.action",( M: x& f6 V% D. m7 ^
    18.    async:false,
      5 R2 ?: @# v2 p* l
    19.    type:'post',
      8 y3 Z+ k0 `- k& @8 {/ j4 d
    20.    dataType:'text',9 Q2 O$ B7 }- [) d' f4 ^: H
    21.    data: {'time':(new Date()).toString(),email:email},0 j: `7 U) @. t# h0 |0 C
    22.    success:function(result){" h- h+ E4 L3 }8 y
    23.         layer.msg(result, 2, 13);
      " R( |8 M* Q' i0 a- W' V) T
    24.                 }
      ! i* |4 E" W1 _- v2 z3 A5 B8 a# @
    25.         });
      , Z/ n" K9 r+ _1 c; ?% \& O+ H) A
    26. }: Z4 k' }$ B$ k, S) f( m% `

    27. , A! D' Y: j8 ]8 s# h3 f; ^
    28. </script>
    复制代码
    / V* a2 b0 J$ m4 P
    演示图片:
    ' d! k3 ^# B# c' k. p: A
    / W& P3 y' M0 k

    4 G8 }2 d0 I/ T* A' E/ T

    & w2 e. j4 _: B* S7 d! U
    % {7 n" ?# E, e2 N3 |9 s

    2 ~. K- {& ^3 s  i6 L$ b0 X6 D0 S 3 W2 {/ l* l: [3 V% Q" n

    1 c' l) v' A* T5 k( P) ?
    + E8 Q0 a# n. Z/ S1 v" t& z
    7 @) \( S$ Q; H6 |' O$ F) i$ E
    - R' K& f/ R) A6 d5 |& [7 x
    演示地址:http://exam.52itstyle.com/email.jsp4 |4 _% V: }- M% X0 p
    * C$ |! e' p' [# k" C
    下载地址:http://www.52itstyle.top/thread-5091-1-1.html0 |8 h8 I& o6 Q  c& y/ x

    6 s/ G) A4 s! t( m6 F. T* h# h2 [, z+ b3 v; ?

    ; U3 }8 X  U8 W, e8 P

    科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、科帮网管理员和版主有权不事先通知发贴者而删除本文


    JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

    3

    主题

    3

    听众

    1211

    金钱

    五袋长老

    该用户从未签到

    沙发
    发表于 2015-04-08 09:09:15 |只看该作者
       可以呀!这效果,叼炸天了
    回复

    使用道具 举报

    1

    主题

    0

    听众

    88

    金钱

    二袋弟子

    该用户从未签到

    板凳
    发表于 2015-04-08 09:32:50 |只看该作者
    很实用,可以用于多个项目
    回复

    使用道具 举报

    3

    主题

    3

    听众

    1211

    金钱

    五袋长老

    该用户从未签到

    地板
    发表于 2015-04-08 11:26:28 |只看该作者
       小七,这个没有给上传到网盘?
    回复

    使用道具 举报

    2

    主题

    0

    听众

    128

    金钱

    三袋弟子

    该用户从未签到

    5#
    发表于 2015-05-06 00:59:31 |只看该作者
    这效果苦逼了啊!不错
    7 p) `5 ]9 y1 X: r5 n# i
    回复

    使用道具 举报

    1

    主题

    3

    听众

    341

    金钱

    四袋长老

    该用户从未签到

    6#
    发表于 2016-03-17 21:42:34 |只看该作者

    & A( H7 ?! b! x下来,学习一下。谢谢
    回复

    使用道具 举报

    woniu 实名认证   

    2

    主题

    0

    听众

    330

    金钱

    四袋长老

    该用户从未签到

    7#
    发表于 2016-04-12 11:52:56 |只看该作者
    这个项目太棒勒!下下来学习下!
    回复

    使用道具 举报

    快速回复
    您需要登录后才可以回帖 登录 | 立即注册

       

    关闭

    站长推荐上一条 /1 下一条

    发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
    快速回复 返回顶部 返回列表