我有通过电子邮件发送的表单,可以通过不同的人这样的旅行。在Infopath中获取发件人电子邮件地址
Person A --> Person B --> Person C
我想
因为一个人是不是在形式是由人C.所以一个人必须由人B.发送的电子邮件的副本治疗者A到通知总是同一个人,我认为把他/她放在副本中的最佳方式是使用B人收到的电子邮件的“发件人”字段并将其复制。
但是我怎样才能找到这个地址与infopath,我怎么能把它放到我的电子邮件数据连接?
我有通过电子邮件发送的表单,可以通过不同的人这样的旅行。在Infopath中获取发件人电子邮件地址
Person A --> Person B --> Person C
我想
因为一个人是不是在形式是由人C.所以一个人必须由人B.发送的电子邮件的副本治疗者A到通知总是同一个人,我认为把他/她放在副本中的最佳方式是使用B人收到的电子邮件的“发件人”字段并将其复制。
但是我怎样才能找到这个地址与infopath,我怎么能把它放到我的电子邮件数据连接?
我今天有同样的问题,我自己也找不到太多的答案。
所以......我自己做了一些工作,想出了一些解决方案。
首先,我不认为有任何方法使用InfoPath OM获取/设置“发件人”地址。这意味着你将不得不使用下列选项之一:
无编号:
您将被限制为形式,其中“人A”可以把自己的电子邮件地址,并使用上提供了一个场在CC。为后续阶段。这是唯一的方式,虽然它给用户带来额外的负担,但它具有提供灵活性的好处。
代码:
编写自己的代码中使用Outlook互操作或System.Net.Mail发送邮件,然后你就可以手动设置反正所有的地址。
如果您正在使用AD或别的东西,那么你可以总是使用System.DirectoryServices.AccountManagement目前使用的电子邮件地址。
基于我无法找到任何文件备份的假设。该InfoPath使用与默认商店关联的帐户使用EmailSubmitConnection发送电子邮件。您应该可以使用Outlook Interop来查找InfoPath将使用的地址。
下面是一个代码示例:
using Outlook = Microsoft.Office.Interop.Outlook;
public string GetDefaultSenderAddress()
{
// This actually opens outlook in the same way as InfoPath does to send the message.
// which can be slow.
string DefaultAddress = string.Empty;
Outlook.Application OutlookApplication = new Outlook.Application();
string DefaultStoreId = OutlookApplication.Session.DefaultStore.StoreID;
foreach (Outlook.Account Account in OutlookApplication.Session.Accounts)
{
if (Account.DeliveryStore.StoreID == DefaultStoreId)
{
DefaultAddress = Account.SmtpAddress;
}
}
// Note you probably won't want to quit if you are about to send the email.
// However I have noticed that this doesn't seem to close Outlook anyway.
OutlookApplication.Quit();
return DefaultAddress;
}
您可能需要在不同的账户类型的情况等提供了几个检查,但我相信它会工作。 (我测试了它的情况,它确实)。
注意:当然这会打开一个outlook实例,您将不得不关闭该实例。它可能会很慢。除非展望已经开放,在这种情况下,它将非常迅速。无论如何,从InfoPath Outlook发送时必须打开,所以如果你在发送之前这样做,那么应该没有明显的差异。
我会建议使用无代码/代码选项的组合,以便提供一个自动完成的返回地址以节省用户时间。但是,如果用户希望将电子邮件返回到其他地址(如果有错误),则可以更正。
希望你觉得有用。