отправить письмо от powershell - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь отправить почту из PowerShell без повышения имени пользователя и пароля (я хочу, чтобы это было автоматически). Я использую приведенный ниже код, но получаю сообщение об ошибке The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.0 Authentication Required.
Когда я просто ввожу Get-Credentials это работает нормально Это мой код


    $pass = ConvertTo-SecureString “mypassword” -AsPlainText -Force
    $From = "uname@gmail.com"
    $To = "uname@gmail.com"
    $Attachment = "C:\hosts.txt"
    $Subject = "files from script"
    $Body = "none"
    $SMTPServer = "smtp.gmail.com"
    $SMTPPort = "587" 
    $Cred = New-Object System.Management.Automation.PSCredential (“uname@gmail.com”, $pass)
    Send-MailMessage -From $From -to $To -Subject $Subject -Body $Body -BodyAsHtml -SmtpServer $SMTPServer -Port $SMTPPort -Credential $cred -Attachments $Attachment -UseSsl

1 Ответ

0 голосов
/ 04 мая 2020

Храните свои кредиты в защищенном файле, реестре или Windows диспетчере учетных данных и при необходимости звоните оттуда. Множество примеров по всему Интернету.

• Защита учетных данных и паролей

Безопасное хранение учетных данных на диске

Быстрое и безопасное хранение учетных данных - PowerShell

Сохранение зашифрованных паролей в реестре для PowerShell

Управление учетными данными в Windows 8/2012 PasswordVault с использованием Powershell PasswordVault.psm1

Powershell: безопасное шифрование и хранение учетных данных для использования со сценариями автоматизации

Пример из последней ссылки:

<# Set and encrypt credentials to file using default method #>

$credential = Get-Credential
$credential.Password | 
ConvertFrom-SecureString | 
Set-Content c:scriptsencrypted_password1.txt

<# 
    Set some variables
    ...
#>
$emailusername = "myemail"
$encrypted = Get-Content c:scriptsencrypted_password.txt | 
ConvertTo-SecureString
$credential = New-Object System.Management.Automation.PsCredential($emailusername, $encrypted)

if($something = $somethingElse)
{
    <#
        Do some stuff
        ...
    #>

    $EmailFrom = "myemail@gmail.com"
    $EmailTo = "myemail+alerts@gmail.com"
    $Subject = "I did some stuff!" 
    $Body = "This is a notification from Powershell." 
    $SMTPServer = "smtp.gmail.com" 
    $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587) 
    $SMTPClient.EnableSsl = $true 
    $SMTPClient.Credentials = $credential;
    $SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
}

Это очень распространенная вещь, позволяющая ограничить необходимость ввода кредитов вручную / несколько раз и очень хорошо задокументированная с помощью модулей. в MS powershellgallery.com, чтобы использовать для этого типа вещей.

Find-Module -Name '*credential*' | 
Format-Table -AutoSize
<#
# Results

Version        Name                          Repository Description 
-------        ----                          ---------- -----------    
2.0            CredentialManager             PSGallery  Provides access to credentials ...
1.0.4          WindowsCredential             PSGallery  Management module for Windows Credential Store.
...
1.1.0          CredentialSpec                PSGallery  Tools to create and find Credential Spe ...
4.5            BetterCredentials             PSGallery  A (compatible) major upgrade for Get-Credential,  ...
1.0.11         pscredentialmanager           PSGallery  This module allows management and autom ...
...                     
1.0.0          CredentialLocker              PSGallery  CredentialLocker is a module that provide ...    
1.1            CredentialsManager            PSGallery  The module Credentials Manager provides y ...
1.2.2.20190715 SimplyCredential              PSGallery  Simply Module for windows credentials.        
1.0.2          CredentialManagement          PSGallery  Manage Credentials stored in the Windows Credential Manager
...
1.1.0          PSCredentialTools             PSGallery  PSCredentialTools provides various methods for ...
1.0.0.0        SelectCredential              PSGallery  A module for selecting the credential stor ...     
2.1            SecuredCredential             PSGallery  SecuredCredential Routines for modules suppor ....
1.0.477        PSCredentialStore             PSGallery  A simple credential manager to store and  ...
...                                             
3.0            CredentialUtility             PSGallery  This is a credential manager tool which co ...
1.3            MiCredentialModule            PSGallery  Saves/Retrieves credentials to/from a file (w ...
1.3            vaultcredential               PSGallery  Manages credentials in the credential vault       
0.0.1          SecureCredentials             PSGallery  This module allow to secure store encrypted  ... 
#>
...