3

I have a big problem. For a school club I have to write a script which sends emails automatically. I decided to use PowerShell for that.

My Code:

Send-MailMessage –To "[email protected]" –Subject "Test E-Mail" –Body "FIRST EMAIL WITH POWERSHELL" –SmtpServer "smtp.gmail.com" –From "[email protected]" 

My error code:

Send-MailMessage: The SMTP server requires a secure connection or the client has not been authenticated. The server response was: 5.7.0 Must issue a STARTTLS command first. o3sm51888528wrs.30 - gsmtp In line: 1 character: 1 + Send-MailMessage -To "[email protected]" Subject "Test E-Mail" -Bod ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: InvalidOperation: (System.Net.Mail.SmtpClient: SmtpClient) [Send-MailMessage], SmtpException + FullyQualifiedErrorId: SmtpException, Microsoft.PowerShell.Commands.SendMailMessage

And if I write

–SmtpServer "gsmtp.gmail.com" 

the error code is:

Send-MailMessage : The connection to the remote server cannot be established. In line:1 character:1 + Send-MailMessage -To "[email protected]"; -Subject "Test E-Mail"; -Bod . . . + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (System. Net. Mail. SmtpClient:SmtpClient) [Send-MailMessage], SmtpException + FullyQualifiedErrorId : SmtpException,Microsoft. PowerShell. Commands. SendMailMessage

Do you know what´s the problem?

2
  • 1
    Possible duplicate of send-MailMessage not working Commented Jan 10, 2019 at 19:08
  • As an aside: Send-MailMessage is considered obsolete, because it "does not guarantee secure connections to SMTP servers". If that isn't a concern in a given case, it still works and is unlikely to ever be removed, given PowerShell's commitment to backward compatibility. One modern alternative is the third-party Send-MailKitMessage cmdlet, which builds on the third-party MailKit library. Commented Jan 4, 2023 at 15:32

1 Answer 1

6

First, you will need to enable "less secure apps" in your Google account settings. To do so, click on the following link, then set the Allow less secure apps setting to ON.

Once this is done, you can send your message with Send-MailMessage. Here's a working example.

$MyEmail = "[email protected]" $creds = get-credential -Message 'Enter your email credentials' -Username $MyEmail $ServerParams = @{ SmtpServer = "smtp.gmail.com" From = $MyEmail Port = 587 UseSsl = $true Credential = $creds } $MessageParams = @{ 'To' = "[email protected]" 'Subject' = "Test E-Mail" 'Body' = "FIRST EMAIL WITH POWERSHELL" } Send-MailMessage @ServerParams @MessageParams 

Bonus: For a better readability and reusability, you can splat your parameters

(Reference:About Splatting )

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.