服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - c# 两种发送邮件的方法

c# 两种发送邮件的方法

2022-11-14 12:04Crush_y C#

这篇文章主要介绍了c# 两种发送邮件的方法,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下

一、两种发送邮件的方法

有用到两种方式发邮件,一种是用System.Web.Mail类,另一种是System.Net.Mail类。

System.Net.Mail是作为System.Web.Mail的替代存在的。

System.Web.Mail使用时会提示已过时,但目前任然可以正常使用。

二、遇到的问题 

我在使用System.Net.Mail发邮件的时候遇到一个问题,如果是用的阿里云服务器,阿里云服务器把邮件的默认25端口给禁用掉了(为的是不让邮件泛滥),25端口被封,阿里云发送SMTP邮件失败。

在网上找了一些资料,主要有以下几种方法解决:

  1、在阿里云平台申请解封TCP 25 端口 (Outbound)

  2、更换端口号为465 或 587 ;

  3、服务器前缀加上 ssl://

  4、使用System.Web.Mail发送邮件 

2和3我都试用无果,阿里云服务器还是发送邮件失败,最后使用System.Web.Mail发送成功,要是有别的更好的方法请大家告知,谢谢谢谢~~ 

三、示例

这里我把发邮件一些相关的参数配置在ini文件里(smt服务器、端口号、发件人邮箱、发件人密码、发件人昵称、接收人邮箱)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#region 读写本地IN文件
 
        public static string ReadIniFile(string iniFileName, string section, string key)
        {
            string strFileName = GetRootPath() + "\\" + iniFileName;
 
            if (!System.IO.File.Exists(strFileName))
            {
                FileStream fs = System.IO.File.Create(strFileName);
                fs.Close();
            }
 
            TWays.IniFile localIniFile = new TWays.IniFile(strFileName);
 
            return localIniFile.ReadInivalue(section, key);
        }
 
        public static void WriteIniFile(string iniFileName, string section, string key, string value)
        {
            string strFileName = GetRootPath() + "\\" + iniFileName;
            if (!System.IO.File.Exists(strFileName))
            {
                FileStream fs = System.IO.File.Create(strFileName);
                fs.Close();
            }
 
            TWays.IniFile localIniFile = new TWays.IniFile(strFileName);
 
            localIniFile.WriteInivalue(section, key, value);
        }
 
#endregion
 
 
 
        public const string MonitorLogFileName = "WmsImportSheetLog.Log";
 
        public const string MailSetIniFileName = "MailSet.ini";
        public const string MailSetSectionOption = "Option";
        public const string MailSetKeySmtpServer = "SmtpServer";//smtp服务器
        public const string MailSetKeySmtpPort = "SmtpPort";//端口号
        public const string MailSetKeySendAddr = "SendAddr";//发件人邮箱
        public const string MailSetKeySendPwd = "SendPwd";//发件人密码
        public const string MailSetKeySendUser = "SendUser";//发件人名称,可随意定义
        public const string MailSetKeyReceiAddr = "ReceiAddr";//收件人邮箱
 
//如果ini文件内没有内容就设置默认值
public void WriteMailSet()
        {
            string strFileName = BusiUtils.GetRootPath() + "\\" + Constant.MailSetIniFileName;
 
            if (!System.IO.File.Exists(strFileName))
            {
                BusiUtils.WriteIniFile(Constant.MailSetIniFileName, Constant.MailSetSectionOption, Constant.MailSetKeySmtpServer, "smtp.163.com");
                BusiUtils.WriteIniFile(Constant.MailSetIniFileName, Constant.MailSetSectionOption, Constant.MailSetKeySmtpPort, "465");
                BusiUtils.WriteIniFile(Constant.MailSetIniFileName, Constant.MailSetSectionOption, Constant.MailSetKeySendAddr, "lala12121@163.com");
 
                string sendPwd = "lalala2017";
                sendPwd = TWays.Utils.EncryptString(sendPwd);
 
                BusiUtils.WriteIniFile(Constant.MailSetIniFileName, Constant.MailSetSectionOption, Constant.MailSetKeySendPwd, sendPwd);
                BusiUtils.WriteIniFile(Constant.MailSetIniFileName, Constant.MailSetSectionOption, Constant.MailSetKeySendUser, "系统管理员");
          //多个收件人用 ' ;' 号隔开
                BusiUtils.WriteIniFile(Constant.MailSetIniFileName, Constant.MailSetSectionOption, Constant.MailSetKeyReceiAddr, "1234@qq.com;5678@qq.com;2579@qq.com;");
                
            }
        }

