לצורך פקודת PowerShell של היום, אנו מכסים את פקודת ה-PowerShell Send-MailMessage. פקודת PowerShell זו משרתת מטרה אחת ויחידה; לשלוח דוא"ל בהרבה דרכים שונות.
מכיוון שישנן כל כך הרבה דרכים שבהן הפקודה Send-MailMessage יכולה לשלוח הודעות דוא"ל, בואו נצלול פנימה ונתחיל לכסות את כל הדוגמאות הנפוצות שעלולות להיתקל בהן. במאמר זה, אנו הולכים לכסות דוגמאות רבות החל מהפשוטות ביותר ועד לכמה תרחישים שאני מאחל לאף אחד!
הפוסט הזה יהיה משאב מעולה להוסיף לסימנייה במקרה שתתקלו במקרים בהם תצטרכו לשלוח דוא"ל עם PowerShell ותשכחו את התחביר.
שרת ה-SMTP
כל דוא"ל חייב לעבור דרך שרת SMTP במקום כלשהו דרך שרת ופורט. כדי לציין את שרת ה-SMTP לשימוש, השתמשו בפרמטר בשם SMTPServer
המאפשר לכם לציין את שרת ה-SMTP להקים חיבור ולהעביר דואר דרכו. עם זאת, זה לא חובה.
אם אתם לא מציינים ערך עבור הפרמטר SMTPServer
, הערך המאוחסן במשתנה ההעדפות $PSEmailServer
ייעשה בשימוש. תוכלו להקצות ערך למשתנה זה כמו שתעשו עם כל משתנה אחר.
אך משתנה זה לא חי בכל ההפעלות של PowerShell. זה אומר שעליך להגדיר אותו בכל פעם שהפעלת חלון חדש של PowerShell. מכאן, אני ממליץ להשתמש בו על ידי הגדרתו מעל הייחוס שלך ל־Send-MailMessage
או שלא להגדיר אותו בכלל. במקום זאת, אני אישית ממליץ לספק את ערך הפרמטר SMTPServer
. בכך אתה לא צריך לנהל משתנה חיצוני שעשוי להשתנות עליך.
פתחת על
ברירת מחדל, הערך שבו הפקודה תנסה לשלוח אימייל דרך שרת SMTP הוא פורט 25. זהו SMTP פשוט ולא מוצפן. אך, כיום, נפוץ יותר לשלוח אימיילים מוצפנים באמצעות SSL/TLS (נכסות את התרחישים הללו מאוחר יותר).
אם נדרש לשנות את הפורט מ־25, ניתן להשתמש בפרמטר Port
.
נמענים ושולחים
כדי לשלוח אימייל לנמענים שונים באמצעות שיטות כמו To, Cc ו־Bcc, לפקודה יש פרמטרים שונים לכך.
הפרמטרים To, Cc ו־Bcc בפקודת Send-Mailmessage
לפקודה יש שלושה פרמטרים כאשר כל אחד תומך במספר נמענים מרובים המופרדים בפסיק בשמות To
, Cc
ו־Bcc
.
ניתן לציין כתובות יחידות כמו בדוגמה למטה.
או ניתן לציין מספר נמענים עבור כל ערך של פרמטר.
הפרמטר From
בעת שליחת דוא"ל, ניתן גם לציין את הפרמטר From
שיקבע את הכותרת של השולח בדוא"ל. פרמטר זה מאפשר רק כתובת דוא"ל אחת. אם הנמען בוחר להשיב לדוא"ל, הכתובת דוא"ל שתצוין תהיה זו שהתשובה תחזור אליה.
כברירת מחדל, בשימוש בכתובת דוא"ל תופיע פשוט הכתובת בשדה השולח של הנמען. אם תרצה לציין שם או תווית כלשהי כמו תיבת דואר חשבון שירות, תוכל גם לציין שם וכתובת דוא"ל כמו:
שים לב שהוזן הפרמטר
Subject
. פרמטר זה נדרש תמיד. תראה שימוש בפרמטר זה בכל הדוגמאות.
גוף
הפרמטר Body
מאפשר לך לציין מה יהיה בגוף הדוא"ל. בפשטות מרבית, תוכל לציין טקסט כלשהו והפקודה תשלח אותו בפליינטקסט.
שליחת דוא"ל עם גוף בפורמט HTML
תוכל גם לשלוח גוף הדוא"ל בפורמט HTML במקום פליינטקסט. כדי לעשות זאת, השתמש באותו הפרמטר Body
שתשתמש עם פליינטקסט, אך השתמש ב-HTML עבור המחרוזת והשתמש בפרמטר המתג BodyAsHtml
.
שימו לב לדוגמה למעלה, סגרתי את מחרוזת הגוף בתוך
@'
ו-'@
. זה נקרא מחרוזת ממוקמת. זה מאפשר לך להגדיר מחרוזות ארוכות שנראות לרוב בגופי הדוא"ל ומכילות מעברי שורה. מחרוזות מוקמות שומרות על התבנית של המחרוזות והן דרך נהדרת להגדיר את גוף הדוא"ל במיוחד אם הוא ב-HTML.
קידוד
אם יש לך תווים מיוחדים בנושא או בגוף הדוא"ל שלך, תוכל להשתמש בפרמטר Encoding
. הפרמטר הזה מאפשר לך לקודד את נושא הדוא"ל והגוף באמצעות סוג הקידוד המצוין לפני ששולחים אותו.
יש לך כמה אפשרויות כאן:
- ASCII (בררת המחדל)
- UTF8
- UTF7
- UTF32
- Unicode
- BigEndianUnicode
- בררת מערכת
- OEM
קבצים מצורפים
הפקודה יכולה גם לצרף קובץ או יותר. בכדי לעשות זאת, תוכל להשתמש בפרמטר Attachments
ולספק את הנתיב לקובץ/קבצים שברצונך לצרף.
תוכל גם לציין קבצים מרובים באמצעות אוסף על ידי הפרדתם בפסיק.
פרמטר Attachments
מאפשר גם לחבר קבצים באמצעות פקודות כמו Get-Item
ו-Get-ChildItem
לפקודה Send-MailMessage
.
דוא"ל מאובטח ומאומת
באופן ברירת המחדל, ה-cmdlet שולח אימייל דרך תקשורת SMTP לא מוצפנת דרך פורט 25. אך יש בו גם תמיכה בשליחת אימייל מוצפן דרך SSL/TLS עם שם משתמש וסיסמה.
אם תנסה להעביר אימייל דרך שרת SMTP שדורש אימות, הפקודה תיכשל עם הודעת שגיאה כמו בדוגמה למטה.
כדי לתקן את זה, עליך לציין תחילה את הפורט (בדרך כלל 587 ל-TLS) ואת הפרמטר UseSsl
. זה אומר ל-cmdlet לנסות להתחבר לפורט 587 בשרת SMTP ולהצפין את ההודעה כולה. תצטרך לציין גם (תמיד?) את שם המשתמש/הסיסמה לאימות בשרת SMTP באמצעות הפרמטר Credential
.
מעלה זאת אני משיג אובייקט אימות (PSCredential) באמצעות ה-cmdlet
Get-Credential
. זה מהווה בעיתיות לפעמים מכיוון שזה משתמש במצב אינטראקטיבי שמשהו את התסריט לבקש שם משתמש וסיסמה. כדי למנוע זאת, תוכל ליצור אובייקט PSCredential במהירות.
A common email example is to use Gmail. Using the knowledge you’ve gained above, you can now easily send email through Gmail using the smtp.gmail.com SMTP server as shown below.
הקצאת עדיפות לאימייל
אף שתכונה של אימייל שאני אישית מעדיף שתימות, תוכל להקצות רמות עדיפות לאימיילים שאתה שולח דרך הפרמטר Priority
. העדיפות הזו מפורטת לאורך דרכים שונות על ידי הלקוח לאימייל.

