使用附件发送电子邮件而不保存附件c#/ ASP.NET

时间:2015-11-11 15:21:06

标签: c# asp.net email mailmessage

我正在尝试发送一封包含附件的电子邮件,该附件将由用户上传,然后发送到管理员电子邮件。

我已经在IE 11上正确配置了这个,但是对于Chrome / Firefox,它提供的FilePath存在限制。由于IE 11提供了完整的文件路径,因此它允许我的功能工作。

Chrome / Firefox是否有可能解决这个问题。

邮件留言代码:

protected void Submit_Click(object sender, EventArgs e)
    {

        using (MailMessage message = new MailMessage())
        {
                if (Attachment1.HasFile == false)
                {
                    message.From = new MailAddress(Environment.UserName + "@domain");
                    message.To.Add(new MailAddress("MyEmail"));
                    message.IsBodyHtml = true;
                    message.Subject = "New Request from self service portal: " + Summary.Text.ToString();
                    message.Body = "Customer Name:</br>Customer Username:" + Environment.UserName + "</br>" + DetailedSummary.Text.ToString();
                    SmtpClient client = new SmtpClient();
                    client.Host = "IP ADDRESS";
                    client.Send(message);
                } else {
                    message.From = new MailAddress(Environment.UserName + "@domain");
                    message.To.Add(new MailAddress("myemail"));
                    string file = Attachment1.PostedFile.FileName;
                    message.Attachments.Add(new Attachment(file));
                    message.IsBodyHtml = true;
                    message.Subject = "New Request from self service portal: " + Summary.Text.ToString();
                    message.Body = "Customer Name:</br>Customer Username:" + Environment.UserName + "</br>" + DetailedSummary.Text.ToString();
                    SmtpClient client = new SmtpClient();
                    client.Host = "IP ADDRESS";
                    client.Send(message);
            }

        }
    }

这是用户将指定将上载哪个文件的位置,并且不会是每次都上载的静态文件。意思是,我将需要FileUpload中的文件路径。

1 个答案:

答案 0 :(得分:5)

HttpPostedFile.FileName &#34;获取客户端上文件的完全限定名称。&#34;

在您的计算机上进行开发(并使用实际发送完整路径的浏览器,哪些适当的浏览器不可用),但只要您在服务器上部署它就会中断。

最简单的方法是使用new Attachment(Attachment1.PostedFile.InputStream, "attachmentname") constructor直接将上传的文件流式传输到附件中,而无需自行临时保存。