Razor表单-上传并附加到电子邮件

Razor表单-上传并附加到电子邮件,razor,umbraco,Razor,Umbraco,我正在Umbraco CMS上实现一个razor联系人表单,其中包括使用.Net的MailMessage创建和发送电子邮件的内联C#脚本。最终用户现在需要能够上传一个文件,该文件作为附件添加到电子邮件中 据我所知,唯一的方法是上传到磁盘,然后从磁盘加载附件 是否可以在不写入磁盘的情况下上载和连接?请记住,没有代码隐藏或控制器-这是所有在线razor逻辑。我不确定razor可以实现多少功能,但应该可以在不保存到磁盘的情况下上传并附加到电子邮件。使用从upload控件的中获取的流。然后将其传递到Ma

我正在Umbraco CMS上实现一个razor联系人表单,其中包括使用.Net的MailMessage创建和发送电子邮件的内联C#脚本。最终用户现在需要能够上传一个文件,该文件作为附件添加到电子邮件中

据我所知,唯一的方法是上传到磁盘,然后从磁盘加载附件


是否可以在不写入磁盘的情况下上载和连接?请记住,没有代码隐藏或控制器-这是所有在线razor逻辑。

我不确定razor可以实现多少功能,但应该可以在不保存到磁盘的情况下上传并附加到电子邮件。使用从upload控件的中获取的流。然后将其传递到MailMessage附件的


还有,为什么不使用代码隐藏呢

您需要将上传文件中的
InputStream
传递到邮件消息的
附件
构造函数:

if(IsPost && Request.Files.Count > 0){
    var file = Request.Files[0];
    var fileName = file.FileName;
    var attachment = new Attachment(file.InputStream, fileName);       
    ...
    ...

确保(除非使用FileUpload帮助程序)将表单的方法设置为
POST
,添加一个
enctype
属性,其值为
multipart/form data
,并且您为您的
input type=file
提供了
name
属性。

没有代码隐藏,因为我使用的是CMS内容系统和下载的razor多功能联系人表单。我在避免重新发明轮子。谢谢。我试图查看Request.Files,但它给了我一个零计数。如果没有更多信息,很难诊断为什么会这样。仔细检查一下我说的话,确认一下。我的嵌套表单有问题。一旦我欺骗了表单标记,您的代码示例就运行良好。