【发布时间】:2011-09-09 13:43:50
【问题描述】:
我正在 Umbraco CMS 上实现一个剃须刀联系表单,其中包括内联 C# 脚本,用于使用 .Net 的 MailMessage 创建和发送电子邮件。最终用户现在需要能够上传文件,该文件作为附件添加到电子邮件中。
据我所知,唯一的方法是上传到磁盘,然后从磁盘加载附件。
是否可以在不写入磁盘的情况下上传和附加?请记住,没有代码隐藏或控制器 - 这都是嵌入式剃须刀逻辑。
【问题讨论】:
我正在 Umbraco CMS 上实现一个剃须刀联系表单,其中包括内联 C# 脚本,用于使用 .Net 的 MailMessage 创建和发送电子邮件。最终用户现在需要能够上传文件,该文件作为附件添加到电子邮件中。
据我所知,唯一的方法是上传到磁盘,然后从磁盘加载附件。
是否可以在不写入磁盘的情况下上传和附加?请记住,没有代码隐藏或控制器 - 这都是嵌入式剃须刀逻辑。
【问题讨论】:
您需要将上传文件中的InputStream 传递给MailMessage 的Attachment 构造函数:
if(IsPost && Request.Files.Count > 0){
var file = Request.Files[0];
var fileName = file.FileName;
var attachment = new Attachment(file.InputStream, fileName);
...
...
确保(除非您使用 FileUpload Helper)您将表单的方法设置为POST,添加一个值为multipart/form-data 的enctype 属性,并为您的input type=file 提供一个@ 987654328@属性。
【讨论】:
我不确定 razor 有多少可能,但应该可以上传并附加到电子邮件而不保存到磁盘。使用从上传控件的FileUpload.FileContent property 获得的 Stream。然后将其传递给 MailMessage 附件的this constructor。
另外,为什么不使用代码隐藏?
【讨论】: