发邮件

来源:互联网 发布:概率分析软件 编辑:程序博客网 时间:2024/06/09 23:44

群发邮件,对于网站和一些推广应用,可谓不可或缺的“技能”

对于.NET而言,从2.0开始,发邮件已经是一件非常easy 的事了。下面我给出一个用C#群发邮件的实例,做了比较详细的注解,希望对有需要的朋友有所help。看了这篇BLOG,如果你还不会用.NET发邮件,要么你去死,要么还是你去死

Let’s Go !!

// 引入命名空间using System.Net;using System.Net.Mail;
SmtpClient smtp = new SmtpClient(); //实例化一个SmtpClientsmtp.DeliveryMethod = SmtpDeliveryMethod.Network; //将smtp的出站方式设为 Networksmtp.EnableSsl = false;//smtp服务器是否启用SSL加密
smtp.Host = "smtp.163.com"; //指定 smtp 服务器地址smtp.Port = 25;             //指定 smtp 服务器的端口,默认是25,如果采用默认端口,可省去
//如果你的SMTP服务器不需要身份认证,则使用下面的方式,不过,目前基本没有不需要认证的了smtp.UseDefaultCredentials = true;//如果需要认证,则用下面的方式smtp.Credentials = new NetworkCredential("邮箱帐号@163.com", "邮箱密码");
MailMessage mm = new MailMessage(); //实例化一个邮件类
mm.Priority = MailPriority.High; //邮件的优先级,分为 Low, Normal, High,通常用 Normal即可
mm.From = new MailAddress("邮箱帐号@163.com", "真有意思", Encoding.GetEncoding(936));//收件方看到的邮件来源;//第一个参数是发信人邮件地址//第二参数是发信人显示的名称//第三个参数是 第二个参数所使用的编码,如果指定不正确,则对方收到后显示乱码//936是简体中文的codepage值

注:上面的邮件来源,一定要和你登录邮箱的帐号一致,否则会认证失败

mm.ReplyTo = new MailAddress("test_box@gmail.com", "我的接收邮箱", Encoding.GetEncoding(936));//ReplyTo 表示对方回复邮件时默认的接收地址,即:你用一个邮箱发信,但却用另一个来收信//上面后两个参数的意义, 同 From 的意义
mm.CC.Add("a@163.com,b@163.com,c@163.com");//邮件的抄送者,支持群发,多个邮件地址之间用 半角逗号 分开//当然也可以用全地址,如下:mm.CC.Add(new MailAddress("a@163.com", "抄送者A", Encoding.GetEncoding(936)));mm.CC.Add(new MailAddress("b@163.com", "抄送者B", Encoding.GetEncoding(936)));mm.CC.Add(new MailAddress("c@163.com", "抄送者C", Encoding.GetEncoding(936)));mm.Bcc.Add("d@163.com,e@163.com");//邮件的密送者,支持群发,多个邮件地址之间用 半角逗号 分开//当然也可以用全地址,如下:mm.CC.Add(new MailAddress("d@163.com", "密送者D", Encoding.GetEncoding(936)));mm.CC.Add(new MailAddress("e@163.com", "密送者E", Encoding.GetEncoding(936)));
mm.Sender = new MailAddress("xxx@xxx.com", "邮件发送者", Encoding.GetEncoding(936));//可以任意设置,此信息包含在邮件头中,但并不会验证有效性,也不会显示给收件人//说实话,我不知道有啥实际作用,大家可不理会,也可不写此项
mm.To.Add("g@163.com,h@163.com");//邮件的接收者,支持群发,多个地址之间用 半角逗号 分开//当然也可以用全地址添加mm.To.Add(new MailAddress("g@163.com", "接收者g", Encoding.GetEncoding(936)));mm.To.Add(new MailAddress("h@163.com", "接收者h", Encoding.GetEncoding(936)));
mm.Subject = "这是邮件标题"; //邮件标题mm.SubjectEncoding = Encoding.GetEncoding(936);// 这里非常重要,如果你的邮件标题包含中文,这里一定要指定,否则对方收到的极有可能是乱码。// 936是简体中文的pagecode,如果是英文标题,这句可以忽略不用
mm.IsBodyHtml = true; //邮件正文是否是HTML格式mm.BodyEncoding = Encoding.GetEncoding(936);//邮件正文的编码, 设置不正确, 接收者会收到乱码mm.Body = "<font color="red">邮件测试,呵呵</font>";//邮件正文
mm.Attachments.Add( new Attachment( @"d:a.doc", System.Net.Mime.MediaTypeNames.Application.Rtf ) );//添加附件,第二个参数,表示附件的文件类型,可以不用指定//可以添加多个附件mm.Attachments.Add( new Attachment( @"d:b.doc") );
smtp.Send( mm ); //发送邮件,如果不返回异常, 则大功告成了。
m
1.了解发送邮件的三种方式 
2.实例介绍使用client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.PickupDirectoryFromIis
3.如何设定本机IIS的SMTP服务器
1.了解发送邮件的三种方式
第一:client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
//通過遠程SMTP服務器傳送該郵件,這裡的network表示你要使用的远程SMTP服務器。
第二:client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.PickupDirectoryFromIis;
//通過本機SMTP服務器傳送該郵件,这里的PickupDirectoryFromIis表示你的邮件会通过本机IIS的SMTP服務器传送你的邮件。所以如果使用该项一定要设定在SMTP服務器上设定好你要转到的服务器的地址。下文会详细介绍。
第三:client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.SpecifiedPickupDirectory;
//表示电子邮件会被复制到System.Net.Mail.SmtpDeliveryMethod.PickupDirectorylocation所指定的目录中。以便有其他程序来执行发送该邮件。

