用Visual C#发送电子邮件

2016-02-19 17:08 4 1 收藏

今天天气好晴朗处处好风光,好天气好开始,图老师又来和大家分享啦。下面给大家推荐用Visual C#发送电子邮件,希望大家看完后也有个好心情,快快行动吧!

【 tulaoshi.com - 编程语言 】

  Visual C#是微软公司推出的下一代程序开发语言。他不仅具有Visual C++功能强大的特点,又具有Visual Basic的简洁,易上手的特点。所以一经推出,就收到了广大程序开发人员的欢迎。Visual C#和Visual C++的一个明显的区别在于,Visual C#本身是没有类库的,而Visual C++却是自身就带有类库。Visual C#虽然没有类库,但作为.Net框架中的一个十分重要的开发语言。他可以使用.Net框架提供的一个通用的软件开发包--.Net FrameWork SDK。这个软件开发包可以说是Visual C#功能的延伸,Visual C#就是通过他实现了自身无法实现的很多功能。本文就是来介绍Visual C#如何利用这个软件开发包来发送电子邮件的。

  一.软件开发和运行的环境设置:

  I .视窗系统2000服务器版

  II ..Net FrameWork SDK Beta 2版

  III .打开"控制面板",进入"添加和删除程序",然后再点击"添加/删除Windows组件",就可以看见以下界面:

  图01:系统配置界面

  点中"Internet信息服务( IIS )",然后点击"详细信息",可得到如下界面:

  图02:系统配置界面

  点中选择"SMTP Serverce"选项,然后按"确定"按钮。再按"下一步"按钮,则系统在重新启动后,就会安装好运行本文程序所需要的SMTP Service了。

  二.Visual C#如何发送电子邮件:

  在.Net FrameWork SDK Beta 2版中,有一个叫做System.Web.Mail的名称空间,在这个名称空间中封装发送电子邮件的方法、对象和属性。Visual C#就是通过调用此名称空间中的方法、对象和属性,发送电子邮件的。在本文中,发送电子邮件主要用到了二个对象:一个是MailMessage对象,此对象主要是封装电子邮件的各个属性,即所谓的发信人,收信人,信件的主题,信件的内容和信件的附件等。另外一个是SmtpMail对象,这个对象的最大作用是把已经定义好各个属性的MailMessage对象给发送出去,而完成此功能,就需要调用SmtpMail对象的Send ( )方法。

  三.在Visual C#中正确使用发送电子邮件相关的对象:

  (1).要调用对象,当然首先就要在程序的最前面导入封装对象的名称空间,具体如下:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  using System.Web.Mail ;

  (2).正确定义MailMessage对象的属性:

  MailMessage对象中和电子邮件相关的属性可以用下表来表示:

属性名称 代表意义From 源地址To 目的地址Subject 邮件主题Priority 邮件优先级 ( High , Low , Normal )Attachments 附件Bcc 暗送地址Cc 抄送地址Body 邮件内容主体Bodyformat 邮件格式( Html , Text )Bodyencoding 邮件编码( Base64 , Uuencode )

  在程序中,具体的实现语句如下:

  

MailMessage aMessage = new MailMessage ( ) ;//新建一个MailMessage对象aMessage.From = FromTextBox.Text ;//定义发信人地址,如果是多人,可以用","分开aMessage.To = ToTextBox.Text ;//定义收信人地址,如果是多人,可以用","分开aMessage.Cc = CCTextBox.Text ;//定义抄送人地址,如果是多人,可以用","分开aMessage.Bcc = BCCTextBox.Text ;//定义暗送人地址,如果是多人,可以用","分开aMessage.Subject = SubjectTextBox.Text ;//定义邮件的主题aMessage.Body = MessageTextBox.Text ;//定义邮件的内容if ( AttachmentTextBox.Text.Length  0 )aMessage.Attachments.Add ( new MailAttachment ( AttachmentTextBox.Text , MailEncoding.Base64 ) ) ;//给邮件增加一个附件

  注:"="右边是程序中定义的文本框的"Text"值。

  (3).用SmtpMail对象正确发送电子邮件:

  在Visual C#中调用SmtpMail对象的Send ( )方法有多种方式。本文介绍的只是其中的一种比较常用的调用方式,即:SmtpMail.Send ( MailMessage对象 )。在程序中的实现语句如下:

  SmtpMail.Send ( aMessage ) ;

  四.本文源程序代码( Send.cs )以及程序运行界面:

  下图是编译好的程序的运行界面:

  图03:Send.cs程序运行界面

  以下是Send.cs源程序代码:

  

