关于C#用SMTP协议发送邮件做邮箱注册(外加生成验证码)

送给大家一个C#利用SMTP协议发送邮件做邮箱注册

我是用winform做的实验
asp.net也是一样
这个是发送邮箱的方法

    string SendMassage(string sender,string recipient,string psd)
    {
        //创建一个随机数种子
        Random rdm = new Random();
        //初始化邮箱验证码为空字符串
        mailCode = "";
        //这里和验证码那里一样,就不在写注释了
        string code = "1234567890loLOqwertyuipasdfghjkzxcvbnmQWERTYUIPASDFGHJKZXCVBNM";
        for (int i = 0; i < 6; i++)
        {
            mailCode += code[rdm.Next(0, code.Length)].ToString();
        }
        //实例化一个MailMessage对象用来设置邮件的信息
        MailMessage msg = new MailMessage();
        msg.To.Add(recipient);//收件人
        msg.From = new MailAddress(sender, "冷文博客");//发件人
        msg.Subject = "注册信息";//标题
        msg.SubjectEncoding = Encoding.UTF8;//标题编码
        //正文
        msg.Body = "这封信是由 -【冷文博客】-官方 发送的。\r\n\r\n您的验证码为:" + mailCode + "\r\n\r\n您收到这封" +
            "邮件,是由于在 -【冷文博客】-官网 获取了新用户注册地址使用 了这个邮箱地址。如果您并没有访问过 -【冷文博客】-" +
            "官网,或没有进行上述操作,请忽 略这封邮件。您不需要退订或进行其他进一步的操作。";
        msg.BodyEncoding = Encoding.UTF8;//正文编码
        SmtpClient client = new SmtpClient();//实例化一个邮箱客户端
        client.Host = "smtp.qq.com";//设置邮箱主机  这个是qq的,网易126为 smtp.126.com   ,这个你用那个邮箱就去百度找找
        client.Port = 587;//端口号
        client.EnableSsl = true;//是否ssl加密   现在好像都是加密的   所以这里一般都写true
        client.Credentials = new NetworkCredential(sender, psd);//凭证,这里的密码你去登录你邮箱的后台找到里面的客户端登录的密码,一般它和帐户密码不一样
        try//捕获异常
        {
            client.Send(msg);
            return "成功";//没抛异常,说明发送成功
        }catch(Exception e)
        {
            //如果抛异常就将其异常信息返回
            return e.ToString();
        }
    }

这是生成验证码的方法

Image GetVerifyCode()
        {
            int r = 30;
            //创建一个Bitmap的对象,即电脑上的bmp格式的文件
            Bitmap bmp = new Bitmap(180, 45);
            //实例化一个Graphics对象,这次画这个验证码主要就靠它
            Graphics gra = Graphics.FromImage(bmp);
            //填充这个矩形为白色
            gra.FillRectangle(new SolidBrush(Color.White), new Rectangle(0, 0, 180, 45));
            string code = "23456789qwertyuipasdfghjkzxcvbnmQWERTYUIPASDFGHJKZXCVBNM";//验证码文本就是从这个字符串中随机的取出
            string[] fonts = { "黑体", "楷体", "微软雅黑", "宋体", "隶书" };//随机从这里取出字体
            Color[] colors = { Color.Red, Color.Black, Color.Green, Color.Gray, Color.Blue };//随机从中取颜色
            FontStyle[] fStyle = { FontStyle.Bold, FontStyle.Italic, FontStyle.Regular, FontStyle.Strikeout, FontStyle.Underline };//随机从中取字体样式
            //创建一个随机数种子
            Random rdm = new Random();
            //初始化验证码文本为空字符串
            codeTxt = "";
            //对验证码文本进行赋值
            for (int i = 0; i < 6; i++)
            {
                codeTxt += code[rdm.Next(0, code.Length)].ToString();
            }
            //Console.WriteLine(codeTxt);
            //画验证码
            for (int i = 0; i < 6; i++)
            {
                //将整个图片分成六部分,每个字母的坐标都随机出现在每部分
                Point p = new Point(i * r + rdm.Next(0, 15), rdm.Next(0, 15));
                Font f = new Font(fonts[rdm.Next(0, 5)], rdm.Next(20,25), fStyle[rdm.Next(0, 5)]);//随机选择一个字体
                gra.DrawString(codeTxt[i].ToString(), f, new SolidBrush(colors[rdm.Next(0, colors.Length)]), p);//画验证码
            }
            //画干扰线
            for (int i = 0; i < 20; i++)
            {
                Point p1 = new Point(rdm.Next(0, bmp.Width), rdm.Next(0, bmp.Height));
                Point p2 = new Point(rdm.Next(0, bmp.Width), rdm.Next(0, bmp.Height));
                gra.DrawLine(new Pen(colors[rdm.Next(0, colors.Length)]), p1, p2);
            }
            //画干扰点
            for (int i = 0; i < 150; i++)
            {
                Point p1 = new Point(rdm.Next(0, bmp.Width), rdm.Next(0, bmp.Height));
                bmp.SetPixel(p1.X, p1.Y, colors[rdm.Next(0, colors.Length)]);
            }
            return bmp;
        }

看看效果吧
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值