我创建了一个非常简单的Windows窗体应用程序,它使用.NET 2.0并从单个可执行文件运行。
这些单个可执行文件将部署到多个用户以提示和收集信息。
问题在于,我希望通过电子邮件将信息通过电子邮件发送到特定的电子邮件地址,该地址可能会因发送可执行文件的用户而异。但是,我不希望在电子邮件更改时重建可执行文件。
我可以通过命令行或快捷方式将命令参数传递给可执行文件,但我只是希望用户在表单中输入信息并单击“提交”并将其发送到预定义的电子邮件地址,该地址可能因用户将可执行文件发送给。
我可以将可执行文件与使用命令参数或配置文件运行可执行文件的批处理文件捆绑在一起。但是,我希望尽可能简化部署,一个文件。
是否可以使用MSI执行此操作?我完全错过了一些明显的东西吗?
我希望向用户发送可执行文件的人能够轻松更改WinForm将数据发送到的电子邮件地址。
答案 0 :(得分:1)
您可以使用app.config文件。
右键单击该项目,然后选择添加 - >新项目 - >应用程序配置文件
有类似的东西:
<configuration>
<appSettings>
<add key="UserEmail" value="test@test.com" />
</appSettings>
</coniguration>
在您的代码中检索配置值,如:
string email = ConfigurationManager.AppSettings["UserEmail"];
然后你只需要在发送给用户之前更改配置文件中的值,他们也可以自己更新它。
答案 1 :(得分:1)
如果您的用户要更改电子邮件地址,您可能需要考虑比配置文件更简单的传送机制,这在某种意义上是脆弱的,如果用户意外删除了>
您的应用将会抛出System.Configuration.ConfigurationErrorsException
。
比app配置文件更简单的解决方案是一个文本文件,其中只包含目标电子邮件地址,与应用程序包含在同一目录中。您的用户可以更轻松地编辑它 - 或者只是删除一个新文件。当然,这取决于他们对该目录的权限。
另一种选择是将其视为正常设置。在最初运行时提示最终用户输入实际的电子邮件,并使用特定于用户的设置(即Properties.Settings.Default.SettingName
)进行存储。然后,为您的用户提供UI功能,以便根据需要进行更改。
答案 2 :(得分:0)
一个稍微不同的解决方案是让每个实例都将电子邮件发送到相同的电子邮件地址,其中包含&#39;来自&#39;是基于用户的Windows登录帐户和域的地址。
然后,创建一个接收电子邮件帐户,这些电子邮件通过过滤器到达,以将邮件重定向到适当的目的地。您没有说出您正在使用的电子邮件系统,但Exchange允许这样做非常简单(例如,像GMail这样的其他系统)。
这种集中式设计的一个更加劳动密集的变体是创建一个您的exe查询的小型Web服务,Web服务告诉exe应该将邮件发送到哪里。同样,您需要Windows用户和&#39; To&#39;之间的映射表。地址。
答案 3 :(得分:0)
我不确定我是否理解你的问题,但这是我的尝试:
您应该查看visual studio中的属性:
Project
- &gt; yourProjectName Properties...
- &gt; Settings
您可以在那里创建变量,可以是应用程序,也可以是用户作用域。通过使用用户范围变量,例如userEmail
,程序允许您根据登录用户保存此信息。这样,您可以在同一个可执行文件中保存20个不同的电子邮件,具体取决于登录用户。
根据用户保存电子邮件:
Properties.Settings.Default.userEmail = "myemail@host.com";
Properties.Settings.Default.Save();
以同样的方式阅读:
string email = Properties.Settings.Default.userEmail;