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,因此如果您在发送之前这样做,则不会有明显的区别

我建议使用无代码/带代码选项的组合,以便提供自动完成的返回地址,以节省用户时间。但是,如果用户希望将电子邮件返回到其他地址(如果有错误),则可以进行更正

希望你觉得这很有用