c#发邮件小程序

1:发邮件功能如下:

  a:批量添加邮箱

  b:添加多个附件、并支持查看附件信息和移除附件。

2:因为免费,所以126,136服务器人家对咱 有控制:(我测试了126,136邮件)

  1:邮箱虽已分组发送,但一次只能发送35个之内。

  2:附件大小控件在50M。

3:功能采用c#的SmtpClient和MailMessage实现,核心源代码如下:


批量导入邮箱:
   
		void SendsClick(object sender, EventArgs e)
		{
			portCount = 0;
			textBox_addressee.Text = "";
			this.openFile.Filter = "txt文件(*.txt)|*.txt"; 
			if (this.openFile.ShowDialog() == DialogResult.OK)
		   	{
		       string picFileName = this.openFile.FileName;
		       if(string.IsNullOrEmpty(picFileName))
		       		return;
		       StreamReader sr = new StreamReader(picFileName,Encoding.Default);
		       
		       string mail = sr.ReadToEnd();
		       string inpa = @"\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+";
		       MatchCollection collection = Regex.Matches(mail,inpa,RegexOptions.ExplicitCapture|RegexOptions.IgnoreCase);
		       foreach (Match m in collection) {
			       	//if(!textBox_addressee.Text.Contains(m.Value)){
			       		textBox_addressee.AppendText(m.Value+",");
			       		portCount++;
			       	//}
		       }
		       MessageBox.Show("共找到:"+collection.Count+" 可用邮件,已导入:"+portCount+" 位联系人");
			}
		}
添加附件:
		void Button_choiceClick(object sender, EventArgs e)
		{
			this.openFile.Filter = "*.*|*.*"; 
			if (this.openFile.ShowDialog() == DialogResult.OK)
		   	{
		       string PicFileName = this.openFile.FileName; 
		       if(!string.IsNullOrEmpty(PicFileName) && !user.Files.ContainsValue(PicFileName)){
		       		fileLength += new FileInfo(PicFileName).Length;		       	
		       		if(fileLength>=(1024*1024*50))
					{
						MessageBox.Show("本次传输不能超过50M");
						fileLength -= new FileInfo(PicFileName).Length;//还原
						return;
					}
		       		comboBox_list.Items.Add(Path.GetFileName(PicFileName));
		           	user.Files.Add(Path.GetFileName(PicFileName),PicFileName);
		           	fileSize.Text = string.Format("已用{0}M,还剩下{1}M",fileLength/1024/1024,(49-(fileLength/1024/1024)));
	           	}
		    }
		}
分组邮件
		public void runTask()
		{
			MailService mailService = new MailService();
			String[] addresss = Regex.Split(user.Address,",");
			
			//求出分组次数		
			IList array = new ArrayList();
			StringBuilder sbTemp = null;	
			for (int y = 0; y < addresss.Length; y++) {
					if(sbTemp==null)
					{
						sbTemp = new StringBuilder();
					}
					sbTemp.Append(addresss[y]).Append(",");
					if(y!=0 && (y+1)%35==0){
						array.Add(sbTemp);
						sbTemp = null;
					}
			}	
			//剩下的
			if(sbTemp!=null && sbTemp.ToString().Contains("@")){
				array.Add(sbTemp);
			}
			MessageBox.Show("分"+array.Count+"组进行发送");
			foreach (StringBuilder sb in array) {
				user.Address = sb.ToString();
				String tag = mailService.sendMail(user);
				if(tag==massText.success)
				{
					isSendTrue = true; 
					errorMass.Text = massText.success;
					errorMass.ForeColor = Color.LimeGreen;
				}
				else
				{
					errorMass.Text = tag;
					errorMass.ForeColor = Color.Red;
				}
			}
		}
发邮件:	
		public String sendMail(User user){
			String tag = massText.success;
			user.Username = user.Username.Replace(user.Server,"");
			
			//服务器
			SmtpClient sc = new SmtpClient();
			sc.Host="smtp."+user.Server.Replace("@","");
			sc.DeliveryMethod = SmtpDeliveryMethod.Network;
			sc.UseDefaultCredentials = true;			
			sc.Credentials = new NetworkCredential(user.Username,user.Password);
			
			//邮件内容
			MailMessage message = new MailMessage();
			message.From = new MailAddress(string.Format("{0}{1}",user.Username,user.Server));
			
			try
			{
				string[] address = Regex.Split(user.Address+",",",");
				for (int i = 0; i < address.Length; i++) {
					if(!string.IsNullOrEmpty(address[i]))
					{
						if(!b){
							message.To.Add(address[i]);
						}else{
							if(i%4==0)
							message.CC.Add(address[i]);
							else
							message.Bcc.Add(address[i]);
						}
					}
						
				}
			}
			catch(Exception)
			{
				return massText.mailTitle;
			}
			
			//附件
			message.Subject = user.Title;
			message.Body = user.Context;
			Dictionary<String, String>.KeyCollection keyColl = user.Files.Keys;
			
			foreach (String fileName in keyColl) {
				string fileNamePath = user.Files[fileName];
				message.Attachments.Add(new Attachment(fileNamePath));
			}
			
			//设置编码、发送级别
			message.BodyEncoding = Encoding.GetEncoding("utf-8");
			message.SubjectEncoding = Encoding.GetEncoding("utf-8");
			message.IsBodyHtml = true;
			message.Priority = MailPriority.Normal;
			
			/*委托任务,出现等待页面
			Wait wait = null;
			((Action)delegate(){
			 	wait = new Wait();
			 	Thread.Sleep(1000);
			 	this.Invoke((Action)delegate(){
			 	    try {
			 	        wait.ShowDialog();
			 	        Thread.Sleep(2000);
						sc.Send(message);	
					} catch (Exception) {
						tag = massText.failure;
					}
			 	});
			 	
			 }).BeginInvoke(new AsyncCallback(theout),wait);*/
			sc.Send(message);	
			Thread.Sleep(1000);
			message.Dispose();
			sc.Dispose();
			b = true;
			return tag;
		}

程序执行代码如下:





源代码下载地址:http://download.csdn.net/detail/u012892431/7120379 点击打开链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值