最近想要新增了一个功能,便是验证邮箱以及将日记以邮件的形式保存起来。

这个功能对于网站本身而言是致命的,但是对于执着写日记的朋友而言,是友善的

以下是技术积累的笔记
使用C#开发发送邮件相关功能,代码来源于网络,个人照搬,但是做了极其细微的调整


    /// <summary>
    /// 发送邮件相关操作
    /// </summary>
    public class SendEmail
    {
        /// <summary>
        /// 主要处理发送邮件的内容(如:收发人地址、标题、主体、图片等等)
        /// </summary>
        private MailMessage mMailMessage;
        /// <summary>
        /// 主要处理用smtp方式发送此邮件的配置信息(如:邮件服务器、发送端口号、验证方式等等)
        /// </summary>
        private SmtpClient mSmtpClient;
        /// <summary>
        /// 发送邮件所用的端口号(htmp协议默认为25)
        /// </summary>
        private int mSenderPort;
        /// <summary>
        /// 发件箱的邮件服务器地址(IP形式或字符串形式均可)
        /// </summary>
        private string mSenderServerHost;
        /// <summary>
        /// 发件箱的密码
        /// </summary>
        private string mSenderPassword;
        /// <summary>
        /// 发件箱的用户名(即@符号前面的字符串,例如:hello@163.com,用户名为:hello)
        /// </summary>
        private string mSenderUsername;
        /// <summary>
        /// 是否对邮件内容进行socket层加密传输
        /// </summary>
        private bool mEnableSsl;
        /// <summary>
        /// 是否对发件人邮箱进行密码验证
        /// </summary>
        private bool mEnablePwdAuthentication;

        ///<summary>
        /// 构造函数
        ///</summary>
        ///<param name="Server">发件箱的邮件服务器地址</param>
        ///<param name="ToAddress">收件人地址(可以是多个收件人,程序中是以“;"进行区分的)</param>
        ///<param name="FromMail">发件人地址</param>
        ///<param name="Email_Subject">邮件标题</param>
        ///<param name="Email_Message">邮件内容(可以以html格式进行设计)</param>
        ///<param name="username">发件箱的用户名(即@符号前面的字符串,例如:hello@163.com,用户名为:hello)</param>
        ///<param name="password">发件人邮箱密码</param>
        ///<param name="port">发送邮件所用的端口号(htmp协议默认为25)</param>
        ///<param name="sslEnable">true表示对邮件内容进行socket层加密传输,false表示不加密</param>
        ///<param name="pwdCheckEnable">true表??对发件人邮箱进行密码验证,false表示不对发件人邮箱进行密码验证</param>
        public SendEmail(string Server, string ToAddress, string FromMail, string Email_Subject,
            string Email_Message, string username, string password,
            string port, bool sslEnable = true, bool pwdCheckEnable = true)
        {
            try
            {
                mMailMessage = new MailMessage();
                mMailMessage.To.Add(ToAddress);
                mMailMessage.From = new MailAddress(FromMail);
                mMailMessage.Subject = Email_Subject;
                mMailMessage.Body = Email_Message;
                mMailMessage.IsBodyHtml = true;
                mMailMessage.BodyEncoding = System.Text.Encoding.UTF8;
                mMailMessage.Priority = MailPriority.Normal;
                this.mSenderServerHost = Server;
                this.mSenderUsername = username;
                this.mSenderPassword = password;
                this.mSenderPort = Convert.ToInt32(port);
                this.mEnableSsl = sslEnable;
                this.mEnablePwdAuthentication = pwdCheckEnable;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }

        ///<summary>
        /// 添加附件
        ///</summary>
        ///<param name="attachmentsPath">附件的路径集合,以分号分隔</param>
        public bool  AddAttachments(string attachmentsPath)
        {
            try
            {
                string[] path = attachmentsPath.Split(';'); //以什么符号分隔可以自定义
                Attachment data;
                ContentDisposition disposition;
                for (int i = 0; i < path.Length; i++)
                {
                    data = new Attachment(path[i], MediaTypeNames.Application.Octet);
                    disposition = data.ContentDisposition;
                    disposition.CreationDate = File.GetCreationTime(path[i]);
                    disposition.ModificationDate = File.GetLastWriteTime(path[i]);
                    disposition.ReadDate = File.GetLastAccessTime(path[i]);
                    mMailMessage.Attachments.Add(data);
                }
                return true;
            }
            catch (Exception ex)
            {
                return false;
            }
        }

        ///<summary>
        /// 邮件的发送
        ///</summary>
        public bool Send()
        {
            try
            {
                if (mMailMessage == null)
                {return false;}
                mSmtpClient = new SmtpClient();
                //mSmtpClient.Host = "smtp." + mMailMessage.From.Host;
                mSmtpClient.Host = this.mSenderServerHost;
                mSmtpClient.Port = this.mSenderPort;
                mSmtpClient.UseDefaultCredentials = false;
                mSmtpClient.EnableSsl = this.mEnableSsl;
                if (this.mEnablePwdAuthentication)
                {
                    System.Net.NetworkCredential nc = new System.Net.NetworkCredential(this.mSenderUsername, this.mSenderPassword);
                    //mSmtpClient.Credentials = new System.Net.NetworkCredential(this.mSenderUsername, this.mSenderPassword);
                    //NTLM: Secure Password Authentication in Microsoft Outlook Express
                    mSmtpClient.Credentials = nc.GetCredential(mSmtpClient.Host, mSmtpClient.Port, "NTLM");
                }
                else
                {
                    mSmtpClient.Credentials = new System.Net.NetworkCredential(this.mSenderUsername, this.mSenderPassword);
                }
                mSmtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
                mSmtpClient.Send(mMailMessage);
                return true;
            }
            catch (Exception ex)
            {
                return false;
            }
        }
    }


核心类文件,通过定义此类文件可以实现邮件发送功能


            try
            {
                string Server = "smtp.qq.com";
                string ToAddress = "milkezhang@qq.com";
                string FromMail = "dratk@foxmail.com";
                string Email_Subject = DateTime.Now.ToString();
                string Email_Message = "Hello milkezhang";
                string mailUsername = "dratk@foxmail.com";
                string mailPassword = "xxxxxxxxxxxx"; //发送邮箱的密码()
                string mailPort = "587";
                string attachPath = "z://1.jpg";

                SendEmail email = new SendEmail(Server, ToAddress, FromMail, Email_Subject
                    , Email_Message, mailUsername, mailPassword, mailPort, true, true);
                email.AddAttachments(attachPath);
                return email.Send();
            }
            catch (Exception ex)
            {
                return false;
            }


同过上一段代码发送邮件


版权声明

本站内容均来自网络转载或网友提供,如有侵权请及时联系我们删除!本站不承担任何争议和法律责任!





MilkeZhang

每一个童年的梦想都值得用青春去捍卫

加关注

  • 11

    日记

  • 15

    笔记

  • 7

    心情

About My Stroy

一个一直努力的孩子

Tags:

Hot


New


植物工厂:市场方向

植物工厂根据我所设计预期,总结以下特点存在的市场方向1、产量稳定,不受季节和气候的影响2、集中采收,物流方便3、机械化处理,人工成本低4、成本平稳,直接成本挂靠能源价格与水资源价格5、可提前预采收,提高存放时间(转移植株但不收割,不断水不断电)市场方向:一、订单型用户,对成本要求稳定容易做成本统计(如:食堂,餐厅)二、加工工厂,提供稳定,可调控的品质,为食品加工厂提供稳定的供货源(如:植物饮品,脱

植物工厂:人工光源植物工厂发展的难点

目前的植物工厂都是以无尘化车间为主,环境控制非常好,植物生产条件也达到最优,根据网络资料可以知悉,垂直种植中,国内中科三安所宣传的人工光源植物工厂,个人见解这种是非常符合未来植物工厂的发展模式。但是,个人见解这种模式在当下还是非常难以推广。以下是存在的难点;一、人工光源所需要消耗的能源是非常之巨大的,电力成本是个问题,而且在没有核聚变能源的加持下,能源成本将占据巨大的成本比例。二、随着人工光源所消

哥斯拉 幼体第二年

哥斯拉下个月就两年期了,这一年哥斯拉的咆哮技能越来越进步,虽然原子吐息还没有掌握,但是经过测试,吐口水实力出类拔萃。为一只潮汕野生哥斯拉,哥斯拉第二年已经熟练掌握假装冲茶的技能,并且装的有模有样除此之外,一只勤奋的哥斯拉一直处于练功状态,真是记录历史的珍贵照片。经现场考证,哥斯拉在被子底下练习水下闭息,睡觉时大口喘气,提升肺活量,增加咆哮功力。而且在睡觉时同步练习乾坤大挪移,经旁边的兔子证实,每晚都在练习,就差少林寺的倒立睡觉。野生幼体哥斯拉在进化的过程中,自信是必要的,一般对抗是不需要动手的,


哥斯拉 幼体第二年

那一年:2012的我那一年:2016的我那一年:2010的我那一年:2019的我那一年:2013的我20200512 日记 - 献血4/6/2020 鼎哥茶几上办公 浑身不自在那一年:2014的我那一年:2015的我那一年,2020的我6/6/2021 我与伟大公司与国家的五年计划3/6/2021 鼎哥交给我一个账户那一年:2017的我那一年:2018的我5/6/2021 游老君山 植物工厂:人工光源植物工厂发展的难点C# 网页随机背景图C# 图片 Base64 相关操作C# JSON 字符串解析js获取当前时间并赋值给input value 青蛙自传植物工厂:工厂类型分析第一篇,试个水。本站的 【忘记密码】页面的小故事植物工厂:光源选择与注意事项文明5:修改单位属性和参数的办法C# 发送邮件以及附件JS 预加载图片哥斯拉 幼体第二年植物工厂:市场方向植物工厂:项目前期评估青蛙自传2