c# - 将文件附加到 MailMessage 而不保存到服务器

标签 c# email attachment filepicker

我在使用 C# MailMessage 将文件附加到邮件时遇到困难。我对此进行了详细的搜索并尝试了许多我遇到的事情。当前的化身是:

string uploadFile1 = fulAttachment1.FileName;
MyMessage.Attachments.Add(
    new Attachment(fulAttachment1.PostedFile.InputStream, uploadFile1));

其中 fulAttachment1 是文件选择器控件。

我不断遇到的错误是这样开始的:

System.IO.FileNotFoundException: Could not find file 'C:\Windows\SysWOW64\inetsrv\neptun-300x299.jpg'

我根本不明白它为什么要查找文件系统。

我应该补充一点,我尝试过的许多技术在 Visual Studio 2012 中以及在我的开发计算机上部署到 IIS 时都有效。当它部署到 Internet 主机上的 IIS 时,就会出现问题。他们说站点配置没有问题,但我对此了解不够,不能说不是。

这是错误消息的其余部分:

在System.IO.__Error.WinIOError(Int32 errorCode,String MaybeFullPath)在System.IO.FileStream.Init(字符串路径,FileMode模式,FileAccess访问,Int32权限, bool useRights,FileShare共享,Int32 bufferSize,FileOptions选项、 SECURITY_ATTRIBUTES secAttrs、字符串 msgPath、 bool 值 bFromProxy、 bool 值 useLongPath、 bool 值 checkHost) 在 System.IO.FileStream..ctor (字符串路径、FileMode 模式、FileAccess 访问、FileShare 共享) 在 System.Net.Mail.AttachmentBase.SetContentFromFile(String) fileName, String mediaType) at System.Net.Mail.AttachmentBase..ctor(String fileName) at System.Net.Mail.Attachment..ctor(String fileName) at RSG.Webforms.Contact.btnSubmit_Click(Object sender, EventArgs e)在 c:\Users\suser\Documents\Visual Studio 2012\Projects\RSA\Webforms\Contact.aspx.cs:第 40 行

我不明白的另一件事是为什么远程服务器上的 IIS 会引用我本地的 Visual Studio 项目

最佳答案

如注释中所述,fuAttachment1.FileName 引用的是文件名;您必须改为访问文件字节流。

string uploadFile1 = System.IO.Path.GetFileName(fulAttachment1.FileName);
MyMessage.Attachments.Add(new Attachment(fulAttachment1.FileContent, uploadFile1)));

引用文献:

https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.fileupload_properties(v=vs.110).aspx

https://msdn.microsoft.com/en-us/library/system.net.mail.attachment.attachment(v=vs.110).aspx

关于c# - 将文件附加到 MailMessage 而不保存到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31681968/

相关文章:

c# - EWS : Retrieving attachments from signed emails

c# - 创建 Excel 工作表时出现 NullReferenceException

c# - 菜单项打开和关闭事件

c# - asp.net core fileprovider 获取所有驱动器

c# - 可以使用 Boost 或 STL 显示自定义字符串的 C++ 断言?

azure - 通过 Azure AD Graph API 作为电子邮件别名发送电子邮件

php - 用于大量邮件的电子邮件队列系统

soap - postman :带附件的 SOAP 请求

Java 邮件和数据库连接发生冲突

ios 截取 View 并将其附加到邮件中