zoukankan      html  css  js  c++  java
  • 发送邮件(注册用户并激活邮箱)

    注册用户 并激活邮箱 的逻辑

    1 获得用户数据
    2    验证 非空、格式
    3    验证 图形验证码
    4    判断 用户是否存在,需要不存在
    5    判断 邮箱是否已激活使用,需要未激活
    6    向DB中插入用户,未激活(只要插入,无论激活否,先存入session,如果失败可以用到)
    7    发送邮件username,activecode,并存入session,设置有效日期
    8    返回激活码,如果激活码正确,更新DB中激活码
    9    返回“注册并激活成功,跳转首页”,否则返回“注册成功但激活失败,重新激活新邮箱”
    10    [重新激活邮箱:如果新邮箱未激活使用,则发送激活码,如果返回正确,更新当前用户邮箱并激活
    11    返回“激活成功,跳转首页”]

    发送邮件

        public class SendEmailHelper
        {
            /// <summary>
            /// 发送邮件
            /// </summary>
            /// <param name="receiveEmailAddress">接收方邮箱地址</param>
            /// <param name="subject">邮件主题</param>
            /// <param name="body">邮件内容</param>
            public static void SendMail(string receiveEmailAddress,string subject,string body)
            {
                string sendEmailUserName = ConfigurationManager.AppSettings["sendEmailUserName"]; //发送方邮箱登录名
                string sendEmaiPassword = ConfigurationManager.AppSettings["sendEmaiPassword"]; //发送方邮箱密码
                string sendEmailAddress = ConfigurationManager.AppSettings["sendEmailAddress"]; //发送方邮箱地址
    
                //简单邮件传输协议类
                System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient();
                client.Host = "smtp.163.com";//邮件服务器
                client.Port = 25;//smtp主机上的端口号,默认是25.
                client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;//邮件发送方式:通过网络发送到SMTP服务器
                client.Credentials = new System.Net.NetworkCredential(sendEmailUserName, sendEmaiPassword);//凭证,发件人登录邮箱的用户名和密码
    
                //电子邮件信息类
                System.Net.Mail.MailAddress fromAddress = new System.Net.Mail.MailAddress(sendEmailAddress);//发件人Email,在邮箱是这样显示的,[发件人:小明<panthervic@163.com>;]
                System.Net.Mail.MailAddress toAddress = new System.Net.Mail.MailAddress(receiveEmailAddress);//收件人Email,在邮箱是这样显示的, [收件人:小红<43327681@163.com>;]  
                System.Net.Mail.MailMessage mailMessage = new System.Net.Mail.MailMessage(fromAddress, toAddress);//创建一个电子邮件类
                mailMessage.Subject = subject;
                //string filePath = HttpContext.Current.Server.MapPath("/index.shtml");//邮件的内容可以是一个html文本.
                //System.IO.StreamReader read = new System.IO.StreamReader(filePath, System.Text.Encoding.UTF8);  //System.Text.Encoding.GetEncoding("GB2312")
                //string mailBody = read.ReadToEnd();
                //read.Close();
                mailMessage.Body = body;//可为html格式文本
                mailMessage.SubjectEncoding = System.Text.Encoding.UTF8;//邮件主题编码
                mailMessage.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码
                mailMessage.IsBodyHtml = true;//邮件内容是否为html格式
                mailMessage.Priority = System.Net.Mail.MailPriority.Normal;//邮件的优先级,有三个值:高(在邮件主题前有一个红色感叹号,表示紧急),低(在邮件主题前有一个蓝色向下箭头,表示缓慢),正常(无显示).
                try
                {
                    client.Send(mailMessage);//发送邮件
                    //client.SendAsync(mailMessage, "ojb");异步方法发送邮件,不会阻塞线程.
                }
                catch (Exception e)
                {
                    throw new Exception(e.Message);
                }
            }
        }
  • 相关阅读:
    mysql:1153 Got a packet bigger than ‘max_allowed_packet’ bytes的解决方法
    阿里druid数据源配置及数据库密码加密
    使用Druid数据库连接池,配置ConfigFilter对数据库密码加密
    java 反射机制 Class对象在.class字节码中 jvm加载类的时机
    java单例 方式对比 防止序列化/反射攻击 volatile防止指令重排优化
    java httprequest编码/解码
    c struct pointer cast and object oriented
    c struct pointer cast and "object oriented"
    java线程的生命周期(状态:new start wait sleep stop yield)
    java 线程interupt stop(dep)
  • 原文地址:https://www.cnblogs.com/adolphyang/p/4920558.html
Copyright © 2011-2022 走看看