Skip to main content
Our Tech Ideas

How to Send Emails Using PowerShell with SMTP Authentication

Sending emails programmatically can be a crucial part of automating tasks, managing notifications, or integrating with various services. PowerShell, a powerful scripting language for Windows, makes it easy to send emails using the Send-MailMessage cmdlet. In this blog post, we’ll walk through a PowerShell script that sends an email using SMTP with authentication, ideal for services like SendGrid.

Why Use PowerShell for Sending Emails?

PowerShell is a versatile tool that allows system administrators and developers to automate a variety of tasks, including sending emails. Its ability to handle complex scripting and its integration with other systems make it a valuable tool for both simple and advanced email automation.

Prerequisites

Before we dive into the script, ensure you have:

  • A PowerShell environment (Windows PowerShell or PowerShell Core).
  • SMTP server credentials (such as those from SendGrid or any other SMTP service).
  • Access to the server you are sending emails from.

The PowerShell Script

Here’s a detailed PowerShell script that sends an email using SMTP with authentication:

# SMTP Server Configuration
$smtpServer = "smtp.sendgrid.net"  # Replace with your SMTP server address
$smtpPort = 587  # Replace with the SMTP port
$smtpUser = "your_username"  # Replace with your SMTP username
$smtpPassword = "your_password"  # Replace with your SMTP password

# Email Details
$from = "sender@example.com"  # Replace with the sender's email address
$to = "recipient@example.com"  # Replace with the recipient's email address
$subject = "Test Email from PowerShell"
$body = "This is a test email sent using PowerShell with SMTP."

# Create a credential object
$securePassword = ConvertTo-SecureString $smtpPassword -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential ($smtpUser, $securePassword)

# Send the email
Send-MailMessage -From $from -To $to -Subject $subject -Body $body -SmtpServer $smtpServer -Port $smtpPort -UseSsl -Credential $credential

Write-Host "Email sent successfully!"
PowerShell

    Tips for Using the Script

    • Security: Avoid hardcoding sensitive information directly into your script. Use secure methods to handle credentials, such as encrypted files or secure vaults.
    • Testing: Before deploying the script in a production environment, test it with different configurations to ensure it works as expected.
    • Error Handling: Consider adding error handling to manage cases where the email fails to send due to network issues or incorrect credentials.

    Conclusion

    Using PowerShell to send emails with SMTP authentication is a powerful way to automate communication tasks. Whether you are managing alerts, sending notifications, or integrating email capabilities into your applications, this script provides a solid foundation for your needs. By following this guide, you can quickly set up and customize your email sending solution with PowerShell.