Email 在Infopath中获取发件人电子邮件地址
我有一份通过电子邮件发送的表格,可以像这样通过不同的人传递Email 在Infopath中获取发件人电子邮件地址,email,outlook,infopath,Email,Outlook,Infopath,我有一份通过电子邮件发送的表格,可以像这样通过不同的人传递 Person A --> Person B --> Person C 我希望在C处理表格时通知A个人。因此A个人需要在B个人发送的电子邮件副本中 因为A个人并不总是同一个人,所以我认为把他/她放在副本中的最好方法是使用B个人收到的电子邮件的“发件人”字段并将其放在副本中 但是,如何使用infopath查找此地址,以及如何将其放入电子邮件数据连接中?我今天也遇到了同样的问题,无法找到太多答案 所以。。。我自己做了一些工作,提
Person A --> Person B --> Person C
我希望在C处理表格时通知A个人。因此A个人需要在B个人发送的电子邮件副本中
因为A个人并不总是同一个人,所以我认为把他/她放在副本中的最好方法是使用B个人收到的电子邮件的“发件人”字段并将其放在副本中
但是,如何使用infopath查找此地址,以及如何将其放入电子邮件数据连接中?我今天也遇到了同样的问题,无法找到太多答案 所以。。。我自己做了一些工作,提出了一些解决方案 首先,我认为没有任何方法可以使用InfoPath OM获取/设置发件人地址。这意味着您必须使用以下选项之一: 无代码: 您将仅限于在表单上提供一个字段,以便人员a可以将其电子邮件地址放入并在抄送中使用。用于后续阶段。这是唯一的方法,虽然这对用户来说是一个额外的负担,但它确实有提供灵活性的好处 代码: 编写自己的代码,使用Outlook Interop或System.Net.mail发送邮件,然后您将手动设置所有地址 如果您使用的是广告或其他东西,那么您可以随时使用获取当前使用的电子邮件地址 基于一个假设,我找不到任何可备份的文档。该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实例,您也必须关闭它。而且它可能很慢。除非outlook已经打开,在这种情况下,它将非常快。无论如何,从InfoPath发送时,必须打开Outlook,因此如果您在发送之前这样做,则不会有明显的区别
我建议使用无代码/带代码选项的组合,以便提供自动完成的返回地址,以节省用户时间。但是,如果用户希望将电子邮件返回到其他地址(如果有错误),则可以进行更正
希望你觉得这很有用