Send-mailmessage מאפשר לך להקצות אימייל עם שלוש עדיפויות שונות.
- רגיל (ברירת מחדל)
- גבוה
- נמוך
בבקשה, הנה התרגום:
אך אנא, למענה על כל דבר, אל תחשוב שכל הודעות הדואר האלקטרוני שלך הן עדיפות גבוהה!
הודעות משלוח
בסופו של דבר, תוכל לספק הודעות משלוח לדואר אלקטרוני. הודעות משלוח הן אשר נקראות בדרך כלל קבלות קריאה בקליינטים של דואר אלקטרוני מסוימים. הודעות משלוח מאפשרות לך לקבל התראה כאשר הדואר אושר על ידי הנמען. עם זאת, על הנמען לאפשר זאת עדיין.
יש לך ארבע אפשרויות כאשר אתה מבקש התראות משלוח.
- ללא (ברירת מחדל)
- בהצלחה (כאשר הדואר נמסר בהצלחה)
- בכישלון (התראה אם המשלוח נכשל)
- עיכוב (כאשר הדואר מתעכב דרך שרת SMTP)
ניתן לציין אפשרות התראת משלוח על ידי שימוש בפרמטר DeliveryNotificationOptions
.
ניתן גם לבקש התראות משלוח מרובות בבת אחת על ידי נפרדות בפסיק.
סיכום
בפוסט זה, למדת על פקודת ה-Send-mailmessage ועל כל הפרמטרים שיש לה, יחד עם דוגמאות. אני מקווה שהפוסט הזה יכול לשמש כמקור מידע עבורך בעת שימוש בפקודת ה-Send-mailmessage.
קריאה נוספת
אל תשכח לבדוק פוסטים נוספים קשורים!