2.实例介绍使用client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.PickupDirectoryFromIis传送邮件。
(1)mail.aspx的代码如下(直接粘贴):
Java代码 复制代码
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="mail.aspx.cs" Inherits="mail" %>   
  2.   
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">   
  4.   
  5. <html xmlns="http://www.w3.org/1999/xhtml" >   
  6. <head runat="server">   
  7.     <title>mail to users</title>   
  8. </head>   
  9. <body>   
  10.     <form id="form1" runat="server">   
  11.     <div>   
  12. <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>   
  13.     </div>   
  14.     </form>   
  15. </body>   
  16. </html>  

(2)mail.aspx.cs代码如下:
注意:一般公司 都是代理上网的。所以如果使用该项。只能发送内部网的邮件。
但是并不是说该项不能发送外部网的邮件。而是代理封锁的原因。
Java代码 复制代码
  1. using System;   
  2. using System.Data;   
  3. using System.Configuration;   
  4. using System.Collections;   
  5. using System.Web;   
  6. using System.Web.Security;   
  7. using System.Web.UI;   
  8. using System.Web.UI.WebControls;   
  9. using System.Web.UI.WebControls.WebParts;   
  10. using System.Web.UI.HtmlControls;   
  11. using System.Net;   
  12. using System.Net.Mail;   
  13. public partial class mail : System.Web.UI.Page   
  14. {   
  15.     protected void Page_Load(object sender, EventArgs e)   
  16.     {   
  17.         //SendMail(发件者, 收件者, 主旨, 内容, 主机,发件者昵称, 密码 ,附件)   
  18.         SendMail("sunjie@yyhj.com.cn""lilei.luo@yyhj.com.cn""主旨""邮件内容测试""exhj.yyhj.com.cn""孙节""yyhj""");   
  19.     }   
  20.     public void SendMail(string send, string recieve, string subject, string mailbody, string host, string uname, string pwd, string strFileName)   
  21.     {   
  22.         //生成一个   使用SMTP发送邮件的客户端对象   
  23.         System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient();   
  24.         //生成一个主机IP   
  25.         //client.Port = 25; //587, 465, 995   
  26.         client.Host = host;   
  27.   
  28.         //表示不以当前登录用户的默认凭据进行身份验证   
  29.         client.UseDefaultCredentials =true ;   
  30.         //包含用户名和密码   
  31.         if (uname != "")   
  32.         {   
  33.             client.Credentials = new System.Net.NetworkCredential(uname, pwd);   
  34.         }   
  35.   
  36.         //指定如何发送电子邮件。   
  37.         client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.PickupDirectoryFromIis;   
  38.         //通过本机SMTP服务器传送该邮件,   
  39.         //其实使用该项的话就可以随意设定“主机,发件者昵称, 密码”,因为你的IIS服务器已经设定好了。而且公司内部发邮件是不需要验证的。   
  40.   
  41.         System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();   
  42.         message.To.Add(recieve);   
  43.         message.From = new System.Net.Mail.MailAddress(send, uname, System.Text.Encoding.UTF8);   
  44.         message.Subject = subject;   
  45.         message.Body = mailbody;   
  46.         //定义邮件正文,主题的编码方式   
  47.         message.BodyEncoding = System.Text.Encoding.GetEncoding("UTF-8");   
  48.         message.SubjectEncoding = System.Text.Encoding.GetEncoding("UTF-8");   
  49.         //获取或设置一个值,该值指示电子邮件正文是否为   HTML。   
  50.         message.IsBodyHtml = false;   
  51.         //指定邮件优先级   
  52.         message.Priority = System.Net.Mail.MailPriority.High;   
  53.         //添加附件   
  54.         //System.Net.Mail.Attachment data = new Attachment(@"E:/9527/tubu/PA260445.JPG", System.Net.Mime.MediaTypeNames.Application.Octet);   
  55.         if (strFileName != "" && strFileName != null)   
  56.         {   
  57.             Attachment data = new Attachment(strFileName);   
  58.             message.Attachments.Add(data);   
  59.         }   
  60.   
  61.         try  
  62.         {   
  63.             //发送   
  64.             client.Send(message);   
  65.            Label1.Text = "发送成功!";   
  66.         }   
  67.         catch (System.Net.Mail.SmtpException ex)   
  68.         {   
  69.             Label1.Text ="发送失败:"+ ex.Message;   
  70.         }   
  71.     }   
  72.     }  

