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

Attach File to MailMessage without Saving to Server

我在使用 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 时会出现问题。他们说站点配置没有问题,我对此了解不多。

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

at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share) at 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) in c:\Users\suser\Documents\Visual工作室 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