কম্পিউটার

সেন্ড-মেইল মেসেজ:পাওয়ারশেল থেকে ইমেল পাঠানো

একটি SMTP সার্ভারের মাধ্যমে ইমেল বার্তা পাঠাতে, আপনি Send-MailMessage ব্যবহার করতে পারেন PowerShell cmdlet. আপনি PowerShell সংস্করণ 2.0 এবং নতুন সংস্করণে ইমেল পাঠাতে এই অন্তর্নির্মিত cmdlet ব্যবহার করতে পারেন (আগে আপনি .Net System.Net.Mail ব্যবহার করতে পারেন ইমেল পাঠানোর ক্লাস)। এই নিবন্ধে আমরা দেখাব কিভাবে Send-MailMessage ব্যবহার করতে হয় পাওয়ারশেল স্ক্রিপ্ট থেকে ইমেল পাঠাতে।

cmdlet এর সিনট্যাক্স পেতে, এই কমান্ডটি চালান:

get-help Send-MailMessage

Send-MailMessage [-To] <String[]> [-Subject] <String> [[-Body] <String>] [[-SmtpServer] <String>] [-Attachments <String[]>] [-Bcc <String[]>] [-BodyAsHtml] [-Cc <String[]>] [-Credential <PSCredential>] [-DeliveryNotificationOption {None | OnSuccess | OnFailure | Delay | Never}] [-Encoding <Encoding>] -From <String> [-Port <Int32>] [-Priority {Normal | Low | High}] [-UseSsl] [<CommonParameters>]
The Send-MailMessage cmdlet sends an email message from within Windows PowerShell.

সেন্ড-মেইল মেসেজ:পাওয়ারশেল থেকে ইমেল পাঠানো

এখানে প্রধান বিকল্প আছে:

  • থেকে এটি একটি প্রেরকের ঠিকানা (যদি SMTP সার্ভার প্রেরকের ঠিকানা চেক না করে এবং বেনামে ইমেল পাঠানোর অনুমতি দেয়, তাহলে আপনাকে সত্যিকারের smtp ঠিকানা প্রদান করতে হবে না। আপনি যেকোনো ইমেল ঠিকানার পক্ষ থেকে ইমেল বার্তা পাঠাতে পারেন);
  • প্রতি – প্রাপকের ইমেল ঠিকানা;
  • SMTPS সার্ভার – SMTP সার্ভারের ঠিকানা যার মাধ্যমে আপনি ইমেল পাঠাতে চান।
আপনি যদি $PSEmailServer-এ মেল সার্ভারের ঠিকানা সেট করেন পরিবেশ পরিবর্তনশীল, আপনাকে Send-MailMessage cmdlet-এ SMTP সার্ভার ঠিকানা নির্দিষ্ট করতে হবে না।

নিম্নলিখিত সাধারণ PowerShell কমান্ডটি একাধিক প্রাপককে নির্দিষ্ট বিষয় এবং বডি সহ একটি ইমেল পাঠাবে।

Send-MailMessage -From 'ps-script@woshub.com' -To 'serveradmin@woshub.com','helpdesk@woshub.com' -Subject "Test Email Alert" -Body "This is email body text" –SmtpServer 'smtp.woshub.com'

একটি cmdlet এর বৈশিষ্ট্যগুলি সম্পাদনা করা সহজ করার জন্য, ইমেল পাঠান কমান্ডটি নিম্নরূপ উপস্থাপন করা যেতে পারে:

Send-MailMessage `
-SmtpServer smtp.woshub.com `
-To 'serveradmin@woshub.com','helpdesk@woshub.com' `
-From 'ps-script@woshub.com' `
-Subject "Test" `
-Body "Sending email using PowerShell" `
-Encoding 'UTF8'

মনে রাখবেন যে শেষ কমান্ডে আমরা ইমেলের জন্য অতিরিক্তভাবে UTF8 এনকোডিং সেট করেছি। অন্যথায়, যদি ইমেলের বিষয় বা বডিতে ANSI অক্ষর থাকে, তাহলে সেগুলি ভুলভাবে প্রদর্শিত হবে৷

ডিফল্টরূপে, ANSI এবং ASCII এনকোডিংগুলি Windows PowerShell-এ ব্যবহৃত হয়। আপনি যদি আপনার PS সংস্করণটিকে PowerShell কোরে আপডেট করে থাকেন, তাহলে মনে রাখবেন যে এই সংস্করণটি ইতিমধ্যেই ডিফল্টরূপে UTF-8 এনকোডিং ব্যবহার করে।

ডিফল্টরূপে, Send-MailMessage cmdlet স্ট্যান্ডার্ড SMTP পোর্ট TCP 25 এর মাধ্যমে একটি ইমেল পাঠানোর চেষ্টা করে। যদি আপনার SMTP সার্ভার শুধুমাত্র একটি এনক্রিপ্ট করা প্রোটোকল ব্যবহার করে ইমেল পাঠাতে দেয়, তাহলে আপনি পোর্ট নম্বর নির্দিষ্ট করতে পারেন (প্রায়শই এটি 465 বা 587 হয় ) এবং UseSsl বিকল্প:

-SmtpServer 'smtp.woshub.com' -Port 465 –UseSsl

