WEB开发网
开发学院WEB开发ASP Asp.Net 发送 smpt邮件 阅读

Asp.Net 发送 smpt邮件

 2009-12-23 10:41:25 来源:WEB开发网   
核心提示:using System.Web.Mail ; PRivate void Button1_Click(object sender, System.EventArgs e){ //实例化MailMessage对象 System.Web.Mail.MailMessage mail=new System.Web.Mail.
using System.Web.Mail ;
PRivate void Button1_Click(object sender, System.EventArgs e)
 {
 
  //实例化MailMessage对象
  System.Web.Mail.MailMessage mail=new System.Web.Mail.MailMessage();

  //定义邮件的发送地址 , 可以随便填一个不存在的地址,垃圾邮件就是这样子做的吧^_^
  mail.From="widebright@widebright.com";

  //定义邮件的接收地址
  //设置以分号分隔的收件人电子邮件地址列表
  mail.To="gmd20@163.com";

  //定义邮件的暗送地址
  //设置以分号分隔的电子邮件地址列表
  //mail.Bcc="ddd@sina.com";

  //定义邮件的抄送地址
  //设置以分号分隔的电子邮件地址列表
  //mail.Cc="ddd@x.cn;ddd@eyou.com

  //定义邮件的主题
  mail.Subject="widebright 的邮件测试 asp.net发送邮件学习";

  //设置电子邮件正文的内容类型
  //在这里我们以HTML的格式发送
  mail.BodyFormat=System.Web.Mail.MailFormat.Html;

  //设置电子邮件的正文
  mail.Body="测试一下,看行不行哟";

  
   //用 @ 引起来的字符串以 @ 开头,并且也用双引号引起来。例如:
   //用 @ 引起来的优点在于换码序列“不” 被处理,这样就可以轻松写出字符串,例如一个完全限定的文件名:
   //@"c:\Docs\Source\a.txt" // rather than "c:\\Docs\\Source\\a.txt"
   //若要在一个用 @ 引起来的字符串中包括一个双引号,请使用两对双引号:
   // @"""Ahoy!"" cried the captain." // "Ahoy!" cried the captain.
  // @ 符号的另一种用法是使用碰巧成为 C# 关键字的被引用的 (/reference) 标识符。
   // http://msdn2.microsoft.com/zh-CN/library/362314fe(VS.80).aspx

      //设置一个附件
   System.Web.Mail.MailAttachment mailAttachment=new System.Web.Mail.MailAttachment(@" F:\dddddd.txt");
  
  //邮件附加上一个附件
    mail.Attachments.Add(mailAttachment);
       
  //多个附件在这里继续添加
       mailAttachment=new System.Web.Mail.MailAttachment(@"F:\asp_net 发送邮件代码_百度知道.mht");
       mail.Attachments.Add(mailAttachment);


  //SMTP服务器 ,因为用的是本机架设的,所以写127.0.0.1 , 如果连接的是其他服务器的话,像163邮箱,要写smpt.163.com
   System.Web.Mail.SmtpMail.SmtpServer="127.0.0.1";  

  //说是许多SMTP服务器都需要身份验证 ,防止垃圾邮件,好像叫做扩展smpt协议什么的。
  //但这里连接的是自己的smpt服务器,简单的smpt,所以也没有什么验证了。
  //至于从本机的SMPT服务器再把邮件发送到163或者其他邮箱 的时候要不要验证就不知道了, 实测时邮件时可以发到
  //@163.com , @eyou.com,@x.cn的,也不用什么验证。

  //验证
  //mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
  //登陆名
  //mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "widebright");
  //登陆密码
  //mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassWord", "widebright");

  //发送
  System.Web.Mail.SmtpMail.Send(mail);
 
 }


上面的代码是采用 .Net 中提供的 System.Web.Mail.SmtpMail类来发送邮件,自动连接
SMPT服务器来发送邮件。以有的人是自己用TCP类,或者socket写代码实现smpt协议,不过那样子
要处理很多编码啊,协议啊等,比较麻烦。我以前用VB时也做过一个,smpt协议比较简单,不过
那些附件的编码就还要写很多代码。
  
   这里只是smtp发信代码而已,如果要做收信等 好要pop3  服务器提供对pop3协议的支持才行。
smtp服务器是安装完IIS就有的了,pop3切没有自带,安装起来也会麻烦一些吧,没试过!
  
SMTP服务器的配置

  我是安装完IIS 5.1后就自己启用了,在IIS信息服务管理器中配置一下就可以了。
1。 在 Domains 里面增加几个域名:右键当击“Default SMTP Virtual Server” 中的Domains
选 “New” 新建, ---》 Domain Type 选 “Remote”,
Domain name 分别填 163.com eyou.com x.cn, 因为我要给这些服务器发邮件,和上面代码中


===============
  mail.To="gmd20@163.com";
===============

相对应的,你要发送邮件给谁,就要设置相应的域名,不设置的时候邮件是发送不出去的。
2。 右键单击 163.com 等域名,选 “属性” ,勾上 “Allow incoming mail to be relayed to this domain”,勾上后邮件才能发送出去,否则还是有错。
下面的 Route domain 选默认的 Use DNS to route to domain 就可以了。


     关键是在IIS中要设置好对应的smtp服务器域名,就可以发送邮件了。我在asp.net页面上测试了
好几个邮箱都是可以正常发送出去的。 像163邮箱一点按钮发送,就会收得到了。

刚发现可以添加
*.com  
*.net
*cn
域名来匹配大多数的邮箱。
如增加了*.com  域名之后,就可以给 @163.com ,@eyou.com发信了
   


  

在 Windows xp+ visual sutdio 2003 + iis5.1 环境下测试通过,
不过只有发现发送到新浪邮箱的信件收不到,不知道为什么。

出现 SMTP典型错误 550 5 7 1 Uable to relay 
则除了domains 域名没有设置好还有可能是
SMTP虚拟服务器的设置中没有选中“allow computers which successfully authenticate to relay”复选框。如下所示,
先打开SMTP Virtual Server的属性页的access页:
然后点击“Relay”按钮,看“Allow all computers which successfully authenticate to relay,regardless of the list above”是否选中:


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/kgdlin/archive/2007/03/23/1539120.aspx



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yuff0408/archive/2009/12/23/5060035.aspx

Tags:Asp Net 发送

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接