【问题标题】:Sending an attachment that the user chose with mail发送用户通过邮件选择的附件
【发布时间】:2019-08-26 08:46:36
【问题描述】:

问题

我希望用户可以向我发送带有附件的邮件。他们可以使用 html 中的输入文件按钮选择文件。问题是它找不到文件。没有附件也能正常工作。

我收到这个错误

文件 C:无法找到程序文件 (x 86) ExpressGIPENGLISH .pptx IIS。

有人有什么想法吗?

我尝试了什么

尝试先将文件上传到该位置,但仍然无法正常工作。

输入文件按钮

<INPUT type=file id=File1 name=File1 runat="server" >&nbsp; </asp:Content>

C#代码

System.Net.Mail.Attachment attachment;
attachment = new System.Net.Mail.Attachment(System.IO.Path.GetFileName(File1.PostedFile.FileName));

MailMessage mail = new MailMessage("d***t@gmail.com", "d***t@gmail.com");

SmtpClient client = new SmtpClient();
client.UseDefaultCredentials = false;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.Port = 587;              
client.Host = "smtp.gmail.com";
client.EnableSsl = true;
client.Credentials = new System.Net.NetworkCredential("d***t@gmail.com", "");

mail.BodyEncoding = Encoding.UTF8;
mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
mail.Subject = TxtOnderwerp.Text;
mail.Body = TxtMail.Text;
mail.Body += Environment.NewLine + "Van  " + TxtNaam.Text;
mail.Body += Environment.NewLine + " Deze persoon is te bereiken op het mail adres " + TxtEmail.Text + " of op het nummer " + TxtTel.Text;
mail.Attachments.Add(attachment);

client.Send(mail);

结果:我希望用户可以向我发送一封邮件,其中包含他自己在计算机上选择的附件。而且我可以收到邮件并打开附件。提前谢谢你

【问题讨论】:

    标签: c# html asp.net email attachment


    【解决方案1】:

    您需要先将发布的文件保存到您的服务器,然后才能将其添加为附件。您还可以从 MemoryStream 添加附件,因此这可能是另一种无需保存文件本身的方式。

    【讨论】:

    • 您需要先将发布的文件保存到您的服务器,然后才能将其添加为附件。您还可以从 MemoryStream 添加附件,因此这可能是另一种无需保存文件本身的方法。 ... 或者最简单的方法:直接使用 HttpPostedFile.InputStream 创建 Attachment 。 .. 没有保存,没有不必要的 MemoryStream
    • @Selvin 你有更多关于那个或例子的信息吗?我查了一下,这对我来说非常复杂。几个月前才开始编程。提前谢谢你
    • 不,正如@Selvin 所说,您无需先将其存储在服务器上即可将其添加为附件。
    【解决方案2】:

    下面是一个将文件作为附件添加到电子邮件而不将它们写入磁盘的完整示例。

    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
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-08
      • 2018-06-19
      • 1970-01-01
      • 2015-10-24
      • 1970-01-01
      • 2015-09-30
      相关资源
      最近更新 更多