System.Web.Mail

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
public bool Process()
        {
            bool boolReturn = false;
 
            try
            {
                string errorMsg = string.Empty;
                string title = "每日单据导入情况" + "-" + DateTime.Now.ToString("yyyy-MM -dd");
                string message = string.Empty;
 
                try
                {
                    WriteMailSet();
 
                    bool bl = true;
                    DataSet ds = DataAdapter.Query(SqlText.selectImportSheetErrorLog.ToUpper());
 
                    #region
 
                    if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count <= 0)
                    {
                        message = "单据处理成功!";
                    }
                    else
                    {
                        StringBuilder sb = new StringBuilder();
 
                        sb.Append("以下为单据导入异常的消息:\r\n\r\n");
 
                        foreach (DataRow dr in ds.Tables[0].Rows)
                        {
                            bl = false;
                            sb.Append("  任务编号:" + dr["TASK_CODE"].ToString() + ",\t");
                            sb.Append("  任务名称:" + dr["TASK_NAME"].ToString() + ",\t");
                            sb.Append("  日志消息:" + dr["MEMO"].ToString());
                            sb.Append("\r\n");
                        }
                        message = sb.ToString();
                    }
 
                    #endregion
 
                    if (bl)
                    {
                        title = "[成功]" + title;
                    }
                }
                catch (Exception Ex)
                {
                    message = Ex.Message;
 
                    errorMsg = "邮件发送失败!错误信息:" + message;
 
                    message = "Error:" + Ex.Message;
 
                    TWays.Core.Loger.LogMessage(BusiUtils.GetRootPath() + "\\" + Constant.MonitorLogFileName, errorMsg + "\r\n", true);
 
                    return boolReturn;
                }
 
                #region 发送邮件
 
                try
                {
 
                    TWays.Core.Loger.LogMessage(BusiUtils.GetRootPath() + "\\" + Constant.MonitorLogFileName, "发送" + title + "开始\r\n", true);
 
                    bool result = Monitor(title, message, "", "");
 
                    TWays.Core.Loger.LogMessage(BusiUtils.GetRootPath() + "\\" + Constant.MonitorLogFileName, "发送" + title + "结束\r\n", true);
 
                }
                catch (Exception Ex)
                {
                    errorMsg = "邮件发送失败!错误信息:" + Ex.Message;
 
                    TWays.Core.Loger.LogMessage(BusiUtils.GetRootPath() + "\\" + Constant.MonitorLogFileName, errorMsg + "\r\n", true);
 
                    return boolReturn;
                }
                #endregion
 
 
                Result = "Succeed";
                boolReturn = true;
            }
            catch (Exception ex)
            {
                Result = ex.Message;
            }
 
            return boolReturn;
        }
 
        private bool Monitor(string title, string message, string fileName, string shortFileName)
        {
            string smtpServer = BusiUtils.ReadIniFile(Constant.MailSetIniFileName, Constant.MailSetSectionOption, Constant.MailSetKeySmtpServer);
            string smtpPort = BusiUtils.ReadIniFile(Constant.MailSetIniFileName, Constant.MailSetSectionOption, Constant.MailSetKeySmtpPort);
            string sendAddr = BusiUtils.ReadIniFile(Constant.MailSetIniFileName, Constant.MailSetSectionOption, Constant.MailSetKeySendAddr);
            string sendPwd = Utils.DecryptString(BusiUtils.ReadIniFile(Constant.MailSetIniFileName, Constant.MailSetSectionOption, Constant.MailSetKeySendPwd));
            string receiAddr = BusiUtils.ReadIniFile(Constant.MailSetIniFileName, Constant.MailSetSectionOption, Constant.MailSetKeyReceiAddr);
 
            string errorMsg = string.Empty;
            
            try
            {
                System.Web.Mail.MailMessage mmsg = new System.Web.Mail.MailMessage();
                //邮件主题
                mmsg.Subject = title;
                //mmsg.BodyFormat = System.Web.Mail.MailFormat.Html;
                //邮件正文
                mmsg.Body = message;
                //正文编码
                mmsg.BodyEncoding = Encoding.UTF8;
                //优先级
                mmsg.Priority = System.Web.Mail.MailPriority.High;
 
                System.Web.Mail.MailAttachment data = null;
                //if (SUpFile != "")
                //{
                //    SUpFile = HttpContext.Current.Server.MapPath(SUpFile);//获得附件在本地地址
                //    System.Web.Mail.MailAttachment attachment = new System.Web.Mail.MailAttachment(SUpFile); //create the attachment
                //    mmsg.Attachments.Add(attachment); //add the attachment
                //}
                //发件者邮箱地址
                mmsg.From = string.Format("\"{0}\"<{1}>", "方予系统管理员", sendAddr);
 
                //收件人收箱地址
                mmsg.To = receiAddr;
                mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
                //用户名
                mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", sendAddr);
                //密码 不是邮箱登陆密码 而是邮箱设置POP3/SMTP 时生成的第三方客户端授权码
                mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", sendPwd);
                //端口
                mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", smtpPort);
                //使用SSL
                mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", "true");
                //Smtp服务器
                System.Web.Mail.SmtpMail.SmtpServer = smtpServer;
 
                System.Web.Mail.SmtpMail.Send(mmsg);
 
                System.Threading.Thread.Sleep(20000);
 
            }
            catch (Exception Ex)
            {
                errorMsg = "邮件发送失败!错误信息:" + Ex.Message;
                TWays.Core.Loger.LogMessage(BusiUtils.GetRootPath() + "\\" + Constant.MonitorLogFileName, errorMsg + "\r\n", true);
                return false;
            }
 
            return true;
        }