using System ;using System.Drawing ;using System.Collections ;using System.ComponentModel ;using System.Windows.Forms ;using System.Data ;using System.Web ;using System.Web.Mail ;//导入程序中使用到的名称空间public class Form1 : Form{ private Label label1 ; private Label label2 ; private Label label3 ; private Button SendButton ; private Button ExitButton ; private TextBox FromTextBox ; private TextBox ToTextBox ; private TextBox SubjectTextBox ; private TextBox MessageTextBox ; private TextBox CCTextBox ; private Label CCLabel ; private TextBox BCCTextBox ; private Label label4 ; private Label label5 ; private Button BrowseButton ; private OpenFileDialog openFileDialog1 ; private TextBox AttachmentTextBox ; private System.ComponentModel.Container components = null ; public Form1 ( ) {   InitializeComponent ( ) ; } //清除在程序中使用的所有资源 protected override void Dispose ( bool disposing ) {  if ( disposing )  {   if ( components != null )   {    components.Dispose ( ) ;   }  }  base.Dispose ( disposing ) ; } private void InitializeComponent ( ) {  MessageTextBox = new TextBox ( ) ;  ToTextBox = new TextBox ( ) ;  SendButton = new Button ( ) ;  ExitButton = new Button ( ) ;  FromTextBox = new TextBox ( ) ;  label1 = new Label ( ) ;  SubjectTextBox = new TextBox ( ) ;  label2 = new Label ( ) ;  label3 = new Label ( ) ;  CCTextBox = new TextBox ( ) ;  CCLabel = new Label ( ) ;  BCCTextBox = new TextBox ( ) ;  label4 = new Label ( ) ;  label5 = new Label ( ) ;  AttachmentTextBox = new TextBox ( ) ;  BrowseButton = new Button ( ) ;  openFileDialog1 = new OpenFileDialog ( ) ;  FromTextBox.Location = new System.Drawing.Point ( 96 , 16 ) ;  FromTextBox.Name = "FromTextBox" ;  FromTextBox.Size = new System.Drawing.Size ( 240 , 20 ) ;  FromTextBox.TabIndex = 0 ;  FromTextBox.Text = "" ;  ToTextBox.Location = new System.Drawing.Point ( 96 , 53 ) ;  ToTextBox.Name = "ToTextBox" ;  ToTextBox.Size = new System.Drawing.Size ( 240 , 20 ) ;  ToTextBox.Text = "" ;  ToTextBox.TabIndex = 1 ;  CCTextBox.Location = new System.Drawing.Point ( 96 , 88 ) ;  CCTextBox.Name = "CCTextBox" ;  CCTextBox.Size = new System.Drawing.Size ( 240 , 20 ) ;  CCTextBox.TabIndex = 2 ;  CCTextBox.Text = "" ;  BCCTextBox.Location = new System.Drawing.Point ( 96 , 120 ) ;  BCCTextBox.Name = "BCCTextBox" ;  BCCTextBox.Size = new System.Drawing.Size ( 240 , 20 ) ;  BCCTextBox.TabIndex = 3 ;  BCCTextBox.Text = "" ;  SubjectTextBox.Location = new System.Drawing.Point ( 96 , 152 ) ;  SubjectTextBox.Name = "SubjectTextBox" ;  SubjectTextBox.Size = new System.Drawing.Size ( 240 , 20 ) ;  SubjectTextBox.TabIndex = 4 ;  SubjectTextBox.Text = "" ;  AttachmentTextBox.Location = new System.Drawing.Point ( 96 , 184 ) ;  AttachmentTextBox.Name = "AttachmentTextBox" ;  AttachmentTextBox.Size = new System.Drawing.Size ( 168 , 20 ) ;  AttachmentTextBox.TabIndex = 5 ;  AttachmentTextBox.Text = "" ;  MessageTextBox.Location = new System.Drawing.Point ( 8 , 216 ) ;  MessageTextBox.Multiline = true ;  MessageTextBox.Name = "MessageTextBox" ;  MessageTextBox.Size = new System.Drawing.Size ( 320 , 152 ) ;  MessageTextBox.Text = "" ;  MessageTextBox.TabIndex = 6 ;  BrowseButton.Location = new System.Drawing.Point ( 280 , 184 ) ;  BrowseButton.Name = "BrowseButton";  BrowseButton.Size = new System.Drawing.Size ( 56 , 24 ) ;  BrowseButton.Text = "浏览文件" ;  BrowseButton.TabIndex = 7 ;  BrowseButton.Click += new System.EventHandler ( BrowseButton_Click ) ;  SendButton.Location = new System.Drawing.Point ( 64 , 380 ) ;  SendButton.Name = "SendButton" ;  SendButton.Size = new System.Drawing.Size ( 72 , 24 ) ;  SendButton.Text = "发送邮件" ;  SendButton.TabIndex = 8 ;  SendButton.Click += new System.EventHandler ( SendButton_Click ) ;  ExitButton.Location = new System.Drawing.Point ( 200 , 380 ) ;  ExitButton.Name = "ExitButton" ;  ExitButton.Size = new System.Drawing.Size ( 72 , 24 ) ;  ExitButton.Text = "退出程序";  ExitButton.TabIndex = 9 ;  ExitButton.Click += new System.EventHandler ( ExitButton_Click ) ;  label1.Font = new System.Drawing.Font ( "宋体", 9F );  label1.Location = new System.Drawing.Point ( 48 , 16 ) ;  label1.Name = "label1" ;  label1.Size = new System.Drawing.Size ( 48 , 16 ) ;  label1.Text = "发信人:" ;  label2.Font = new System.Drawing.Font ( "宋体", 9F );  label2.Location = new System.Drawing.Point ( 48 , 53 ) ;  label2.Name = "label2" ;  label2.Size = new System.Drawing.Size ( 48 , 16 ) ;  label2.Text = "收信人:" ;   label3.Font = new System.Drawing.Font ( "宋体", 9F ) ;  label3.Location = new System.Drawing.Point ( 48 , 152 ) ;  label3.Name = "label3" ;  label3.Size = new System.Drawing.Size ( 48 , 16 ) ;  label3.Text = "主 题:" ;  CCLabel.Font = new System.Drawing.Font ( "宋体", 9F ) ;  CCLabel.Location = new System.Drawing.Point ( 48 , 88 ) ;  CCLabel.Name = "CCLabel" ;  CCLabel.Size = new System.Drawing.Size ( 48 , 16 ) ;  CCLabel.Text = "抄 送:" ;  label4.Font = new System.Drawing.Font ( "宋体", 9F ) ;  label4.Location = new System.Drawing.Point ( 48 , 120 ) ;  label4.Name = "label4" ;  label4.Size = new System.Drawing.Size ( 48 , 16 ) ;  label4.Text = "暗 送:" ;  label5.Font = new System.Drawing.Font ( "宋体", 9F ) ;  label5.Location = new System.Drawing.Point ( 48 , 184 ) ;  label5.Name = "label5" ;  label5.Size = new System.Drawing.Size ( 48 , 16 ) ;  label5.Text = "附 件:" ;  openFileDialog1.Title = "选择文件作为邮件的附件:" ;  this.AutoScaleBaseSize = new System.Drawing.Size ( 5 , 13 ) ;  this.ClientSize = new System.Drawing.Size ( 344 , 413 ) ;    this.Controls.Add ( BrowseButton ) ;  this.Controls.Add ( AttachmentTextBox ) ;  this.Controls.Add ( label5 ) ;  this.Controls.Add ( label4 ) ;  this.Controls.Add ( BCCTextBox ) ;  this.Controls.Add ( CCLabel ) ;  this.Controls.Add ( CCTextBox ) ;  this.Controls.Add ( ExitButton ) ;  this.Controls.Add ( SendButton ) ;  this.Controls.Add ( label3 ) ;  this.Controls.Add ( label2 ) ;  this.Controls.Add ( label1 ) ;  this.Controls.Add ( SubjectTextBox ) ;  this.Controls.Add ( ToTextBox ) ;  this.Controls.Add ( FromTextBox ) ;  this.Controls.Add ( MessageTextBox ) ;  this.Name = "Form1" ;  this.Text = "用Visual C#做邮件发送软件!" ;  this.ResumeLayout ( false ); } static void Main ( ) {  Application.Run ( new Form1 ( ) ) ; } private void SendButton_Click ( object sender , System.EventArgs e ) {  try  {   MailMessage aMessage = new MailMessage ( ) ;   //新建一个MailMessage对象   aMessage.From = FromTextBox.Text ;   //定义发信人地址,如果是多人,可以用","分开   aMessage.To = ToTextBox.Text ;   //定义收信人地址,如果是多人,可以用","分开   aMessage.Cc = CCTextBox.Text ;   //定义抄送人地址,如果是多人,可以用","分开   aMessage.Bcc = BCCTextBox.Text ;   //定义暗送人地址,如果是多人,可以用","分开   aMessage.Subject = SubjectTextBox.Text ;   //定义邮件的主题   aMessage.Body = MessageTextBox.Text ;   //定义邮件的内容   if ( AttachmentTextBox.Text.Length  0 )    aMessage.Attachments.Add ( new MailAttachment ( AttachmentTextBox.Text , MailEncoding.Base64 ) ) ;   //给邮件增加一个附件   SmtpMail.Send ( aMessage ) ;   //发送电子邮件   MessageBox.Show( "电子邮件已经发送到-" + ToTextBox.Text ) ;  }  catch ( Exception ex )  {   MessageBox.Show ( ex.Message.ToString ( ) ) ;  } } private void ExitButton_Click ( object sender , System.EventArgs e ) {  Application.Exit ( ) ; } private void BrowseButton_Click ( object sender , System.EventArgs e ) {  if ( openFileDialog1.ShowDialog ( ) == DialogResult.OK )  {   AttachmentTextBox.Text = openFileDialog1.FileName ;  } }}

  五.总结:

  至此我们已经用Visual C#完成了一个功能十分完备的电子邮件发送软件。可见,在程序中,起到关键作用的是.Net FrameWork SDK,正是他的丰富的类库,使得发送电子邮件变成一件十分轻松的事情。其实你也只有掌握了.Net FrameWork SDK中的类库,Visual C#才能发挥其最大的功能。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

