我有一个通过电子邮件发送的表格,通过这样的不同的人旅行。
Person A --> Person B --> Person C
我希望在表格被人C处理时通知A人。因此,A人需要在B人发送的电子邮件副本中。
因为A人并不总是相同,所以我认为将他/她复制的最佳方式是使用B人收到的电子邮件的“发件人”字段并将其复制。
但是如何通过infopath找到此地址,如何将其放入我的电子邮件数据连接?
答案 0 :(得分:0)
我今天也有同样的问题,并且找不到答案。
所以......我自己做了一些工作,想出了一些解决方案。
首先,我不相信有任何方法可以使用InfoPath OM获取/设置“发件人”地址。这意味着您必须使用以下选项之一:
无代码:
您将仅限于在表单上提供字段,其中“人员A”可以放置其电子邮件地址并在CC中使用此字段。后续阶段。这是唯一的方式,虽然它给用户带来了额外的负担,但它确实具有提供灵活性的好处。
<强>代码:强>
编写您自己的代码以使用Outlook Interop或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发送时必须打开,所以如果你在发送之前这样做,那么应该没有明显的区别。
我建议使用无代码/代码选项的组合,因此提供一个自动完成的返回地址以节省用户时间。但如果用户希望将电子邮件返回到其他地址(如果有错误),则可以更正。
希望您觉得有用。