2013-12-18 5 views
0

전자 메일을 통해 다른 사람을 통해 보내는 양식이 있습니다. 사람 A가 아닌Infopath에서 보낸 사람 전자 메일 주소 받기

때문에

Person A --> Person B --> Person C 

나는 양식 C. 그래서 사람 A가 사람 B로 보낸 이메일의 복사본에 있어야 사람에 의해 처리 될 때 사람 A가 연락합니다 항상 동일한 것, 나는 그/그녀를 사본에 넣는 가장 좋은 방법은 사람 B가받은 전자 메일의 "보낸 사람"필드를 사용하고 복사본에 넣는 것입니다.

하지만이 정보는 infopath에서 어떻게 찾을 수 있으며 전자 메일 데이터 연결에 어떻게 넣을 수 있습니까?

답변

0

나는이 같은 질문을 오늘 나에게했고, 대답의 길을 많이 찾지 못했습니다.

그래서 ... 나는 약간의 해결책을 찾았습니다.

먼저 InfoPath OM을 사용하여 "보낸 사람"주소를 가져 오거나 설정할 수있는 방법이 없다고 생각합니다. 이것은 당신이 다음 옵션 중 하나를 사용해야합니다 의미

없음 코드 없음

당신은 "사람 A가"자신의 이메일 주소를 넣어이 사용할 수있는 양식 필드를 제공하는 것으로 제한된다 참조. 후속 단계. 이는 유일한 방법이며, 사용자에게 부담이되지만 유연성을 제공하는 이점이 있습니다.

코드 :

  1. 전망 상호 운용성 또는 System.Net.Mail를 사용하여 메일을 보낼 후 수동 어쨌든 모든 주소를 설정됩니다 자신의 코드를 작성합니다.

  2. 광고 또는 다른 것을 사용하는 경우 항상 System.DirectoryServices.AccountManagement을 사용하여 현재 사용중인 이메일 주소를 얻을 수 있습니다.

  3. 백업 할 문서를 찾을 수 없다는 전제에 근거합니다. 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에서 전송할 때 열어야합니다. 전송하기 전에 이렇게하면 눈에 띄는 차이가 없어야합니다.

코드 없음/코드 옵션을 조합하여 사용하도록 권하고 있으므로 사용자 시간을 절약하기 위해 자동으로 완료되는 반송 주소를 제공하십시오. 그러나 사용자가 전자 메일을 다른 주소로 되돌리려면 실수가있을 경우이를 수정할 수 있습니다.

당신이 유용하다고 생각하길 바랍니다.

관련 문제