ASP.NET收发邮件

时间:2020-12-21 08:47:47

在.NET中常见到在线发邮件的实例,网站加上这个功能可以方便站长与用户的交流。

NET 中发邮件有时候会用到IIS组件中的邮件服务器,不过复杂。对虚拟主机的配置也较麻烦,

也可用第三方组件比如Jmail,但.net本身就已经封装了发邮件的类:WebMail;

不过要首先引入这个类:using System.Web.Mail;//导入邮件发送类
using System.IO;//文件上传类型

这个类中包含了一些常用的对象常用的有From ,To,Subject,Body,Attchments(附件);

具体代码如下:

MailMessage objMail = new MailMessage();
        objMail.From = mailFrom.Text;
        objMail.To = mailTo.Text;
        objMail.Subject = Subject.Text;
        objMail.Body = Body.Text;
        objMail.BodyFormat = MailFormat.Text;
        //上传附件

string filename, filepath, filepic;

filepic = Path.GetExtension(uploadfile.PostedFile.FileName).ToLower();
        if (filepic == ".exe")
        {
            Response.Write("<script>alert('对不起,格式错误!')</script>");
            //Response.End();
        }

filename = Path.GetFileName(uploadfile.PostedFile.FileName);
        filepath = Server.MapPath("uploadfiles/" + filename);
        uploadfile.PostedFile.SaveAs(filepath);//保存上传文件到服务器文件夹下;
        MailAttachment attach = new MailAttachment(filepath);根据上传的路径创建附件对象;
        objMail.Attachments.Add(attach);//添加附件实例
        SmtpMail.SmtpServer = "";
        SmtpMail.Send(objMail);
        message.Text = "成功发送 !:)";
    }

在这里上传附件时,对附件的扩展名进行验征,后缀名为.exe的为非法上传格式,当然你也可以添加更多的非法格式;

二:上传文件;

上传文件有多种方法,常用的数据库保存文件路径,文件存放在文件夹下;下面给出我把文件上传到文件夹下的代码;

string filename, filepath, filepic;//定义文件名,文件路径,文件扩展名;
        filepic = Path.GetExtension(uploadfile.PostedFile.FileName).ToLower();//判断所要上传的文件名
        if (filepic == ".exe" || filepic == ".rar" || filepic== ".重命名")//看看是不是符合这几种扩展名,如果想禁止某种类型,直接在这里添加即可;
        {
            Response.Write("<script>alert('对不起,格式错误!')</script>");
            //Response.End();
        }
        else
        {
            try
            {
                filename = Path.GetFileName(uploadfile.PostedFile.FileName);
                filepath = Server.MapPath("uploadfiles/" + filename);
                uploadfile.PostedFile.SaveAs(filepath);
                Response.Write("保存路径:" + filepath + "<br>");
                Response.Write("文件类型:" + uploadfile.PostedFile.ContentType);
                message.InnerHtml = "<br><a href='uploadfiles/" + filename + "'>查看文件</a>" + "<a href='uploadfiles.aspx'>返回</a>";
            }
            catch (OleDbException er)
            {
                Response.Write("响应时间过长,上传失败!!");
            }
        }