时代财富视觉 > 时代 > Asp.net2.0发送电子邮件

Asp.net2.0发送电子邮件

文:Ryo

        通常我们会用JMail之类的第三方工具,来解决邮件的接收和发送等问题的。但是如果客户的服务器是租用的不能安装这些工具的时候,就可以考虑用.net2.0自己写一个发送和接收邮件的程序。

        首先要引用以下命名空间:
using System.Net;
using System.Net.Mail;
using System.Net.Sockets;
然后首先是发送邮件的程序,比较简单,网上搜索到的也是大同小异:
 MailAddress from = new MailAddress(发邮件的email地址);
 MailAddress to = new MailAddress(收邮件的email地址);
 MailMessage mailobj = new MailMessage(from, to);
 mailobj.Subject = funcEncode(你的邮件标题);
 注意,这里的funcEncode(见附文)是对文章的标题进行编码转换,因为邮件系统使用的是MIME协议,通常会用到QP编码(标题等短字符)和base64编码(文章内容等长字符),如果不进行编码转换,收邮件的邮箱通常会接收中文邮件的时候出现乱码,或者会被过滤而收不到。
  
 mailobj.Body = “你的邮件正文”;
 mailobj.IsBodyHtml = true;
 mailobj.BodyEncoding = System.Text.Encoding.GetEncoding("GB2312");
 mailobj.Priority = MailPriority.High;
 如果有附件:
 if(aFileUpload.PostedFile.ContentLength > 0)
 {
  mailobj.Attachments.Add(new Attachment(aFileUpload.PostedFile.FileName));
 }
 根据自己的邮箱,选择发邮件的SMTP:
 SmtpClient smtp = new SmtpClient("smtp.163.com");
 smtp.UseDefaultCredentials = false;
 smtp.Credentials = new NetworkCredential(你的邮箱, 邮箱密码);
 smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
 smtp.Send(mailobj);
 
发邮件的程序基本完成了。
附:
 //对标题进行编码转换
  public static string funcEncode(string aStr)
  {
   string c = "";
   aStr = System.Web.HttpUtility.UrlEncode(aStr, System.Text.Encoding.GetEncoding("GB2312"));
   int j = 0;
   for(int i = 0; i < aStr.Length; i++)
   {
    if(aStr[i] == '%')
    {
     c += "=";
     j = i;
    }
    if(i - j < 3 && i - j > 0 && j != 0)
    {
     c += aStr[i].ToString().ToUpper();
    }
    else
    {
     if(aStr[i] != '%')
      c += aStr[i];
    }

   }
   
   //为了接收邮件不出现乱码,我加了一个标头,声明用GB2312转换而成的QP编码。
   return "=?GB2312?Q?" + c + "?=";
  }
 
 //以下就是在读邮件的时候用的解码。
  public static string funcDecode(string aStr)
  {
   string d = "";
   d = aStr.Replace("=", "%");
   d = System.Web.HttpUtility.UrlDecode(d, System.Text.Encoding.GetEncoding("GB2312"));
   return d;
 }

 

Posted @ 2007-10-30 13:39:43  阅读( 1555)  评论( 0)  
最新更新
  • Dotnet程序员快速成长之我见
  • 网页设计思维
  • 关于(X)HTML&CSS框架
  • 无刷新SELECT联动
  • 批量替换ntext类型字段的部分内容

  • 最新评论
    昵称 验证码
    <内容请勿超出2000个字,快捷键:Ctrl+Enter>
    个人简介
    聚合索引
    文章搜索

     2008年05月号 总第62期
    copyright@时代财富视觉