নীচের সারণীটি জনপ্রিয় পাবলিক ইমেল প্রদানকারীদের SMTP সার্ভারের প্যারামিটারগুলি দেখায় যা আপনি PowerShell থেকে বার্তা পাঠাতে ব্যবহার করতে পারেন (মনে রাখবেন যে আপনাকে অ্যাকাউন্ট ইন্টারফেসে SMTP এর মাধ্যমে ইমেল পাঠানোর অনুমতি দিতে হবে):

নাম SMTP সার্ভারের ঠিকানা পোর্ট এনক্রিপশনের ধরন
Gmail smtp.gmail.com 587

২৫

465

TLS

TLS

SSL

অফিস 365 smtp.office365.com 587 TLS
Outlook.com smtp-mail.outlook.com 587 TLS
ইয়াহু smtp.mail.yahoo.com 587 TLS
iCloud মেল smtp.mail.me.com 587 TLS
AOL  smtp.aol.com 465 SSL

যদি SMTP সার্ভার বেনামে ইমেল পাঠানো নিষিদ্ধ করে (রিলে অস্বীকার করা হয়), আপনি এই ত্রুটিটি দেখতে পাবেন:

5.7.1 Client was not authenticated.

তারপর আপনি –Credential ব্যবহার করে SMTP সার্ভারে প্রমাণীকরণ করতে পারেন বিকল্প।

প্রমাণীকরণের জন্য আপনি ইন্টারেক্টিভভাবে ব্যবহারকারীর শংসাপত্রের অনুরোধ করতে পারেন:

Send-MailMessage …… -Credential (Get-Credential)

সেন্ড-মেইল মেসেজ:পাওয়ারশেল থেকে ইমেল পাঠানো

এছাড়াও, আপনি ভেরিয়েবলে প্রমাণীকরণের জন্য ব্যবহার করা অ্যাকাউন্টটি নির্দিষ্ট করতে পারেন:

$cred = Get-Credential
Send-MailMessage ... -Credential $cred

আপনি যদি PowerShell স্ক্রিপ্টে সরাসরি SMTP সার্ভারের সাথে সংযোগ করতে একটি পাসওয়ার্ড সংরক্ষণ করতে চান, তাহলে এই সিনট্যাক্সটি ব্যবহার করুন:

$mypasswd = ConvertTo-SecureString "smP@ssdw0rrd2" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ("user1@woshub.com", $mypasswd)
Send-MailMessage ... –Credential $mycreds

PowerShell স্ক্রিপ্টে নিরাপদে সংরক্ষিত শংসাপত্র ব্যবহার করে একটি নিবন্ধ দেখুন।

আপনি যদি আপনার ইমেলে একটি সংযুক্তি যোগ করতে চান, তাহলে –Attachments ব্যবহার করুন বিকল্প নীচের উদাহরণে, আমরা HTML ফর্ম্যাটে একটি ইমেল পাঠাব এবং স্থানীয় ডিস্ক থেকে file1.txt এবং install.log সংযুক্ত করব। আমরা Gmail SMTP সার্ভার ব্যবহার করব (প্রথমে আপনাকে Gmail এ একটি অ্যাপ পাসওয়ার্ড তৈরি করতে হবে এবং আপনার Gmail পাসওয়ার্ডের পরিবর্তে smtp প্রমাণীকরণের জন্য এটি ব্যবহার করতে হবে):

$MailMessage = @{
To = "admin@woshub.com"
Bcc = "manager@woshub.com", "manager2@woshub.com"
From = "smtpsender1@gmail.com"
Subject = "DC Server Report"
Body = "<h1>Welcome!</h1> <p><strong>Generated:</strong> $(Get-Date -Format g)</p>”
Smtpserver = "smtp.gmail.com"
Port = 587
UseSsl = $true
BodyAsHtml = $true
Encoding = “UTF8”
Attachment = “C:\Logs\file1.txt”, “C:\Logs\install.log”
}
Send-MailMessage @MailMessage -Credential $cred

এখানে সংযুক্তি সহ HTML বিন্যাসে ইমেলটি Gmail ইন্টারফেসে কেমন দেখায়।

সেন্ড-মেইল মেসেজ:পাওয়ারশেল থেকে ইমেল পাঠানো

আপনি -DeliveryNotificationOption ব্যবহার করে একটি ইমেলের জন্য একটি ডেলিভারি বিজ্ঞপ্তি (রসিদ পড়ুন) কনফিগার করতে পারেন . একটি ডেলিভারি বিজ্ঞপ্তি আপনাকে অবহিত করার অনুমতি দেয় যদি প্রাপক একটি ইমেল পায়।

উপলব্ধ বিজ্ঞপ্তি প্রকারগুলি হল:

  • অন সাকসেস (ডেলিভারি সফল হলে অবহিত করুন)
  • অব্যর্থতা (ডেলিভারি ব্যর্থ হলে অবহিত করুন)
  • বিলম্ব (ডেলিভারিতে দেরি হলে অবহিত করুন)


  1. আপনি কি একবারে Gmail থেকে সমস্ত ইমেল মুছতে পারেন?

  2. কিভাবে আপনার Vue.js অ্যাপ্লিকেশন থেকে EmailJS এর ​​মাধ্যমে ইমেল পাঠাবেন

  3. আপনার ম্যাক থেকে এনক্রিপ্ট করা ইমেলগুলি কীভাবে পাঠাবেন

  4. এক্সেল তালিকা থেকে কীভাবে ইমেল পাঠাবেন (2টি কার্যকর উপায়)