System.Net.Mail

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
SmtpClient SmtpClient = null;   //设置SMTP协议       
MailAddress MailAddress_from = null; //设置发信人地址  当然还需要密码       
MailAddress MailAddress_to = null//设置收信人地址  不需要密码       
MailMessage MailMessage_Mai = null;
FileStream FileStream_my = null; //附件文件流
 
public bool Process()
        {
            bool boolReturn = false;
 
            try
            {
                string errorMsg = string.Empty;
                string title = "每日单据导入情况" + "-" + DateTime.Now.ToString("yyyy-MM-dd");
                string message = string.Empty;
 
                try
                {
                    WriteMailSet();
 
                    bool bl = true;
                    DataSet ds = DataAdapter.Query(SqlText.selectImportSheetErrorLog.ToUpper());
 
                    #region
 
                    if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count <= 0)
                    {
                        message = "单据导入成功!";
                    }
                    else
                    {
                        StringBuilder sb = new StringBuilder();
 
                        sb.Append("以下为单据导入异常的消息:\r\n\r\n");
 
                        foreach (DataRow dr in ds.Tables[0].Rows)
                        {
                            bl = false;
                            sb.Append("  任务编号:" + dr["TASK_CODE"].ToString() + ",\t");
                            sb.Append("  任务名称:" + dr["TASK_NAME"].ToString() + ",\t");
                            sb.Append("  日志消息:" + dr["MEMO"].ToString());
                            sb.Append("\r\n");
                        }
                        message = sb.ToString();
                    }
 
                    #endregion
 
                    if (bl)
                    {
                        title = "[成功]" + title;
                    }
                }
                catch (Exception Ex)
                {
                    message = Ex.Message;
 
                    errorMsg = "邮件发送失败!错误信息:" + message;
 
                    message = "Error:" + Ex.Message;
 
                    TWays.Core.Loger.LogMessage(BusiUtils.GetRootPath() + "\\" + Constant.MonitorLogFileName, errorMsg + "\r\n", true);
 
                    return boolReturn;
                }
 
                #region 发送邮件
 
                try
                {
 
                    TWays.Core.Loger.LogMessage(BusiUtils.GetRootPath() + "\\" + Constant.MonitorLogFileName, "发送" + title + "开始\r\n", true);
 
                    bool result = Monitor(title, message, "", "");
 
                    TWays.Core.Loger.LogMessage(BusiUtils.GetRootPath() + "\\" + Constant.MonitorLogFileName, "发送" + title + "结束\r\n", true);
 
                }
                catch (Exception Ex)
                {
                    errorMsg = "邮件发送失败!错误信息:" + Ex.Message;
 
                    TWays.Core.Loger.LogMessage(BusiUtils.GetRootPath() + "\\" + Constant.MonitorLogFileName, errorMsg + "\r\n", true);
 
                    return boolReturn;
                }
                #endregion
 
 
                Result = "Succeed";
                boolReturn = true;
            }
            catch (Exception ex)
            {
                Result = ex.Message;
            }
 
            return boolReturn;
        }
 
        private bool Monitor(string title, string message, string fileName, string shortFileName)
        {
            string smtpServer = BusiUtils.ReadIniFile(Constant.MailSetIniFileName, Constant.MailSetSectionOption, Constant.MailSetKeySmtpServer);
            string smtpPort = BusiUtils.ReadIniFile(Constant.MailSetIniFileName, Constant.MailSetSectionOption, Constant.MailSetKeySmtpPort);
            string sendAddr = BusiUtils.ReadIniFile(Constant.MailSetIniFileName, Constant.MailSetSectionOption, Constant.MailSetKeySendAddr);
            string sendPwd = Utils.DecryptString(BusiUtils.ReadIniFile(Constant.MailSetIniFileName, Constant.MailSetSectionOption, Constant.MailSetKeySendPwd));
            string receiAddr = BusiUtils.ReadIniFile(Constant.MailSetIniFileName, Constant.MailSetSectionOption, Constant.MailSetKeyReceiAddr);
 
            string errorMsg = string.Empty;
 
            try
            {
                //初始化Smtp服务器信息
                setSmtpClient(smtpServer, Convert.ToInt32(smtpPort));
            }
            catch (Exception Ex)
            {
                errorMsg = "邮件发送失败,请确定SMTP服务名是否正确!错误信息:" + Ex.Message;
                TWays.Core.Loger.LogMessage(BusiUtils.GetRootPath() + "\\" + Constant.MonitorLogFileName, errorMsg + "\r\n", true);
                return false;
            }
            try
            {
                //验证发件邮箱地址和密码
                setAddressform(sendAddr, sendPwd);
            }
            catch (Exception Ex)
            {
                errorMsg = "邮件发送失败,请确定发件邮箱地址和密码的正确性!错误信息:" + Ex.Message;
                TWays.Core.Loger.LogMessage(BusiUtils.GetRootPath() + "\\" + Constant.MonitorLogFileName, errorMsg + "\r\n", true);
                return false;
            }
            try
            {
                MailMessage_Mai = null;
                MailMessage_Mai = new MailMessage();
                //清空历史发送信息 以防发送时收件人收到的错误信息(收件人列表会不断重复)
                MailMessage_Mai.To.Clear();
                string[] recAddress = receiAddr.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
                //添加收件人邮箱地址
                for (int i = 0; i < recAddress.Length; i++)
                {
                    MailAddress_to = new MailAddress(recAddress[i]);
                    MailMessage_Mai.To.Add(MailAddress_to);
                }
 
                //发件人邮箱
                MailMessage_Mai.From = MailAddress_from;
                //邮件主题
                MailMessage_Mai.Subject = title;
                MailMessage_Mai.SubjectEncoding = System.Text.Encoding.UTF8;
                //邮件正文
                MailMessage_Mai.Body = message;
                MailMessage_Mai.BodyEncoding = System.Text.Encoding.UTF8;
 
                //清空历史附件  以防附件重复发送
                //MailMessage_Mai.Attachments.Clear();
                //FileStream_my = new FileStream(fileName, FileMode.Open);
                //string name = FileStream_my.Name;
                ////添加附件
                //MailMessage_Mai.Attachments.Add(new Attachment(FileStream_my, shortFileName));
 
                //注册邮件发送完毕后的处理事件
                SmtpClient.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback);
 
                //开始发送邮件
                SmtpClient.SendAsync(MailMessage_Mai, "000000000");
 
                System.Threading.Thread.Sleep(30000);
            }
            catch (Exception Ex)
            {
                errorMsg = "邮件发送失败!错误信息:" + Ex.Message;
                TWays.Core.Loger.LogMessage(BusiUtils.GetRootPath() + "\\" + Constant.MonitorLogFileName, errorMsg + "\r\n", true);
                return false;
            }
 
            return true;
        }
 
        #region 设置Smtp服务器信息
 
        /// <summary>       
        /// 设置Smtp服务器信息       
        /// </summary>       
        /// <param name="ServerName">SMTP服务名</param>       
        /// <param name="Port">端口号</param>       
        private void setSmtpClient(string ServerHost, int Port)
        {
            SmtpClient = new SmtpClient();
            SmtpClient.Host = ServerHost;//指定SMTP服务名  例如QQ邮箱为 smtp.qq.com 新浪cn邮箱为 smtp.sina.cn等           
            SmtpClient.Port = Port; //指定端口号           
            SmtpClient.Timeout = 5;  //超时时间   
            SmtpClient.EnableSsl = true; //指定 SmtpClient 使用安全套接字层 (SSL) 加密连接
        }
 
        #endregion
 
        #region 验证发件人信息
 
        /// <summary>       
        /// 验证发件人信息       
        /// </summary>       
        /// <param name="MailAddress">发件邮箱地址</param>       
        /// <param name="MailPwd">邮箱密码</param>       
        private void setAddressform(string MailAddress, string MailPwd)
        {
            string sendUser = BusiUtils.ReadIniFile(Constant.MailSetIniFileName, Constant.MailSetSectionOption, Constant.MailSetKeySendUser);
 
            //创建服务器认证           
            NetworkCredential NetworkCredential_my = new NetworkCredential(MailAddress, MailPwd);
            //实例化发件人地址           
            MailAddress_from = new System.Net.Mail.MailAddress(MailAddress, sendUser, Encoding.BigEndianUnicode);
            //指定发件人信息  包括邮箱地址和邮箱密码           
            SmtpClient.Credentials = new System.Net.NetworkCredential(MailAddress_from.Address, MailPwd);
        }
 
        #endregion
 
        #region 发送邮件后所处理的函数
 
        private void SendCompletedCallback(object sender, AsyncCompletedEventArgs e)
        {
            string errorMsg = string.Empty;
            try
            {
                if (e.Cancelled)
                {
                    errorMsg = "发送已取消!";
 
                    TWays.Core.Loger.LogMessage(BusiUtils.GetRootPath() + "\\" + Constant.MonitorLogFileName, errorMsg + "\r\n", true);
                }
                if (e.Error != null)
                {
                    errorMsg = "邮件发送失败!1错误信息:" + e.Error.Message;
 
                    TWays.Core.Loger.LogMessage(BusiUtils.GetRootPath() + "\\" + Constant.MonitorLogFileName, errorMsg + "\r\n", true);
                }
                else
                {
                    errorMsg = "恭喜,邮件成功发出!";
 
                    TWays.Core.Loger.LogMessage(BusiUtils.GetRootPath() + "\\" + Constant.MonitorLogFileName, errorMsg + "\r\n", true);
                }
 
                if (FileStream_my != null)
                {
                    FileStream_my.Close();
                }
            }
            catch (Exception Ex)
            {
                errorMsg = "邮件发送失败!2错误信息:" + Ex.Message;
 
                TWays.Core.Loger.LogMessage(BusiUtils.GetRootPath() + "\\" + Constant.MonitorLogFileName, errorMsg + "\r\n", true);
            }
        }
 
        #endregion

