C# 发送用户随邮件选择的附件
问题: 我希望用户可以给我发送带有附件的邮件。他们可以通过html中的“输入文件”按钮选择文件。问题是它找不到文件。它工作正常,没有附件 我得到这个错误 文件C:找不到ExpressGIPENGLISH.pptx IIS的程序文件(x 86) 有人有什么想法吗 我所尝试的: 尝试先将文件上载到该位置,但仍然无法工作 输入文件按钮C# 发送用户随邮件选择的附件,c#,html,asp.net,email,attachment,C#,Html,Asp.net,Email,Attachment,问题: 我希望用户可以给我发送带有附件的邮件。他们可以通过html中的“输入文件”按钮选择文件。问题是它找不到文件。它工作正常,没有附件 我得到这个错误 文件C:找不到ExpressGIPENGLISH.pptx IIS的程序文件(x 86) 有人有什么想法吗 我所尝试的: 尝试先将文件上载到该位置,但仍然无法工作 输入文件按钮 <INPUT type=file id=File1 name=File1 runat="server" > </asp:Conte
<INPUT type=file id=File1 name=File1 runat="server" > </asp:Content>
结果:我希望用户可以向我发送一封带有他自己选择的附件的邮件,该附件位于他的计算机上。我可以收到邮件并打开附件。提前感谢您需要先将发布的文件保存到服务器,然后才能将其添加为附件。您还可以从MemoryStream中添加附件,因此这可能是另一种不必保存文件本身的方法。下面是一个完整的示例,可以将文件作为附件添加到电子邮件中,而无需将其写入磁盘
using (SmtpClient client = new SmtpClient())
using (MailMessage message = new MailMessage())
{
client.Host = "host.com";
client.Port = 25;
client.Timeout = 10000;
client.EnableSsl = false;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("user", "pass");
message.From = new MailAddress("email@from.nl", "VDWWD");
message.To.Add(new MailAddress("email@to.nl"));
message.Subject = "Your uploaded files";
message.IsBodyHtml = true;
message.Body = "<html><head></head><body><font face=\"arial\" size=\"2\"><b>The files you uploaded.</b></font></body></html>";
//loop all the uploaded files
foreach (var file in FileUpload1.PostedFiles)
{
//add the file from the fileupload as an attachment
message.Attachments.Add(new Attachment(file.InputStream, file.FileName, MediaTypeNames.Application.Octet));
}
//send mail
try
{
client.Send(message);
}
catch (Exception ex)
{
//handle error
}
}
使用(SmtpClient=new SmtpClient())
使用(MailMessage=newmailmessage())
{
client.Host=“Host.com”;
客户端端口=25;
client.Timeout=10000;
client.enablesl=false;
client.DeliveryMethod=SmtpDeliveryMethod.Network;
client.UseDefaultCredentials=false;
client.Credentials=新的网络凭据(“用户”、“通过”);
message.From=新邮件地址(“email@from.nl“,“VDWWD”);
message.To.Add(新邮件地址(“email@to.nl"));
message.Subject=“您上传的文件”;
message.IsBodyHtml=true;
message.Body=“您上载的文件。”;
//循环所有上传的文件
foreach(FileUpload1.PostedFiles中的var文件)
{
//将文件上载中的文件添加为附件
message.Attachments.Add(新附件(file.InputStream、file.FileName、MediaTypeNames.Application.Octet));
}
//寄信
尝试
{
客户端。发送(消息);
}
捕获(例外情况除外)
{
//处理错误
}
}
您需要先将发布的文件保存到服务器,然后才能将其添加为附件。您还可以从MemoryStream中添加附件,因此这可能是另一种不必保存文件本身的方式。。。或者最简单的方法:直接使用HttpPostedFile.InputStream
创建附件
。。。没有储蓄,就没有不必要的东西MemoryStream@Selvin你有更多的信息或例子吗?我查了一下,它对我来说非常复杂。几个月前才开始编程。advanceNo感谢您,因为@Selvin说您不需要先将其存储在服务器上,然后将其作为附件添加。
using (SmtpClient client = new SmtpClient())
using (MailMessage message = new MailMessage())
{
client.Host = "host.com";
client.Port = 25;
client.Timeout = 10000;
client.EnableSsl = false;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("user", "pass");
message.From = new MailAddress("email@from.nl", "VDWWD");
message.To.Add(new MailAddress("email@to.nl"));
message.Subject = "Your uploaded files";
message.IsBodyHtml = true;
message.Body = "<html><head></head><body><font face=\"arial\" size=\"2\"><b>The files you uploaded.</b></font></body></html>";
//loop all the uploaded files
foreach (var file in FileUpload1.PostedFiles)
{
//add the file from the fileupload as an attachment
message.Attachments.Add(new Attachment(file.InputStream, file.FileName, MediaTypeNames.Application.Octet));
}
//send mail
try
{
client.Send(message);
}
catch (Exception ex)
{
//handle error
}
}