2009-09-21 14 views
12

का उपयोग कर Outlook ईमेल ड्राफ्ट बनाएं I कार्य पर प्रक्रिया स्वचालित करने के लिए PowerShell स्क्रिप्ट बना रहा हूं। इस प्रक्रिया के लिए एक ईमेल भरना होगा और किसी और को भेजा जाना चाहिए। ईमेल हमेशा मोटे तौर पर उसी प्रकार के टेम्पलेट का पालन करेगा, हालांकि यह शायद हर बार कभी भी समान नहीं होगा, इसलिए मैं Outlook में एक ईमेल ड्राफ्ट बनाना चाहता हूं और ईमेल विंडो खोलना चाहता हूं ताकि अतिरिक्त विवरण भेजने से पहले भर दिया जा सके।PowerShell

मैंने ऑनलाइन खोज करने के लिए थोड़ा सा किया है लेकिन मुझे लगता है कि चुपचाप ईमेल भेजने के लिए कुछ कोड मिल सकता है। कोड इस प्रकार है:

$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

एनपी :) प्रदर्शन विधि को कॉल करें: $ ड्राफ्ट। प्रदर्शन() –

5

मुझे लगता है कि शै लेवी का जवाब लगभग है: केवल एक ही बिट गायब आइटम का प्रदर्शन है। ऐसा करने के लिए, आप सभी की जरूरत प्रासंगिक निरीक्षक वस्तु हो और खुद को प्रदर्शित करने के लिए यह बताने के लिए है, इस प्रकार:

$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() 

यह ड्राफ्ट फ़ोल्डर से मेल लाते के अनावश्यक कदम को हटा का उपयोग किया है। संयोग से, यह शै लेवी के कोड में हुई एक त्रुटि को भी हटा देता है जब दो ड्राफ्ट ईमेलों का एक ही विषय था।

1

सोचा कि मैं इसमें भी शामिल करूंगा। यदि आप बहुत सारी मूल बातें (विषय, प्राप्तकर्ता, या अन्य पहलुओं) जानते हैं तो कुछ ऐसे कदम हैं जिन्हें आप स्वयं बचा सकते हैं। पहले ईमेल का टेम्पलेट बनाएं और उसे सहेजें, उदा। शायद कोड के साथ कहीं?

कोड के रूप में, यह वही है जो दूसरों ने पोस्ट किया है। जेसन से

उधार:

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

संशोधित रूप में की जरूरत है। खेतों में संलग्न करें या शरीर को संशोधित करें। संदेश को अभी भी $msg.GetInspector.Display() भेजने से पहले देखा जा सकता है। फिर भेजने के लिए $msg.send() पर कॉल करें!