(五)电子邮件模块(SMTP协议发送带附件的邮件及抄送)
2018-03-25 10:55
351 查看
以下是我的代码
email.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net.Mail;
using System.Net;
using System.IO;
namespace email
{
public partial class smtp : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
MailMessage mymail=new MailMessage();//声明一个mail对象
mymail.From=new MailAddress("XXXX@163.com","your name");//发件人地址
mymail.To.Add(new MailAddress(TextBox1.Text));//收件人地址
mymail.Subject=TextBox2.Text;//邮件主题
mymail.Body=TextBox3.Text;//发送邮件的内容
// string filename = Path.GetFileName(FileUpload1.FileName);//获得文件名和后缀
//FileUpload1.SaveAs(Server.MapPath("~/") + filename)//保存文件到本程序的文件夹下
Attachment myfiles = new Attachment(FileUpload1.PostedFile.InputStream, FileUpload1.PostedFile.FileName);//把上传的文件指向的文件流给附件对象
mymail.Attachments.Add(myfiles);//发送邮件附件使用Attachments
mymail.CC.Add(new MailAddress(TextBox4.Text));//抄送邮件用CC
SmtpClient myclient=new SmtpClient();//创建一个邮件服务器
myclient.Host="smtp.163.com";//使用的163的SMTP服务器
myclient.Port=25;//smtp服务器端口
myclient.Credentials=new NetworkCredential("XXXX@163.com", "XXXX");//网易的邮箱及密码
myclient.Send(mymail);
Response.Write("成功!");
}
protected void Button2_Click(object sender, EventArgs e)
{
TextBox1.Text = "";
TextBox2.Text = "";
TextBox3.Text = "";
}
}
}
使用SMTP发送邮件不难,但是我在发附件的时候就出现了问题。一开始我使用的是 Attachment attachment = new Attachment(FileUpload1.PostedFile.FileName);代码在这里就出现问题了,说是未能找到文件“c:\program files (x86)\iis express\ccc.doc”。的确,我上传的要发送的文件不再这里,它在我另一个盘。上网搜了很久,很多人都是这样写,终于找了好久,找到了解决方法,https://bbs.csdn.net/topics/370265794。在找到这个方法前,我尝试了
string filename = Path.GetFileName(FileUpload1.FileName);//获得文件名和后缀
FileUpload1.SaveAs(Server.MapPath("~/") + filename)//保存文件到本程序的文件夹下
Attachment myfiles = new Attachment(Server.MapPath("~/") + filename);
这个虽然可以成功,但是却要把我上传的文件保存到我的程序文件夹下,如果我传了很多,那么岂不是我的文件夹要爆,所以我放弃了这个方法。
使用Attachment attachment = new Attachment(FileUpload1.PostedFile.FileName); 这句话出现问题的原因是file.PostedFile.FileName是文件在客户端上的路径,而我们的那些代码都运行在服务端。后面的做法是直接把上传的文件指向的文件流给我们的附件对象。
email.aspx
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<p>
收件人地址:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</p>
<p>
邮件主题:<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
</p>
<p>
邮件内容:<asp:TextBox ID="TextBox3" runat="server" TextMode="MultiLine"></asp:TextBox>
</p>
<p>
抄送:<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
</p>
添加附件:<asp:FileUpload ID="FileUpload1" runat="server" />
<br />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="发送邮件" />
<asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="重新填写" />
</form>
</body>
</html>
上传大附件会出现 HTTP 错误 404.13 - Not Found 这时我们需要改配置文件,加入<system.webServer>
<system.webServer>
<security>
<requestFiltering >
<requestLimits maxAllowedContentLength="1024000000" ></requestLimits>
</requestFiltering>
</security>
</system.webServer>
仅仅加入这个还是不够的,还需要改我们的 httpRuntime节点,<httpRuntime maxRequestLength="1048576" executionTimeout="3600" />否则会出现超过了最大请求长度问题。
代码https://github.com/1126048156/email.githttps://github.com/1126048156/email.git
email.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net.Mail;
using System.Net;
using System.IO;
namespace email
{
public partial class smtp : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
MailMessage mymail=new MailMessage();//声明一个mail对象
mymail.From=new MailAddress("XXXX@163.com","your name");//发件人地址
mymail.To.Add(new MailAddress(TextBox1.Text));//收件人地址
mymail.Subject=TextBox2.Text;//邮件主题
mymail.Body=TextBox3.Text;//发送邮件的内容
// string filename = Path.GetFileName(FileUpload1.FileName);//获得文件名和后缀
//FileUpload1.SaveAs(Server.MapPath("~/") + filename)//保存文件到本程序的文件夹下
Attachment myfiles = new Attachment(FileUpload1.PostedFile.InputStream, FileUpload1.PostedFile.FileName);//把上传的文件指向的文件流给附件对象
mymail.Attachments.Add(myfiles);//发送邮件附件使用Attachments
mymail.CC.Add(new MailAddress(TextBox4.Text));//抄送邮件用CC
SmtpClient myclient=new SmtpClient();//创建一个邮件服务器
myclient.Host="smtp.163.com";//使用的163的SMTP服务器
myclient.Port=25;//smtp服务器端口
myclient.Credentials=new NetworkCredential("XXXX@163.com", "XXXX");//网易的邮箱及密码
myclient.Send(mymail);
Response.Write("成功!");
}
protected void Button2_Click(object sender, EventArgs e)
{
TextBox1.Text = "";
TextBox2.Text = "";
TextBox3.Text = "";
}
}
}
使用SMTP发送邮件不难,但是我在发附件的时候就出现了问题。一开始我使用的是 Attachment attachment = new Attachment(FileUpload1.PostedFile.FileName);代码在这里就出现问题了,说是未能找到文件“c:\program files (x86)\iis express\ccc.doc”。的确,我上传的要发送的文件不再这里,它在我另一个盘。上网搜了很久,很多人都是这样写,终于找了好久,找到了解决方法,https://bbs.csdn.net/topics/370265794。在找到这个方法前,我尝试了
string filename = Path.GetFileName(FileUpload1.FileName);//获得文件名和后缀
FileUpload1.SaveAs(Server.MapPath("~/") + filename)//保存文件到本程序的文件夹下
Attachment myfiles = new Attachment(Server.MapPath("~/") + filename);
这个虽然可以成功,但是却要把我上传的文件保存到我的程序文件夹下,如果我传了很多,那么岂不是我的文件夹要爆,所以我放弃了这个方法。
使用Attachment attachment = new Attachment(FileUpload1.PostedFile.FileName); 这句话出现问题的原因是file.PostedFile.FileName是文件在客户端上的路径,而我们的那些代码都运行在服务端。后面的做法是直接把上传的文件指向的文件流给我们的附件对象。
email.aspx
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<p>
收件人地址:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</p>
<p>
邮件主题:<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
</p>
<p>
邮件内容:<asp:TextBox ID="TextBox3" runat="server" TextMode="MultiLine"></asp:TextBox>
</p>
<p>
抄送:<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
</p>
添加附件:<asp:FileUpload ID="FileUpload1" runat="server" />
<br />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="发送邮件" />
<asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="重新填写" />
</form>
</body>
</html>
上传大附件会出现 HTTP 错误 404.13 - Not Found 这时我们需要改配置文件,加入<system.webServer>
<system.webServer>
<security>
<requestFiltering >
<requestLimits maxAllowedContentLength="1024000000" ></requestLimits>
</requestFiltering>
</security>
</system.webServer>
仅仅加入这个还是不够的,还需要改我们的 httpRuntime节点,<httpRuntime maxRequestLength="1048576" executionTimeout="3600" />否则会出现超过了最大请求长度问题。
代码https://github.com/1126048156/email.githttps://github.com/1126048156/email.git
https://github.com/1126048156/email.git
相关文章推荐
- (六)电子邮件模块(使用JMail发送邮件,带附件)
- nodejs模块nodemailer基本使用-邮件发送(支持附件)
- Python模块探秘 Smtplib发送带有各种附件的邮件
- 二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)
- 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
- spring发送邮件(多人接收或抄送多少带附件发送)
- nodejs模块nodemailer基本使用-邮件发送(支持附件)
- asp.net使用smtp协议实现简单的发送邮件(支持附件)
- Python模块探秘 Smtplib发送带有各种附件的邮件
- 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
- java实现邮件发送, 抄送及多附件发送
- 如何使用 Cdosys.dll 库使用 Visual C# 中发送电子邮件带有附件接收邮件
- python邮件加附件发送模块
- ASP.NET使用SMTP协议简单的发送邮件(支持附件)
- C#基于SMTP协议和SOCKET通信,实现邮件内容和附件的发送,并可隐藏收件人
- Python模块探秘之二: Smtplib发送带有各种附件的邮件
- smtp协议 发送带附件的邮件
- Linux 发送邮件,抄送+附件,多收件人
- JavaMail发送带多个附件的邮件,多个收件人,多个抄送人
- C#基于SMTP协议和SOCKET通信,实现邮件内容和附件的发送,并可隐藏收件人