Quantcast
Channel: The Official Scripting Guys Forum! forum
Viewing all articles
Browse latest Browse all 15028

Sending E-mail from Powershell Failing with .rar attachments

$
0
0

Hello,

Below Powershell script sends email reading a csv file and attachments of .pdf files perfectly.
I want to send compressed file by winrar in .rar as attachments but it fails to send. 

Error: Email Send failed: Exception calling "Send" with "1" argument(s): "Failure sending mail."

Please tell me how to overcome this problem.

Function Write-Log($LogText){
$LogEntry=@"
$((Get-Date).ToString("dd-MM-yyyy HH:mm:ss")) > $($LogText)
"@
$LogEntry
$LogEntry | Add-Content 'c:\send\Log\success.txt'
}
$rootfolder='C:\send'
$files=Get-ChildItem "$rootfolder\CSV\*.csv"
$def = "username@gmail.com"
$from=$def

ForEach($file in $files){
    Write-Log "Found file $file"
    $content = Get-Content -Path $file
    $content = $content -replace '"',''
    }
 $content | ConvertFrom-Csv -delimiter '|'  | ForEach-Object{
    #Import-CSV $file | ForEach-Object{
        $attachment="$rootfolder\rar\$($_.shippernbr).rar"
        $shippernbr = ($_.Shippernbr)
        $sub = 'Subject #' + ' ' + $shippernbr
        $Body = 'Dear Sir, Please find attachment of files in winrar. Thanks.'

        Write-Log "Attachment is $($attachment)"
        $email=$_.email
        Write-Log "Email address is $($email)"
        $emailCC=$_.emaillCC
        Write-Log "Email CC address is $($emailcc)"
       
        If($_.Email){
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = { return $true }
$SMTPServer = "smtp.gmail.com"
$SMTPPort = "587"
$Username = $from
$Password = "password"

$to = $email
$cc = $emailcc
$subject = $sub
$body = $Body
$attachment = $attachment

$message = New-Object System.Net.Mail.MailMessage
$message.subject = $subject
$message.body = $body
$message.to.add($to)
$message.cc.add($cc)
$message.from = $username
$message.attachments.add($attachment)

$smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort);
$smtp.EnableSSL = $true
$smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password);
$smtp.send($message)
      
        if($?){
            Write-Log "Email Sent Successfully"
            Move-Item $file -Destination "$rootfolder\Archive\"
            Write-Log "Moved file $($file) to $rootfolder\Archive\"
            Move-Item $attachment -Destination "$rootfolder\Archive\"
            Write-Log "Moved file $($attachment) to $rootfolder\Archive\"
        }else{
            Write-Log "Email Send failed: $($error[0])";break  
}
}
}


Viewing all articles
Browse latest Browse all 15028

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>