2012-05-25 6 views
5

다음 코드를 사용하여 DataGridView에서 전자 메일 주소를 읽은 다음 Outlook 전자 메일을 만듭니다. 이것은 새로운 이메일이 topMost로 설정되거나 대화창으로 열리는 것을 제외하고는 완벽하게 작동합니다. 즉, 새 이메일 창이 열리는 동안 Outlook에서 다른 것을 클릭하거나 수행 할 수 없음을 의미합니다. 새로운 이메일을 열어 놓은 상태에서 내받은 편지함에서 다시 검색하거나 찾으려고 할 때 문제가 발생합니다. 또한 이메일을 닫거나 보낼 때까지 내 애플리케이션이 응답하지 않습니다 (잠겨 있습니다).새 전자 메일이 Outlook을 잠그면 전자 메일 창을 최상위로 만듭니다.

새 이메일을 만들고 일반 기능을 허용 할 수있는 방법이 있습니까? Outlook 자체에서 새 전자 메일 단추를 클릭하면 원하는만큼 열어서 검색 할 수 있습니다.

this.TopMost = false 줄은 내 WinForms 응용 프로그램을 숨기고 새 전자 메일 창을 앞에 표시합니다.

try 
{ 

     string emailString = resultsGrid[resultsGrid.Columns["Email"].Index, resultsGrid.SelectedCells[resultsGrid.Columns["Email"].Index].RowIndex].Value.ToString(); 

    if(emailString.Contains("mailto:")) 
    { 
     emailString = emailString.Replace("mailto:", ""); 
    } 

    this.TopMost = false; 

    // Create the Outlook application by using inline initialization. 
    Outlook.Application oApp = new Outlook.Application(); 

    //Create the new message by using the simplest approach. 
    Outlook.MailItem oMsg = (Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem); 
    oMsg.Subject = ""; 
    oMsg.To = emailString; 
    oMsg.Body = ""; 
    oMsg.Display(true); 


    oMsg = null; 
    oApp = null; 
} 
catch (Exception ex) 
{ 
    MessageBox.Show(string.Format("An error occurred: {0}", ex.Message)); 
} 

전자 메일에 몇 가지 내용을 적어서 닫으면 나도 구할 수 있습니다. 이렇게하면 전자 메일을 다시 열면 잠긴 상태로 돌아갑니다. 나는 이것이 이메일이 어떻게 만들어 졌는지와 관련이 있다고 생각하기 시작했다. 그래서 어떤 설정이나 속성이 적용되고 저장되었다.

답변

9

이 줄을 교체하십시오 :와 ...

oMsg.Display(true); 

을 :

MailItem.Display 문서 당
oMsg.Display(false); 

는 매개 변수의 이름은 Modal, 그리고로 지정해야합니다

True 창을 모달로 만드는 것. 기본값은 False입니다.

+0

hm "테스트 (False)"는 전자 메일을 전혀 표시하지 않는다고 판단하지 않았습니다. 감사. – ikathegreat