我在使用 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.net.mail.attachment.attachment(v=vs.110).aspx
关于c# - 将文件附加到 MailMessage 而不保存到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31681968/