【问题标题】:How to send email attachment without using httppostedfilebase in c#?如何在 c# 中不使用 httppostedfilebase 发送电子邮件附件?
【发布时间】:2016-01-01 22:15:29
【问题描述】:

我使用 angularjs 通过 ajax 提交表单来调用我的 mvc 控制器中的操作。和 使用我的角度指令,我可以获得所选文件的文件名、内容类型和内容长度。我从 Angular 中提取的这三个信息是否足以将文件附加到我的电子邮件中?谢谢大家的帮助。

【问题讨论】:

  • 除了@J-D 的答案是正确答案之外,请解释您要解决的实际问题,因为这闻起来像 XY 问题。它可能类似于“我希望我网站的访问者能够通过电子邮件发送大文件,但我不想等待上传”。那么你的实际问题是电子邮件不是发送大文件的合适媒介。
  • 基本上我有一个在线申请表,用户可以附上他们的简历。我使用模态表单来填写姓名字段、电子邮件字段等。提交表单后,我使用 angular 获取信息并通过 ajax 调用将这些信息传递给 mvc 动作控制器。在这种情况下,我没有使用 HttpPostedFileBase。使用指令我可以获得文件名、类型和内容长度。
  • 您对此无能为力。您需要上传文件。
  • 你是说 HttpPostedFileBase 是附加文件到电子邮件的唯一方法吗?
  • 不,我是说为了将来自客户端的文件附加到您从服务器发送的邮件中,您必须将该文件从客户端上传到服务器。 HttpPostedFileBase 是上传文件的方式之一。另请参阅ASP.NET MVC 3 - File upload through AngularJS

标签: c# angularjs asp.net-mvc email-attachments


【解决方案1】:

我可以得到所选文件的文件名、内容类型和内容长度 文件。

不,仅将文件作为邮件附件发送是不够的。没有文件的内容,上面提到的所有细节都是没有价值的。

编辑:如果您打算在您的 mvc 控制器中发布 HttpPostedFileBase,那么您可以提取上述详细信息,如下所示。

获取扩展:

string extension = Path.GetExtension(upload.FileName);

上传的类型为 HttpPostedFileBase。

获取文件名:

string fileName = Path.GetFileName(upload.FileName);

获取文件类型:

string contentType = upload.ContentType

【讨论】:

  • 我试图将这三个信息传递给 httppostedfilebase 但它说只读。有没有办法可以将其转换为与 httppostedfilebase 匹配?从昨晚开始,我一直在谷歌搜索和挠头。感谢您的意见。
  • 为什么你需要在这些信息已经可用时传递它们。看看这个msdn.microsoft.com/en-us/library/…。因此,当您发布文件时,它会自动将此字段分配给 HttpPostedFileBase 类,您可以从您的 c# 代码中读取相同的内容
  • 我不能使用 HttpPostedFileBase,因为每当我使用 ajax.post 使用它时,它总是返回 null。如果我要使用正常的 Html.Begin 形式它很好,但缺点是回发。通过我正在使用模态通过 ajax.post 提交表单。
  • 这是我用来获取输入文件属性的 angularjs 指令。 jsfiddle.net/spyboost/97WLP/light
猜你喜欢
  • 1970-01-01
  • 2021-03-06
  • 1970-01-01
相关资源
最近更新 更多