以上就是c# 两种发送邮件的方法的详细内容,更多关于c# 发送邮件的资料请关注服务器之家其它相关文章!

原文链接:https://www.cnblogs.com/Swaggy-yyq/p/14313426.html

延伸 · 阅读

精彩推荐
  • C#C#中dynamic关键字的正确用法(推荐)

    C#中dynamic关键字的正确用法(推荐)

    dynamic的出现让C#具有了弱语言类型的特性。dynamic是FrameWork4.0的新特性。这篇文章主要介绍了C#中dynamic关键字的正确用法(推荐)的相关资料,需要的朋友可以参...

    .net 流氓4882021-12-09
  • C#WPF中NameScope的查找规则详解

    WPF中NameScope的查找规则详解

    这篇文章主要给大家介绍了关于WPF中NameScope的查找规则的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,...

    吕毅11692022-03-02
  • C#在Unity中使用全局变量的操作

    在Unity中使用全局变量的操作

    这篇文章主要介绍了在Unity中使用全局变量的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    阿晚喵11532022-11-13
  • C#C# using三种使用方法

    C# using三种使用方法

    这篇文章主要为大家详细介绍了C# using三种使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    心茶5692021-12-18
  • C#c#几种数据库的大数据批量插入(SqlServer、Oracle、SQLite和MySql)

    c#几种数据库的大数据批量插入(SqlServer、Oracle、SQLite和MySql)

    这篇文章主要介绍了c#几种数据库的大数据批量插入(SqlServer、Oracle、SQLite和MySql),需要的朋友可以了解一下。...

    Ruiky3802021-12-09
  • C#C#实现的三种模拟自动登录和提交POST信息的方法

    C#实现的三种模拟自动登录和提交POST信息的方法

    这篇文章主要介绍了C#实现的三种模拟自动登录和提交POST信息的方法,分别列举了WebBrowser、WebClient及HttpWebRequest实现自动登录及提交POST的相关实现技巧,具有...

    宁静.致远5942021-11-02
  • C#C#获取Visio模型信息的简单方法示例

    C#获取Visio模型信息的简单方法示例

    这篇文章主要给大家介绍了关于C#获取Visio模型信息的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要...

    衆尋5682022-02-10
  • C#Unity封装延时调用定时器

    Unity封装延时调用定时器

    这篇文章主要为大家详细介绍了Unity封装延时调用定时器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    林新发11772022-09-03