来源:http://www.tulaoshi.com/n/20160219/1614331.html

延伸阅读
标签: PHP
  <? *  名称:用Socket发送电子邮件 *  描述:本类实现了直接使用需要验证的SMTP服务器直接发送邮件,参考文章《用Socket发送电子邮件》作者:limodou *        此文章比较早,他是用不用验证SMTP服务器发送邮件,现在基本上SMTP服务器都需要验证了,所以这个文章里的类  &n...
摘 要 :本文简单阐述了发送电子邮件的原理,提出了一种基于C++ Builder和Access2000数据库来实现电子邮件群发的方法,详细介绍了C++ Builder 中TIdSMTP组件的使用,并给出了用TIdSMTP组件实现群发的核心示例代码。 关键词 :电子邮件群发;认证;TIdSMTP;TIdMessage;ADO 引言 邮件群发这一手段被广泛应用于电子商务、网...
标签: Delphi
  无论Outlook XP还是最新的Foxmail 4.0,都只能在HTML格式的电子邮件中嵌入JPG、GIF格式图片,而音色俱佳的Flash动画却只能作为电子邮件附件发送给好友,你可曾感到遗憾? 经过一番实验探索,我使用Delphi终于实现了将Flash动画(.SWF格式)嵌入到电子邮件正文中发送的功能,Foxmail、Outlook均可以按照HTML格式的邮件查看,而且...
标签: PHP
  一个发送E-MAIL的脚本也许是你能够在Web 站点上找到的最普通的脚本之一了,虽然它很简单,一个邮件脚本有时会令程序员非常沮丧.PHP中有一个叫做mail()的函数,它只需要知道接收方的地址和信件主体就可以发送邮件,但是要让mail()按你的意思运行你还需要解决一些棘手的问题. 要使mail()能够运行,你必须有一个SMTP服务器以便PHP能够连接上去...
SQL Server 2005的设置如下: 1.运行SQL Server Surface Area Configuration-Surface Area Configuration for features-选择Database Mail-选择Enable Database mail stored procedures 2.打开SQL Management Studio-Management-Database mail-Configure SMTP Settings. 3.打开SQL Server Agent-Operators-建立一个新的Operator 4.建立一个...

经验教程

834

收藏

54
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部