用System.Web.Mail发送邮件,适用于.net1.1,.net2.0请用System.Net.Mail 先引用System.Web 1,发送简单邮件 [ C# ] MailMessage mail =new MailMessage(); mail.To ="me@mycompany.com"; mail.From ="you@yourcompany.com"; mail.Subject ="this is a test email."; mail.Body ="this is my test email body"; SmtpMail.SmtpServer ="localhost"; //your real server goes here SmtpMail.Send( mail ); [ VB.NET ] Dim mail As New MailMessage() mail.To ="me@mycompany.com" mail.From ="you@yourcompany.com" mail.Subject ="this is a test email." mail.Body ="this is my test email body" SmtpMail.SmtpServer ="localhost"'your real server goes here SmtpMail.Send(mail) 这里的smtpserver只能是那些不需要验证的smtp服务器,像126,sina,yahoo等等的邮箱,都需要验证,所以不能用。用这些邮箱发信后面会讲到 2,发送Html邮件 [ C# ] MailMessage mail =new MailMessage(); mail.To ="me@mycompany.com"; mail.From ="you@yourcompany.com"; mail.Subject ="this is a test email."; mail.BodyFormat = MailFormat.Html; mail.Body ="this is my test email body.<br><b>this part is in bold</b>"; SmtpMail.SmtpServer ="localhost"; //your real server goes here SmtpMail.Send( mail ); [ VB.NET ] Dim mail As New MailMessage() mail.To ="me@mycompany.com" mail.From ="you@yourcompany.com" mail.Subject ="this is a test email." mail.BodyFormat = MailFormat.Html mail.Body ="this is my test email body.<br><b>this part is in bold</b>" SmtpMail.SmtpServer ="localhost"'your real server goes here SmtpMail.Send(mail) 3,发送附件 [ C# ] MailMessage mail =new MailMessage(); mail.To ="me@mycompany.com"; mail.From ="you@yourcompany.com"; mail.Subject ="this is a test email."; mail.Body ="this is my test email body."; MailAttachment attachment =new MailAttachment( Server.MapPath( "test.txt" ) ); //create the attachment mail.Attachments.Add( attachment ); //add the attachment SmtpMail.SmtpServer ="localhost"; //your real server goes here SmtpMail.Send( mail ); [ VB.NET ] Dim mail As New MailMessage() mail.To ="me@mycompany.com" mail.From ="you@yourcompany.com" mail.Subject ="this is a test email." mail.Body ="this is my test email body." Dim attachment As New MailAttachment(Server.MapPath("test.txt")) 'create the attachment mail.Attachments.Add(attachment) 'add the attachment SmtpMail.SmtpServer ="localhost"'your real server goes here SmtpMail.Send(mail) 4,修改发件人和收件人的名称 比如发件人的地址是abc@126.com,我们用outlook收到信,From一栏里将直接显示abc@126.com. 能不能在From一栏里显示友好一点的名字呢? 比如显示Tony Gong 方法如下: [ C# ] MailMessage mail =new MailMessage(); mail.To =""John" <me@mycompany.com>"; mail.From =""Tony Gong" <you@yourcompany.com>"; mail.Subject ="this is a test email."; mail.Body ="this is my test email body."; SmtpMail.SmtpServer ="localhost"; //your real server goes here SmtpMail.Send( mail ); [ VB.NET ] Dim mail As New MailMessage() mail.To ="""John"" <me@mycompany.com>" mail.From ="""Tony Gong"" <you@yourcompany.com>" mail.Subject ="this is a test email." mail.Body ="this is my test email body." SmtpMail.SmtpServer ="localhost"'your real server goes here SmtpMail.Send(mail) 5,发送给多人 [ C# ] MailMessage mail =new MailMessage(); mail.To ="me@mycompany.com;him@hiscompany.com;her@hercompany.com"; mail.From ="you@yourcompany.com"; mail.Subject ="this is a test email."; mail.Body ="this is my test email body."; SmtpMail.SmtpServer ="localhost"; //your real server goes here SmtpMail.Send( mail ); [ VB.NET ] Dim mail As New MailMessage() mail.To ="me@mycompany.com;him@hiscompany.com;her@hercompany.com" mail.From ="you@yourcompany.com" mail.Subject ="this is a test email." mail.Body ="this is my test email body." SmtpMail.SmtpServer ="localhost"'your real server goes here SmtpMail.Send(mail) 6,用需要Smtp验证的邮箱发信 现在为了防止垃圾邮件,绝大部分Smtp服务器需要验证了 发信方法如下: [ C# ] MailMessage mail =new MailMessage(); mail.To ="me@mycompany.com"; mail.From ="abc@126.com"; mail.Subject ="this is a test email."; mail.Body ="Some text goes here"; mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1"); //basic authentication mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "abc"); //set your username here mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "your password"); //set your password here SmtpMail.SmtpServer ="smtp.126.com"; //your real server goes here SmtpMail.Send( mail ); [ VB.NET ] Dim mail As New MailMessage() mail.To ="me@mycompany.com" mail.From ="abc@126.com" mail.Subject ="this is a test email." mail.Body ="Some text goes here" mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1") 'basic authentication mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "abc") 'set your username here mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "Your Password") 'set your password here SmtpMail.SmtpServer ="smtp.126.com"'your real server goes here SmtpMail.Send(mail) 7,修改smtp服务器的端口,以及使用SSL加密 大部分smtp服务器的端口是25,但有些却不是 同时,绝大部分Smtp服务器不需要SSL登陆,有些却需要 比如Gmail,smtp端口是:465,同时支持SSL 代码如下: [ C# ] MailMessage mail =new MailMessage(); mail.To ="me@mycompany.com"; mail.From ="abc@126.com"; mail.Subject ="this is a test email."; mail.Body ="Some text goes here"; mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1"); //basic authentication mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "abc"); //set your username here mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "your password"); //set your password here mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport",465); mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", "true"); SmtpMail.SmtpServer ="smtp.126.com"; //your real server goes here SmtpMail.Send( mail ); [ VB.NET ] Dim mail As New MailMessage() mail.To ="me@mycompany.com" mail.From ="abc@126.com" mail.Subject ="this is a test email." mail.Body ="Some text goes here" mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1") 'basic authentication mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "abc") 'set your username here mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "Your Password") 'set your password here mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport",465) mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", "true") SmtpMail.SmtpServer ="smtp.126.com"'your real server goes here SmtpMail.Send(mail)