SMTP सर्वर के माध्यम से ईमेल संदेश भेजने के लिए, आप मेल संदेश भेजें . का उपयोग कर सकते हैं पावरशेल सीएमडीलेट। आप इस अंतर्निहित cmdlet का उपयोग PowerShell संस्करण 2.0 और नए में ईमेल भेजने के लिए कर सकते हैं (पहले आप .Net System.Net.Mail
का उपयोग कर सकते हैं। ईमेल भेजने के लिए कक्षा)। इस लेख में हम दिखाएंगे कि भेजें-मेल संदेश
. का उपयोग कैसे करें PowerShell स्क्रिप्ट से ईमेल भेजने के लिए।
cmdlet का सिंटैक्स प्राप्त करने के लिए, यह कमांड चलाएँ:
सहायता प्राप्त करें-भेजें-मेलसंदेश
यहां मुख्य विकल्प दिए गए हैं:
- प्रेषक एक प्रेषक का पता है (यदि एसएमटीपी सर्वर प्रेषक के पते की जांच नहीं करता है और गुमनाम रूप से ईमेल भेजने की अनुमति देता है, तो आपको एक वास्तविक एसएमटीपी पता प्रदान करने की आवश्यकता नहीं है। आप किसी भी ईमेल पते की ओर से ईमेल संदेश भेज सकते हैं);ली>
- प्रति - प्राप्तकर्ता ईमेल पता;
- एसएमटीपीसर्वर -एसएमटीपी सर्वर का पता जिसके जरिए आप ईमेल भेजना चाहते हैं।
$PSEmailServer
. में सेट करते हैं पर्यावरण चर, आपको Send-MailMessage cmdlet में SMTP सर्वर पता निर्दिष्ट करने की आवश्यकता नहीं है। निम्नलिखित सरल पावरशेल कमांड कई प्राप्तकर्ताओं को निर्दिष्ट विषय और मुख्य भाग के साथ एक ईमेल भेजेगा।
भेजें-मेलसंदेश-'[email protected]' से-'[email protected]','[email protected]' तक -विषय "ईमेल अलर्ट का परीक्षण करें" -बॉडी "यह ईमेल बॉडी टेक्स्ट है" -SmtpServer 'smtp.woshub.com'
एक cmdlet की विशेषताओं को संपादित करना आसान बनाने के लिए, ईमेल भेजें कमांड को निम्नानुसार दर्शाया जा सकता है:
भेजें-मेलसंदेश `
-SmtpServer smtp.woshub.com `
- '[email protected]','[email protected]' `
-से 'ps- [email protected]' `
-विषय "टेस्ट" `
-बॉडी "PowerShell का उपयोग करके ईमेल भेजना" `
-एन्कोडिंग 'UTF8'
ध्यान दें कि अंतिम कमांड में हमने ईमेल के लिए UTF8 एन्कोडिंग को अतिरिक्त रूप से सेट किया है। अन्यथा, यदि ईमेल विषय या मुख्य भाग में गैर एएनएसआई वर्ण हैं, तो उन्हें गलत तरीके से प्रदर्शित किया जाएगा।
डिफ़ॉल्ट रूप से, Windows PowerShell में ANSI और ASCII एन्कोडिंग का उपयोग किया जाता है। यदि आपने अपने PS संस्करण को PowerShell Core में अपडेट किया है, तो ध्यान रखें कि यह संस्करण पहले से ही डिफ़ॉल्ट रूप से UTF-8 एन्कोडिंग का उपयोग करता है।डिफ़ॉल्ट रूप से, Send-MailMessage cmdlet मानक SMTP पोर्ट TCP 25 के माध्यम से एक ईमेल भेजने का प्रयास करता है। यदि आपका SMTP सर्वर केवल एन्क्रिप्टेड प्रोटोकॉल का उपयोग करके ईमेल भेजने की अनुमति देता है, तो आप पोर्ट नंबर निर्दिष्ट कर सकते हैं (अक्सर यह 465 या 587 होता है) ) और Ssl का उपयोग करें विकल्प:
-SmtpServer 'smtp.woshub.com' -पोर्ट 465 -UseSsl
नाम | SMTP सर्वर पता | पोर्ट | एन्क्रिप्शन प्रकार |
जीमेल | smtp.gmail.com | 587 25पी> 465 | TLS टीएलएस एसएसएल |
कार्यालय 365 | smtp.office365.com | 587 | TLS |
Outlook.com | smtp-mail.outlook.com | 587 | TLS |
याहू | smtp.mail.yahoo.com | 587 | TLS |
आईक्लाउड मेल | smtp.mail.me.com | 587 | TLS |
एओएल | smtp.aol.com | 465 | एसएसएल |
यदि SMTP सर्वर गुमनाम रूप से ईमेल भेजने पर रोक लगाता है (रिले अस्वीकार कर दिया गया है), तो आपको यह त्रुटि दिखाई देगी:
5.7.1 क्लाइंट प्रमाणित नहीं किया गया था।
फिर आप –Credential . का उपयोग करके SMTP सर्वर पर प्रमाणित कर सकते हैं विकल्प।
प्रमाणित करने के लिए आप अंतःक्रियात्मक रूप से उपयोगकर्ता क्रेडेंशियल्स का अनुरोध कर सकते हैं:
भेजें-मेलसंदेश……-क्रेडेंशियल (प्राप्त-क्रेडेंशियल)
साथ ही, आप वेरिएबल में प्रमाणीकरण के लिए उपयोग किए जाने वाले खाते को निर्दिष्ट कर सकते हैं:
$cred =Get-Credential
Send-MailMessage ... -Credential $cred
यदि आप SMTP सर्वर से सीधे PowerShell स्क्रिप्ट में कनेक्ट करने के लिए पासवर्ड सहेजना चाहते हैं, तो इस सिंटैक्स का उपयोग करें:
$mypasswd =ConvertTo-SecureString "smP@ssdw0rrd2" -AsPlainText -Force
$mycreds =New-Object System.Management.Automation.PSCredential ("[email protected]", $mypasswd)
भेजें-मेलसंदेश... -क्रेडेंशियल $mycreds
यदि आप अपने ईमेल में कोई अटैचमेंट जोड़ना चाहते हैं, तो –अटैचमेंट
. का उपयोग करें विकल्प। नीचे दिए गए उदाहरण में, हम HTML प्रारूप में एक ईमेल भेजेंगे और स्थानीय डिस्क से file1.txt और install.log संलग्न करेंगे। हम जीमेल एसएमटीपी सर्वर का उपयोग करेंगे (पहले आपको जीमेल में एक ऐप पासवर्ड बनाना होगा और अपने जीमेल पासवर्ड के बजाय एसएमटीपी प्रमाणीकरण के लिए इसका इस्तेमाल करना होगा):
जेनरेट किया गया: $(गेट-डेट - फ़ॉर्मैट g)$MailMessage = @{
To = "[email protected]"
Bcc = "[email protected]", "[email protected]"
From = "smtpsender1 @gmail.com"
विषय = "DC सर्वर रिपोर्ट"
बॉडी = "स्वागत है!
Smtpserver = "smtp.gmail.com"
पोर्ट = 587
UseSsl = $true
BodyAsHtml = $true
एन्कोडिंग =“UTF8”
अटैचमेंट = “C:\Logs\file1.txt”, “C:\Logs\install.log”
}
मेल मैसेज भेजें @MailMessage -Credential $cred कोड>
यहां बताया गया है कि अटैचमेंट के साथ HTML प्रारूप में ईमेल जीमेल इंटरफेस में कैसा दिखता है।
आप -DeliveryNotificationOption
का उपयोग करके ईमेल के लिए डिलीवरी नोटिफिकेशन (रसीद पढ़ें) को कॉन्फ़िगर कर सकते हैं . यदि प्राप्तकर्ता को कोई ईमेल प्राप्त होता है, तो डिलीवरी सूचना आपको सूचित करने की अनुमति देती है।
उपलब्ध अधिसूचना प्रकार हैं:
- सफल होने पर (डिलीवरी सफल होने पर सूचित करें)
- विफलता पर (डिलीवरी असफल होने पर सूचित करें)
- विलंब (डिलीवरी में देरी होने पर सूचित करें)