博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
asp.net内置对象Mail的实例介绍---自制简单的邮件发送网站
阅读量:6278 次
发布时间:2019-06-22

本文共 5741 字,大约阅读时间需要 19 分钟。

好久没写博客了,今天闲着没事在家做了个简单的asp.net的内置对象Mail的例子,和大家分享下。欢迎大家交流,给出建议。谢谢!

主要界面:

前台aspx代码:

View Code
1 
2

邮件发送

3
4
5
6
7
46
47
8 用户名      :
@ 10
11
163.com
12
sina.com
13
qq.com
14
  服务器选择 15
16
17 登录密码   :
19  
20
21 收信人邮箱:
23  
24
25 主题: 26
27
28 正文:邮件内容不宜超过200字!
29 30
31 添加附件: 32 33
34  
35
36 已添加附件:
37
38
39                              40
42             43
45

后台.cs文件代码:

View Code
1 using System;  2 using System.Collections.Generic;  3 using System.Linq;  4 using System.Web;  5 using System.Web.Mail;//引用mail的命名空间  6 using System.Text.RegularExpressions;//提供Regex类,表示不可变的正则表达式。  7 using System.Web.UI;  8 using System.Web.UI.WebControls;  9 10 public partial class _Default : System.Web.UI.Page 11 {
12 public static string Password = ""; 13 public static bool First = true; 14 protected void Page_Load(object sender, EventArgs e) 15 {
16 17 } 18 19 protected void btnSendEmail_Click(object sender, EventArgs e) //发送邮件 20 {
21 MailMessage myMail = new MailMessage(); //新建一个mail的对象 22 myMail.To = this.txtTo.Text; //收件人邮箱地址 23 myMail.From = this.txtUserName.Text+"@"+this.dlistSmtp.Text;//发件人邮箱地址 24 myMail.Subject = this.txtTitle.Text; //邮件主题 25 myMail.Body = this.txtContent.Value; //邮件正文 26 myMail.BodyFormat = MailFormat.Html; //邮件格式 27 myMail.Priority = MailPriority.High; // 设置为高级优先权 28 myMail.BodyEncoding = System.Text.Encoding.GetEncoding("gb2312"); //设置邮件编码类型 29 SmtpMail.SmtpServer = "smtp."+this.dlistSmtp.SelectedValue.ToString();//服务器名称 30 if (this.lbl_showAttach.Text != "") 31 {
32 this.lbl_showAttach.Text = this.lbl_showAttach.Text.Remove(this.lbl_showAttach.Text.LastIndexOf(";"), 1);//去掉最后一个分号 33 string[] attachs = Regex.Split(this.lbl_showAttach.Text, ";"); //字符串按分号分隔存储在数组中 34 for (int i = 0; i < attachs.Length - 1; i++) 35 {
36 //建立附件对象实例,保存在服务器上 37 MailAttachment ma = new MailAttachment(Server.MapPath("upAttach\\") + attachs[i]); 38 //添加附件 39 myMail.Attachments.Add(ma); 40 } 41 } 42 43 44 myMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1"); 45 myMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", this.txtUserName.Text.Trim()); 46 myMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", Password); 47 try 48 {
49 SmtpMail.Send(myMail); 50 Response.Write(""); 51 } 52 catch 53 {
54 Response.Write(""); 55 } 56 finally 57 {
58 this.txtTitle.Text = ""; 59 this.txtContent.Value = ""; 60 this.lbl_showAttach.Text = ""; 61 } 62 } 63 64 protected void btnExitEmail_Click(object sender, EventArgs e) //取消发送 65 {
66 this.txtTitle.Text = ""; 67 this.txtContent.Value = ""; 68 this.lbl_showAttach.Text = ""; 69 } 70 71 protected void btnAddFile_Click(object sender, EventArgs e) //添加附加 72 {
73 if (First == true) 74 {
75 Password = this.txtPassword.Text; 76 } 77 //获得上传文件的完全名称 78 string fullFilename = this.FileUpload1.PostedFile.FileName; 79 //获得上传文件的文件名+1表示匹配到最后一个字符 80 string fileName = fullFilename.Substring(fullFilename.LastIndexOf("\\") + 1); 81 this.FileUpload1.SaveAs(Server.MapPath("upAttach\\") + fileName); 82 this.lbl_showAttach.Text += fileName + ";"; 83 First = false; 84 } 85 }

其中SMTP是简单邮件传输协议(Simple Mail Transfer Protocol)的简称,是您发送Email所必须用到的。默认端口是25,

常用的免费SMTP服务器如下,用户名和密码就是您Email的帐号对应

 

  邮箱 对应的免费SMTP服务器
01 @163.com smtp.163.com
02 @126.com smtp.126.com
03 Sina免费邮件 smtp.sina.com.cn
04 Gmail smtp.gmail.com (SSL)
05 @sohu.com smtp.sohu.com
06 21cn邮箱 smtp.21cn.com
07 Yahoo中国免费邮件 smtp.mail.yahoo.com.cn
smtp.yahoo.cn
08 @hotmail.com/@msn.com 不支持SMTP
09 @qq.com smtp.qq.com,需要到邮箱里先设置开通
10 263电子邮局 smtp.263.net

我在做的过程中碰到了几个难点和大家分享下:

1.服务器拒绝服务

解决方法:添加发送人登录邮箱,获取服务器请求

myMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");myMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", this.txtUserName.Text.Trim());myMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", Password);

 2.添加附件的时候,点击添加的按钮,导致上面文本框中的密码清空,使1中的值不能正常

解决方法:在初始的时候设置全局静态变量,在添加附件前保存密码的值(最笨的办法了,有好的方法欢迎交流)

public static string Password = "";    public static bool First = true;

 

if (First == true){      Password = this.txtPassword.Text;} //首次添加附件的时候改变bool的值

 这样基本问题就解决了,还是挺简单的。我试过新浪和QQ邮箱,都是可以的。但是QQ的好像

要开通邮件的pop3 和smtp协议(首次使用的时候,会发邮件到邮箱提醒你改的,这边就不介绍了,很简单的)

转载地址:http://xryva.baihongyu.com/

你可能感兴趣的文章
SharePoint 2016 - 安装QuickFlow2013
查看>>
git error Another git process seems to be running in this repository
查看>>
webpack2.0简单配置教程
查看>>
安装Eclipse Maven插件的方法
查看>>
vue中的filters的用法
查看>>
DRP——JDBC中的Batch
查看>>
[原][osg][gdal]两种方式修改tiff高程
查看>>
阿里云ACE下的PHP开发环境搭建
查看>>
ISE约束文件*.ucf的写法
查看>>
kibana显示elasticsearch集群中flume到入的日志
查看>>
R语言低级绘图函数-grid
查看>>
Android Design Support Library(一)用TabLayout实现类似网易选项卡动态滑动效果
查看>>
Python 的基本运算和内置函数
查看>>
Oracle OCP之硬解析在共享池中获取内存锁的过程
查看>>
在imageView依次加入7个手势, 1.点击哪个button,往imageView上加入哪个手势.(保证视图上仅仅有一个手势). 2.轻拍:点击视图切换美女图片.(imageView上首先...
查看>>
2 怎样解析XML文件或字符串
查看>>
linux驱动编写之poll机制
查看>>
hdu 1874 畅通project续
查看>>
kvm克隆
查看>>
系统理论
查看>>