2009-09-21 7 views
12

나는 직장에서 프로세스를 자동화하는 PowerShell 스크립트를 만들고 있습니다. 이 프로세스를 수행하려면 전자 메일을 작성하여 다른 사람에게 보내야합니다. 전자 메일은 항상 대략 동일한 유형의 템플릿을 따를 것입니다. 그러나 매번 항상 동일하지는 않으므로 Outlook에서 전자 메일 초안을 만들고 전자 메일 창을 열어 보내기 전에 추가 정보를 채울 수 있습니다.PowerShell을 사용하여 Outlook 전자 메일 초안 만들기

온라인 검색을 조금 해봤지만 자동으로 이메일을 보낼 수있는 코드가 있습니다. 코드는 다음과 같습니다 :

$ol = New-Object -comObject Outlook.Application 
$mail = $ol.CreateItem(0) 
$Mail.Recipients.Add("[email protected]") 
$Mail.Subject = "PS1 Script TestMail" 
$Mail.Body = " 
Test Mail 
" 
$Mail.Send() 

요약하면 새로운 Outlook 전자 메일 초안을 작성하고 저장하는 방법을 알고 즉시 편집 용 초안을 여는 사람이 있습니까?

+0

최종 소스 코드 샘플 스크립트는 무엇입니까? – Kiquenet

답변

22
$olFolderDrafts = 16 
$ol = New-Object -comObject Outlook.Application 
$ns = $ol.GetNameSpace("MAPI") 

# call the save method yo dave the email in the drafts folder 
$mail = $ol.CreateItem(0) 
$null = $Mail.Recipients.Add("[email protected]") 
$Mail.Subject = "PS1 Script TestMail" 
$Mail.Body = " Test Mail " 
$Mail.save() 

# get it back from drafts and update the body 
$drafts = $ns.GetDefaultFolder($olFolderDrafts) 
$draft = $drafts.Items | where {$_.subject -eq 'PS1 Script TestMail'} 
$draft.body += "`n foo bar" 
$draft.save() 

# send the message 
#$draft.Send() 
+0

좋아요! 감사. 그게 대부분 끝났어! 스크립트를 초안 창을 자동으로 열어서 보내기 전에 마지막 수동 비트를 채울 수 있습니까? – Jason

+0

+1 초안을 만들고 저장하려면 지금 만 있으면됩니다 ... –

+0

np :) 표시 방법을 호출하십시오 : $ draft.Display() –

5

Shay Levy의 대답은 거의 다라고 생각합니다. 단 하나의 누락 된 비트는 항목의 표시입니다. 이렇게하려면 는 당신이 필요로하는 모든 따라서, 관련 관리자 개체를 가져 자체를 표시하도록 지시하는 것입니다

$inspector = $draft.GetInspector 
$inspector.Display() 

은 장식적인 행동 GetInspector에 MSDN 도움말을 참조하십시오. 다른 답변을 바탕으로

+0

그레이트 !!! 마지막 부분! 당신의 도움을 주셔서 감사합니다! – Jason

19

, 나는 코드를 조금 아래로 손질하고

$ol = New-Object -comObject Outlook.Application 

$mail = $ol.CreateItem(0) 
$mail.Subject = "<subject>" 
$mail.Body = "<body>" 
$mail.save() 

$inspector = $mail.GetInspector 
$inspector.Display() 

이 초안 폴더에서 메일을 검색하는 불필요한 단계를 제거 사용했다. 덧붙여 말하자면, 두 개의 초안 전자 메일이 같은 제목을 가지고있을 때 Shay Levy의 코드에서 발생한 오류도 제거합니다.

1

생각해 보겠습니다. 많은 기본 사항 (주체, 수령인 또는 기타 측면)을 알고 있다면 몇 가지 단계를 거쳐 자신을 구할 수 있습니다. 먼저 이메일의 템플릿을 만들어 저장하십시오. 코드 어딘가에?

코드 자체는 다른 사람들이 게시 한 것과 동일합니다. 제이슨에서

차입 필요에 따라

$ol = New-Object -comObject Outlook.Application 
$msg = $ol.CreateItemFromTemplate(<<Path to template file>>) 

수정. 필드를 추가하거나 본문을 수정하십시오. $msg.GetInspector.Display()과 같은 방법으로 보내기 전에 메시지를 계속 볼 수 있습니다. 그런 다음 $msg.send()으로 전화하여 멀리 보내십시오!

관련 문제