.NET 发送邮件(C#)
2010-03-21 11:46
363 查看
配置web.config,当然这配置文件非必须的,你可以直接写在Code中,但是这样对以后维护比较麻烦。
首先看一下配置文件:(从mailSettings开始)
引入两个命名空间:
主要发送函数代码:(稍微修改就可以为你所用了)
奇怪的是,我用QQ邮箱时不行,不知道为什么,SMTP都开通,而且之前用PHP SMTP时发送也成功,如果你用QQ邮箱不行,请更换为网易的试试。
首先看一下配置文件:(从mailSettings开始)
<system.net> <configuration> .... .... <!--如果是第三方smtp服务器,需要指定userName 和 password,并根据host指定发件人邮件地址from 测试发现from值必须是userName值加上指定的smpt服务器才行,而且是必须指定的 如果是本机smtp服务器,只需指定defaultCredentials="true"即可--> <mailSettings> <smtp deliveryMethod="Network" from="changxxx@163.com"> <network host="smtp.163.com" port="25" userName="changxxx@163.com" password="xxxxx"/> </smtp> </mailSettings> </system.net> </configuration>
引入两个命名空间:
using System.Web.Configuration; using System.Net.Configuration;
主要发送函数代码:(稍微修改就可以为你所用了)
public void sendMail(string subject, string body) { Configuration config = WebConfigurationManager.OpenWebConfiguration(HttpContext.Current.Request.ApplicationPath); MailSettingsSectionGroup settings = (MailSettingsSectionGroup)config.GetSectionGroup("system.net/mailSettings"); string username = settings.Smtp.Network.UserName; string password = settings.Smtp.Network.Password; string smtpserver = settings.Smtp.Network.Host; string frommail = settings.Smtp.From; string tomail = settings.Smtp.From; MailAddress EmailFrom = new MailAddress(frommail); MailAddress EmailTo = new MailAddress(tomail); MailMessage Email = new MailMessage(EmailFrom, EmailTo); Email.Priority = MailPriority.High; Email.Subject = subject; Email.Body = body; //添加抄送电子邮件 //Email.CC.Add("这里就是你发送邮件的目标拉,填写抄送收件人的邮件地址"); // string file = Server.MapPath("d://") + "vs2008 key.txt";//附件路径 // Attachment data = new Attachment(file,System.Net.Mime.MediaTypeNames.Application.Octet); // Add time stamp information for the file. // System.Net.Mime.ContentDisposition disposition = data.ContentDisposition; // disposition.CreationDate = System.IO.File.GetCreationTime(file); // disposition.ModificationDate = System.IO.File.GetLastWriteTime(file); // disposition.ReadDate = System.IO.File.GetLastAccessTime(file); // Add the file attachment to this e-mail message. // Email.Attachments.Add(data); SmtpClient Client = new SmtpClient(smtpserver); //验证 (Credentials 凭证) Client.Credentials = new System.Net.NetworkCredential(username, password); //处理待发的电子邮件的方法 (Delivery 发送,传输) Client.DeliveryMethod = SmtpDeliveryMethod.Network; try { Client.Send(Email); Response.Write("已发送成功啦"); Response.Redirect("send_mail_success.html"); } catch (SmtpFailedRecipientsException ex) { for (int i = 0; i < ex.InnerExceptions.Length; i++) { SmtpStatusCode status = ex.InnerExceptions[i].StatusCode; if (status == SmtpStatusCode.MailboxBusy || status == SmtpStatusCode.MailboxUnavailable) { Response.Write("Delivery failed - retrying in 5 seconds."); System.Threading.Thread.Sleep(5000); Client.Send(Email); } else { Response.Write("Failed to deliver message to {0}" + ex.FailedRecipient[i].ToString().Trim() + ""); Response.Redirect("send_mail_fail.html"); } } } }
奇怪的是,我用QQ邮箱时不行,不知道为什么,SMTP都开通,而且之前用PHP SMTP时发送也成功,如果你用QQ邮箱不行,请更换为网易的试试。
相关文章推荐
- 使用.net(C#)发送邮件学习手册(带成功案例)
- VS或C#或.NET环境下的发送邮件实现方法
- .Net锦囊-C#,.Net发送邮件三种方法…
- C#实现.Net对邮件进行DKIM签名和验证,支持附件,发送邮件签名后直接投递到对方服务器(无需己方邮件服务器)
- .net邮件发送[c#]
- .Net锦囊-C#,.Net发送邮件三种方法…
- 使用.net(C#)发送邮件(带成功案例)
- 在.NET中发送邮件,使用回执功能中遇到问题的解决方法[在NOTES服务器上,C#,.NET2.0环境]
- 使用.net(C#)发送邮件学习手册(带成功案例)
- .net C#发送邮件
- .Net(C#)最简单的邮件发送案例
- 使用.net(C#)发送邮件学习手册(带成功案例
- .Net锦囊-C#,.Net发送邮件三种方法(Localhost,SMTP,SSL-SMTP)
- .NET C# 发送邮件内容嵌入图片
- .net中实现发送邮件(C#)
- .NET 使用C#两种发送邮件的方法
- .NET中如何用Outlook自动发送邮件(C#)
- .net中发送邮件的方法(C#)
- .NET C# 异步发送 要求回执 嵌入图片资源 自定义邮件头 失败通知 html/文本双视图 支持 notes 的邮件
- .NET C# 发送邮件内容嵌入图片