首页 > 代码库 > 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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。