2.介绍使用client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network传送邮件。
使用该项的话。你的电脑首先必须是直接链接外网的。
那就直接把mail.aspx.cs里的client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.PickupDirectoryFromIis;换成client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
然后要设定的就是
//SendMail(发件者, 收件者, 主旨, 内容, 主机,发件者昵称, 密码 ,附件)
SendMail("loeley@gmail.com", "sy4l@163.com", "主旨", "12.37郵件內容", "smtp.163.com", "loeley", "81859505", "");
转自:http://hi.baidu.com/lslyl/blog/item/ba67366ef4202ddd80cb4afa.html
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 开服装店批发服装的吊牌怎么办 天虹的鞋一天就坏了怎么办 车被钥匙划了露底漆了怎么办 数控铣z轴回不了参考点怎么办 白色衣服被黑色衣服染了怎么办 夏天出汗衣服粘身上都是毛毛怎么办 支付宝租的手机坏了怎么办 新买的衣服布料扎人怎么办 洗衣服的时候卫生纸沾裤子上怎么办 洗衣服给白衣服染上色了怎么办 不小心喝了游泳池的水怎么办 铁水中硅的含量高了怎么办 视频拍摄单人变双人是怎么办的 四季青进来的货比淘宝还贵怎么办 淘宝还没收货价格买贵了怎么办 在微信上赌博庄跑了怎么办 微信赌博输了10000多怎么办 欠了信用卡说来来家里调查怎么办 没用过的超市购物卡丢了怎么办 体验服抢号成功手机号填错了怎么办 起亚kx3一键启动钥匙没电怎么办 逆战下载的时候显示文件损坏怎么办 移动公司买手机送话费套路怎么办 开通京东白条身份信息被占用怎么办 丰巢快递柜把东西寄丢了怎么办? 圆通快递把我寄的东西弄丢了怎么办 快递把我寄出去的东西弄丢了怎么办 京东被盗刷都是到付怎么办 订机票时护照号错了怎么办 请问网上不小心点了扣话费了怎么办 不小心被中国移动扣了话费怎么办 京东买东西已经付款了说无货怎么办 不小心提交了两次中信信用卡怎么办 淘宝买东西扣了银行卡两次钱怎么办 拼多多同一个订单支付了两次怎么办 京东手机号服务密码忘记了怎么办 京东买的东西转手给别人保修怎么办 改了无线网密码还是上不去网怎么办 买的京东e卡丢了怎么办 已认证未抵扣的发票发生退货怎么办 办的消费卡不给退怎么办