首页 > 代码库 > C# 发送邮件整理,包括控制台程序、WPF、WebForm 及 ASP.NET MVC

C# 发送邮件整理,包括控制台程序、WPF、WebForm 及 ASP.NET MVC

  发送邮件使用SMTP服务器,有两种方案,一种是使用IIS的SMTP功能;另一种是直接使用邮件供应商的SMTP,比如Gmail、Sina、QQ等,使用这些SMTP服务器必须得注册帐号,一般可以直接用邮箱及密码,但是有些邮箱必须开启POP3/SMTP服务才可以,比如QQ邮箱默认是关闭的,可以在“设置”->“账户”里面找到。我今天整理的都是用的第二种。

  早期的.NET版本用的是 System.Web.Mail 类提供的功能来发邮件;2.0版本推出了 System.Net.Mail 类来代替 System.Web.Mail ,但是我在 WebForm 里面使用的时候用System.Net.Mail 老是触发异常,后来改用 System.Web.Mail 才成功了,可以看下我代码里的区别;ASP.NET MVC 3 提供了 WebMail 类来发送邮件,更加方便。

  控制台程序、WPF、WebForm 及 ASP.NET MVC 我都测试了一下,控制台程序和 WPF 都用了 System.Net.Mail ,WebForm 和 ASP.NET MVC 都可以用 System.Web.Mail ,而 ASP.NET MVC 3 直接用 WebMail 更方便。下面我把代码分别贴出来。

  控制台程序:

 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Net.Mail;//添加引用 6    7 namespace SendEmail 8 { 9     class Program10     {11         static void Main(string[] args)12         {13             Program p = new Program();14             bool flag = p.SendEmail();15             if (flag)16             {17                 Console.Write("Success !");18             }19               20             Console.Read();21         }22   23         public bool SendEmail()24         {25             MailMessage msg = new MailMessage();26             msg.To.Add("1234567@qq.com");//邮件接收者的帐号27             msg.From = new MailAddress("1234567@qq.com", "nickname", System.Text.Encoding.UTF8);//发送邮件的帐号及显示名称和字符编码28             msg.Subject = "Subject";//邮件标题 29             msg.SubjectEncoding = System.Text.Encoding.UTF8;//邮件标题编码 30             msg.Body = "Content";//邮件内容 31             msg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码 32             msg.IsBodyHtml = false;//是否是HTML邮件 33             msg.Priority = MailPriority.High;//邮件优先级34   35             SmtpClient client = new SmtpClient();36             client.Credentials = new System.Net.NetworkCredential("1234567@qq.com", "password");//注册的邮箱和密码,就QQ邮箱而言,如果设置了独立密码,要用独立密码代替密码             37             client.Host = "smtp.qq.com";//QQ邮箱对应的SMTP服务器38             object userState = msg;39             try40             {41                 client.SendAsync(msg, userState);42                 return true;43             }44             catch (Exception ex)45             {46                 Console.WriteLine(ex.Message);47                 return false;48             }49         }50     }51 }

WPF:

 1    using System; 2    using System.Collections.Generic; 3    using System.Linq; 4    using System.Net.Mail;//添加引用 5    using System.Text; 6    using System.Windows; 7    using System.Windows.Controls; 8    using System.Windows.Data; 9    using System.Windows.Documents;10    using System.Windows.Input;11    using System.Windows.Media;12    using System.Windows.Media.Imaging;13    using System.Windows.Navigation;14    using System.Windows.Shapes;15    16    namespace WPFSendMail17    {18        /// <summary>19        /// MainWindow.xaml 的交互逻辑20        /// </summary>21        public partial class MainWindow : Window22        {23            public MainWindow()24            {25                InitializeComponent();26            }27    28            private void Button_Click(object sender, RoutedEventArgs e)29            {30                bool flag = SendMail();31                if (flag)32                {33                    MessageBox.Show("Success !","Tips"); 34                }35            }36    37            public bool SendMail()38            {39                MailMessage message = new MailMessage();40                message.To.Add("       @qq.com");41                message.From = new MailAddress("       @qq.com","nickname",Encoding.UTF );42                message.Subject = "Sending e-mail in WPF !";43                message.SubjectEncoding = Encoding.UTF ;44                message.Body = "Awesome";45                message.BodyEncoding = Encoding.UTF ;46                message.IsBodyHtml = false;47                message.Priority = MailPriority.Normal;48                Attachment att = new Attachment("text.txt");//添加附件,确保路径正确49                message.Attachments.Add(att);50    51                SmtpClient smtp = new SmtpClient();52                smtp.Credentials = new System.Net.NetworkCredential("       @qq.com","password");53                smtp.Host = "smtp.qq.com";54                object userState = message;55    56                try57                {58                    smtp.SendAsync(message,userState);59                    return true;60                }61                catch (Exception ex)62                {63                    MessageBox.Show(ex.Message,"Tips");64                    return false;65                }66            }67        }68    }

Winform:

 1    using System; 2    using System.Collections.Generic; 3    using System.Linq; 4    using System.Text; 5    using System.Web; 6    using System.Web.UI; 7    using System.Web.UI.WebControls; 8    using System.Web.Mail;//添加引用 9    10    namespace WebFormSendEmail11    {12        public partial class WebForm  : System.Web.UI.Page13        {14            protected void Page_Load(object sender, EventArgs e)15            {16    17            }18    19            protected void Button _Click(object sender, EventArgs e)20            {21                bool flag = SendMail();22                if (flag)23                {24                    Response.Write("<script>alert(‘Success !‘);</script>");   25                }26            }27    28            public bool SendMail()29            {30                MailMessage message = new MailMessage();31                message.To = "       @qq.com";32                message.From = "       @qq.com";33                message.Subject = "Sending e-mail in Web !";34                message.Body = "Awesome";35                //基本权限36                message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", " ");37                //用户名38                message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "       @qq.com");39                //密码40                message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "password"); 41    42                SmtpMail.SmtpServer = "smtp.qq.com";43                try44                {45                    SmtpMail.Send(message);46                    return true;47                }48                catch (Exception ex)49                {50                    Response.Write(ex.Message);51                    return false;52                }53            }54        }55    }

MVC:

 1         try 2         { 3             WebMail.SmtpServer = "smtp.qq.com"; 4             WebMail.SmtpPort = 25;//端口号,不同SMTP服务器可能不同,可以查一下 5             WebMail.EnableSsl = false;//禁用SSL 6             WebMail.UserName = "1234567@qq.com"; 7             WebMail.Password = "password"; 8             WebMail.From = "1234567@qq.com"; 9             WebMail.Send("1234567@qq.com","Subject",“Content");10         }11         catch (Exception)12         {13            14         }  

 

C# 发送邮件整理,包括控制台程序、WPF、WebForm 及 ASP.NET MVC