标签:
本文主要讲述基于C#网络编程的发送邮件的编程,邮件发送功能是基于邮件协议的,常见的电子邮件协议有SMTP(简单邮件传输协议)、POP3(邮局协议)、IMAP(Internet邮件訪问协议),文章主要參考周存杰的《C#网络编程实例教程》.这也是最后一篇參照该书的网络编程文章,之后的该系列文章都是基于网络实际应用的,不会再大量讲述原理知识.
//SMTP类经常用法 //构造方法 public SmtpMail(); //Send()方法 发送邮件 返回值:无 public static void Send( MailMessage message //邮件 ); public static void Send( string from, //发送者地址 string to, //收信人地址 string subject, //邮件主题 string messageText //邮件内容 );
2.MailMessage类
其命名控件为System.Web.Mail,该类用于设置邮件内容以及与邮件内容相关的信息,如发送人地址、收信人地址等.
//MailMessage经常使用属性 //1.Attachments属性 用于获取附件的文件列表 public IList Attachments {get;} //2.Bcc属性 用于获取或设置暗送于地址,被暗送者的地址 public string Bcc {get; set;} //3.Body属性 用于获取或设置邮件内容 public string Body {get; set;} //4.BodyFormat属性 用于获取或设置邮件内容的格式 有Html Text格式 public MailFormat BodyFormat {get; set;} //5.Cc属性 用于获取或设置抄送于地址,被抄送者的地址 public string Cc {get; set;} //6.From属性 用于获取或设置发信人的地址 public string From {get; set;} //7.Headers属性 用于获取邮件标头 public IDictionary Headers {get;} //8.Priority属性 用于获取或设置邮件的优先级,包含High Low Normal public MailPriority Priority {get; set;} //9.Subject属性 用于获取或设置邮件的主题 public string Subject {get; set;} //10.To属性 用于获取或设置邮件的收信人地址 public string To {get; set;} //构造方法 public MailMessage();
3.MailAttachment类
该类用于构造和设置邮件的附件,命名空间为System.Web.Mail.
//MailAttachment类经常使用属性 //Encoding属性 用于设置附件的编码 public MailEncoding Encoding {get;} //Filename属性 用于设置附件的文件名称 public string Filename {get;} //构造方法 public MailAttachment( string filename //文件名称 ); public MailAttachment( string filename, //文件名称 MailEncoding encoding //编码 );
//加入命名空间 using System.Net.Mail; //加入私有成员 private MailMessage msg; //用于构造邮件属性和方法 private Attachment att; //用于构造邮件附件属性和方法 public Form1() { InitializeComponent(); msg = new MailMessage(); //实例化 } //点击"发送邮件"按钮 private void button1_Click(object sender, EventArgs e) { try { //To邮件收信人地址属性 仅仅读属性不能赋值 msg.To.Add(textBox1.Text); //From邮件发件人地址属性 msg.From = new MailAddress(textBox2.Text); //Subject邮件主题属性 msg.Subject = textBox3.Text; msg.SubjectEncoding = Encoding.Default; //Body设置邮件内容属性 msg.Body = richTextBox1.Text; msg.BodyEncoding = Encoding.Default; //设置邮件的优先级Priority属性 if (radioButton1.Checked) msg.Priority = MailPriority.High; else if (radioButton2.Checked) msg.Priority = MailPriority.Low; else if (radioButton3.Checked) msg.Priority = MailPriority.Normal; else msg.Priority = MailPriority.Normal; //发送邮件 SmtpClient client = new SmtpClient(); //邮件server设置smtpport 默认25 client.Host = "smtp.163.com"; client.Port = 25; //邮件发送方式 通过网络发送到SMTPserver client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; //凭证 发件人登录邮箱的username和password client.Credentials = new System.Net.NetworkCredential("1520161xxxx", "19911203xxxx"); client.Send(msg); MessageBox.Show("邮件发送成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception m) //异常处理 { MessageBox.Show(m.Message); } } //点击"加入附件"按钮 private void button2_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.CheckFileExists = true; //不存在文件名称显示警告 openFileDialog.ValidateNames = true; //值接受Win32文件 openFileDialog.Multiselect = false; //不同意多选文件 openFileDialog.Filter = "全部文件(*.*)|*.*"; //加入附件 现仅支持加入一个附件 if (openFileDialog.ShowDialog() == DialogResult.OK) { richTextBox1.Text = openFileDialog.FileName; att = new Attachment(openFileDialog.FileName); msg.Attachments.Add(att); } } //点击"删除附件"按钮 private void button3_Click(object sender, EventArgs e) { msg.Attachments.Clear(); }
执行结果例如以下图所看到的:
这不过C#使用SMTP发送邮件的基础知识,读者能够自己完好做成更好的界面.
你也能够调用Windows自带的邮件发送程序实现,Windows自带Outlook Express软件,能够通过函数ShellExecute()或CreateProcess()调用Outlook Express,Ctrl+R调用"执行",输入“mailto:eastmount@163.com”就可以调用发送邮件.使用该软件时首先须要測试账户,我绑定的是163邮箱.读者感兴趣能够自己完毕.
本文主要讲述C#网络编程中SMTP邮件协议,怎样发送邮件的过程,并比較了新版的和旧版的方法.这将是我的C#网络编程的最后一篇文章,接下来想学习C#网络编程爬虫、下载网上图片、数据挖掘结合之类的知识.希望文章对大家有所帮助,假设有错误或不足之处,请海涵!眼下法国VS瑞士 3:0.
(By:Eastmount 2014-6-21 夜4点 原创CSDN http://blog.csdn.net/eastmount/)
推荐相參考的关资料,很不错,值得学习:
1.[C# 网络编程系列]专题十:实现简单的邮件收发器 -- Learning_Hard
http://blog.csdn.net/learning_hard/article/details/9071041
2.C#使用163的SMTPserver发送邮件 -- PowerCoder
http://www.cnblogs.com/OpenCoder/archive/2010/07/16/1779247.html
3.C#邮件下载 -- zhouquanandy
http://download.csdn.net/detail/zhouquanandy/4444802
4.《C#网络编程实例教程》-- 周存杰
5.C#发送邮件(加入附件)-- 期待秋天的叶
http://blog.csdn.net/kkkkkxiaofei/article/details/7941239
标签:
原文地址:http://www.cnblogs.com/mengfanrong/p/5364987.html