我想添加一个附件用作电子邮件中的标题图片。但是当我尝试附加文件时,路径是从Windows读取而不是从我的解决方案目录位置读取。我该怎么做?
var msg = new MailMessage(fromMailAdress, toEmail) { Subject = subject, Body = emailBody };
msg.Attachments.Add(new Attachment("../images/logo.jpg"));
从c:\ windows \ system32 \ images \ logo.jpg'
中读取我想从解决方案级别项目/ images / logo.jpg
答案 0 :(得分:1)
以下是您想要做的事情:
attachment
)以存储附件文件。~/attachment/filename
访问该文件。由于~/attachment/filename
是虚拟路径,因此您必须使用Control.ResolveUrl()
或更合适的方式将其转换为物理路径。有关详细信息,请查看此内容:ResolveUrl without an ASP.NET Page
答案 1 :(得分:0)
我不认为你曾提到过你从中做过什么类型的解决方案。
在传统的Windows应用中,您有几个选择。您可以通过在项目浏览器中右键单击徽标文件,选择“属性”并设置“复制到输出目录”来确保将徽标文件复制到输出目录。功能到"复制如果更新"。然后,您需要修改上面的代码以从正在执行的程序集的路径中加载图像...我的经验是Visual Studio将创建"图像"项目文件夹。
string logopath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "images/logo.jpg");
如DJ KRAZE所述,更好的选择是将您的徽标添加为资源。如果将其作为资源添加到项目中,则可以将其写入临时文件(如果不存在)。然后,使用您为临时文件创建的路径附加它。然后,您可以在完成后删除它,或者保留它,只有在它不存在时才重新创建它。
第三个选项是将徽标上传到网站,然后通过网址在您的电子邮件中引用它,而不是将其作为附件包含在内。如果您要创建HTML邮件消息,这可能是最佳解决方案。