Avatar of E=mc2
E=mc2Flag for Canada

asked on 

Cause of a Powershell Scripting Error for sending email with attachment

What would cause this type of error in a Powershell script?

Send-MailMessage : The operation has timed out.
At C:\Users\Name\Desktop\Folder\script.ps1:17 char:1
+ Send-MailMessage @sendMailArgs
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Net.Mail.SmtpClient:SmtpClient) [Send-MailMessage], SmtpExcept
   ion
    + FullyQualifiedErrorId : SmtpException,Microsoft.PowerShell.Commands.SendMailMessage
PowershellScripting Languages

Avatar of undefined
Last Comment
E=mc2
Avatar of Tahir Qureshi
Tahir Qureshi
Flag of Australia image

you have to share your script Plus what command you are using
plus check smtp port is open or not
Avatar of Michelangelo
Michelangelo
Flag of Italy image

Check the SMTP server address: is it correct?is Port 25 reachable from where the script is running? As Tahir advised, provide more details.
Avatar of E=mc2
E=mc2
Flag of Canada image

ASKER

The port is open, since I am able to use the following script however it's successful only when I use it without the attachment.


$username = 'email1@gmail.com'
$password = 'password'
$sendMailArgs = @{
      To =                  'email2@gmail.com'
      From =                  $username
      Cc =                  'email3@gmail.com'
    Bcc =           'email1@hotmail.com'
      Subject =            'File as Attached'
      Body =                  'The file is attached'
      Attachments =      'C:\Users\User1\Desktop\Folder\File.pdf'
      SmtpServer =      'smtp.gmail.com'
      Port =                  587
      UseSsl =            $true
      Credential =      New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $username, (ConvertTo-SecureString $password -AsPlaintext -Force)
}
Send-MailMessage @sendMailArgs
Write-Host "Mail Sent"
ASKER CERTIFIED SOLUTION
Avatar of Qlemo
Qlemo
Flag of Germany image

Blurred text
THIS SOLUTION IS ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
Avatar of E=mc2
E=mc2
Flag of Canada image

ASKER

Outlook works fine.
And I even renamed the attachment and it still did not work.
I've done it 2 ways:

$username = 'jortega928@gmail.com'
$password = 'xxx'
 

$smtp = new-object Net.Mail.SmtpClient('smtp.gmail.com') 
$smtp.EnableSsl = $true 
$msg = new-object Net.Mail.MailMessage  

$msg.From = $username
$msg.To.Add("jortega@faboit.com") 
$msg.BodyEncoding = [system.Text.Encoding]::Unicode 
$msg.SubjectEncoding = [system.Text.Encoding]::Unicode 
$msg.IsBodyHTML = $true  
$msg.Subject = "File is Attached" 
$msg.Body = "The file is attached"
$msg.Attachments.Add("Z:\WORKING_DIR\file1.csv")

try{
$SMTP.Credentials = New-Object System.Net.NetworkCredential("$username", "$password"); 
$smtp.Send($msg)
}
catch{
    $er = $_.Exception.Message
    Write-Error $_.Exception.Message
}

Open in new window


(Other way):
try{
    $From = "jortega928@gmail.com"
    $To = "jortega@faboit.com"
    $Cc = "ceo@faboit.com"
    $Attachment = "Z:\WORKING_DIR\file1.csv"
    $Subject = "Email Subject"
    $Body = "Insert body text here"
    $SMTPServer = "smtp.gmail.com"
    $SMTPPort = "587"
    Send-MailMessage -From $From -to $To -Cc $Cc -Subject $Subject `
    -Body $Body -SmtpServer $SMTPServer -port $SMTPPort -UseSsl `
    -Credential (Get-Credential -UserName $From -Message "Insert the password for $From") -Attachments $Attachment
}
catch{
    Write-Error $_.Exception.Message
}

Open in new window


I get the following "The SMTP server requires a secure connection or the client was not authenticated.
error 5.5.1 (Authentication required).


This is because I have disabled this  (Less secure app) when I enabled it works.
https://myaccount.google.com/lesssecureapps

If you ask me I'd use the second since I wouldn't need to hardcode my password on the script ;)
Avatar of E=mc2
E=mc2
Flag of Canada image

ASKER

The smtp server was rejecting.
Scripting Languages
Scripting Languages

A scripting language is a programming language that supports scripts, programs written for a special run-time environment that automate the execution of tasks that could alternatively be executed one-by-one by a human operator. Scripting languages are often interpreted (rather than compiled). Primitives are usually the elementary tasks or API calls, and the language allows them to be combined into more complex programs. Environments that can be automated through scripting include software applications, web pages within a web browser, the shells of operating systems (OS), embedded systems, as well as numerous games. A scripting language can be viewed as a domain-specific language for a particular environment; in the case of scripting an application, this is also known as an extension language.

30K
Questions
--
Followers
--
Top Experts
Get a personalized solution from industry experts
Ask the experts
Read over 600 more reviews

TRUSTED BY

IBM logoIntel logoMicrosoft logoUbisoft logoSAP logo
Qualcomm logoCitrix Systems logoWorkday logoErnst & Young logo
High performer badgeUsers love us badge
LinkedIn logoFacebook logoX logoInstagram logoTikTok logoYouTube logo