【问题标题】:Razor form - upload and attach to emailRazor 表单 - 上传并附加到电子邮件
【发布时间】:2011-09-09 13:43:50
【问题描述】:

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

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

是否可以在不写入磁盘的情况下上传和附加?请记住,没有代码隐藏或控制器 - 这都是嵌入式剃须刀逻辑。

【问题讨论】:

    标签: razor umbraco


    【解决方案1】:

    您需要将上传文件中的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-dataenctype 属性,并为您的input type=file 提供一个@ 987654328@属性。

    【讨论】:

    • 谢谢。我试图查看 Request.Files,但它的计数为零。
    • 如果没有更多信息,很难诊断为什么会这样。仔细检查我所说的确保。
    • 我遇到了嵌套表单的问题。一旦我欺骗了表单标签,你的代码示例就可以正常工作了。
    【解决方案2】:

    我不确定 razor 有多少可能,但应该可以上传并附加到电子邮件而不保存到磁盘。使用从上传控件的FileUpload.FileContent property 获得的 Stream。然后将其传递给 MailMessage 附件的this constructor

    另外,为什么不使用代码隐藏?

    【讨论】:

    • 没有代码隐藏,因为我使用的是 CMS 内容系统和下载的 razor all-in-one 联系表单。我避免重新发明轮子。
    猜你喜欢
    • 2015-05-29
    • 2013-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多