技术开发 频道

深入解析ASP.NET中实现发送电子邮件

 2.提供有关SMTP服务器的详细信息

  当从Outlook或GMail中把一个电子邮件发送给一个朋友时,该电子邮件程序使用一个中继服务器建立一个连接并且发送该电子邮件消息的内容(连同其它一些消息,例如电子邮件创建日期,电子邮件格式(文本或HTML,等等),接收者,等等)。中继服务器接收该消息,然后连接到接收者的SMTP服务器并且发送该消息。一旦该消息被提交,接收者就能够(稍后)使用一种不同的协议(例如IMAP或POP3)来提取该消息。

  因此,为了从一个ASP.NET页面中发送一个电子邮件,我们需要提供给SmtpClient类关于该中继服务器的消息。借助于中继服务器的主机名,你能够指定下列信息:相应的端口号(典型地使用端口 25),当把你的电子邮件消息内容连接到中继服务器时是否使用SSL,以及认证证书(如果必要的话)等。作为选择,如果你可以在你的web服务器上安装一个本地SMTP服务,它可以周期性地监视一个特别的"drop-off"目录,发送出现在那个目录中的任何消息。你能够配置是否该SmtpClient类把它的电子邮件消息传送给一个单独的中继服务器或是否能通过DeliveryMethod属性把该邮件投入到一个指定的检出目录下。

  SmtpClient类使用的中继服务器信息能够以编程方式通过SmtpClient类的属性指定,也可以被集中在Web.config文件中。为了使用 Web.config方法,你可以在<configuration>元素内添加一个<system.net>元素。然后,添加一个包含一个<smtp>元素(其设置是在它的<network>子元素中指定的)的<mailSettings>元素。请参考如下的代码: 

<configuration>
  
<system.net>
    
<mailSettings>
      
<smtp>
        
<network host="smtp.***.com" password="***" port="25" userName="***" defaultCredentials="false"/>
      
</smtp>
    
</mailSettings>
  
</system.net>
  
<system.web> ...  </system.web>
</configuration>

 

  其中的host属性包含relayServerHostname。如果你正使用一个外部中继服务器,那么该relayServerHostname可能是类似于smtp.yourisp.com的内容。如果该中继服务器的端口数字是除典型的端口25以外的其它数,那么你可以通过port属性来指定它。大多数外部中继服务器都要求实现某种类型的认证(为了防止匿名垃圾邮件通过中继发送他们的垃圾信息)。在需要用户名/口令认证时需要提供userName和 password属性。

  只有SmtpClient属性的一个子集能够通过Web.config中的设置指定。为了定制其它的SmtpClient属性(例如EnableSsl,Timeout,等等),你可以在发送电子邮件时以编程方式设置它们。

0
相关文章