with via script para multiple enviar ejemplos correo attachments security powershell gmail

security - script - Enviar correo a través de gmail con Send-MailMessage de PowerShell V2



send email powershell script (13)

Acabo de encontrar esta pregunta ... aquí está mi PowerShell Send-MailMessage Sample para Gmail. Solución probada y funcional:

$EmailFrom = "[email protected]" $EmailTo = "[email protected]" $Subject = "Notification from XYZ" $Body = "this is a notification from XYZ Notifications.." $SMTPServer = "smtp.gmail.com" $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587) $SMTPClient.EnableSsl = $true $SMTPClient.Credentials = New-Object System.Net.NetworkCredential("username", "password"); $SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)

Simplemente cambie $ EmailTo, y nombre de usuario / contraseña en $ SMTPClient.Credentials .. no incluya @ gmail.com en su nombre de usuario.

tal vez esto sea una ayuda para otros que se encuentren con esta pregunta ...

Estoy tratando de encontrar la forma de usar Send-MailMessage PowerShell V2 con gmail.

Esto es lo que tengo hasta ahora.

$ss = new-object Security.SecureString foreach ($ch in "password".ToCharArray()) { $ss.AppendChar($ch) } $cred = new-object Management.Automation.PSCredential "[email protected]", $ss Send-MailMessage -SmtpServer smtp.gmail.com -UseSsl -Credential $cred -Body...

Obtuve el siguiente error

Send-MailMessage : The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required. Learn more at At foo.ps1:18 char:21 + Send-MailMessage <<<< ` + CategoryInfo : InvalidOperation: (System.Net.Mail.SmtpClient:SmtpClient) [Send-MailMessage], SmtpException + FullyQualifiedErrorId : SmtpException,Microsoft.PowerShell.Commands.SendMailMessage

¿Estoy haciendo algo mal, o Send-MailMessage no está completamente horneado (estoy en CTP 3)?

Algunas restricciones adicionales

  1. Quiero que esto no sea interactivo, por lo que get-credential no funcionará
  2. La cuenta de usuario no está en el dominio de Gmail, sino que es un dominio registrado de aplicaciones de Google
  3. Para esta pregunta, solo estoy interesado en el cmdlet Send-MailMessage , el envío de correo a través de la API .Net normal se entiende bien.

Acabo de tener el mismo problema y me encuentro con esta publicación. En realidad, me ayudó a ejecutarlo con el comando nativo Send-MailMessage-let y aquí está mi código:

$cred = Get-Credential Send-MailMessage ....... -SmtpServer "smtp.gmail.com" -UseSsl -Credential $cred -Port 587

Sin embargo, para que Gmail me permitiera usar el servidor SMTP, tuve que iniciar sesión en mi cuenta de Gmail y debajo de este enlace https://www.google.com/settings/security establecer el "Acceso para aplicaciones menos seguras" a "Habilitado". ¡Entonces finalmente funcionó!

ciao marco


Aquí está

$filename = “c:/scripts_scott/test9999.xls” $smtpserver = “smtp.gmail.com” $msg = new-object Net.Mail.MailMessage $att = new-object Net.Mail.Attachment($filename) $smtp = new-object Net.Mail.SmtpClient($smtpServer ) $smtp.EnableSsl = $True $smtp.Credentials = New-Object System.Net.NetworkCredential(“username”, “password_here”); # Put username without the @GMAIL.com or – @gmail.com $msg.From = “[email protected]” $msg.To.Add(”[email protected]”) $msg.Subject = “Monthly Report” $msg.Body = “Good MorningATTACHED” $msg.Attachments.Add($att) $smtp.Send($msg)

Avíseme si San le ayuda a usar el mensaje de envío de correo electrónico también en Www.techjunkie.tv. De esa manera también creo que es mucho mejor y más puro de usar


Después de muchas pruebas y una larga búsqueda de soluciones. Encontré un código de script funcional e interesante en http://www.powershellmagazine.com/2012/10/25/pstip-sending-emails-using-your-gmail-account/ .

$param = @{ SmtpServer = ''smtp.gmail.com'' Port = 587 UseSsl = $true Credential = ''[email protected]'' From = ''[email protected]'' To = ''[email protected]'' Subject = ''Sending emails through Gmail with Send-MailMessage'' Body = "Check out the PowerShellMagazine.com website!" Attachments = ''D:/articles.csv'' } Send-MailMessage @param

Disfrutar


En una máquina con Windows 8.1 recibí Send-MailMessage para enviar un correo electrónico con un archivo adjunto a través de GMail usando la siguiente secuencia de comandos:

$EmFrom = "[email protected]" $username = "[email protected]" $pwd = "YOURPASSWORD" $EmTo = "[email protected]" $Server = "smtp.gmail.com" $port = 587 $Subj = "Test" $Bod = "Test 123" $Att = "c:/Filename.FileType" $securepwd = ConvertTo-SecureString $pwd -AsPlainText -Force $cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $username, $securepwd Send-MailMessage -To $EmTo -From $EmFrom -Body $Bod -Subject $Subj -Attachments $Att -SmtpServer $Server -port $port -UseSsl -Credential $cred


Enviar correo electrónico con archivo adjunto con powershell -

$EmailTo = "[email protected]" // [email protected] $EmailFrom = "[email protected]" //[email protected] $Subject = "zx" //subject $Body = "Test Body" //body of message $SMTPServer = "smtp.gmail.com" $filenameAndPath = "G:/abc.jpg" //attachment $SMTPMessage = New-Object System.Net.Mail.MailMessage($EmailFrom,$EmailTo,$Subject,$Body) $attachment = New-Object System.Net.Mail.Attachment($filenameAndPath) $SMTPMessage.Attachments.Add($attachment) $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587) $SMTPClient.EnableSsl = $true $SMTPClient.Credentials = New-Object System.Net.NetworkCredential("[email protected]", "xxxxxxxx"); // xxxxxx-password $SMTPClient.Send($SMTPMessage)


Esta es una fecha realmente tardía en la que sonar aquí, pero tal vez esto pueda ayudar a otra persona.

Soy realmente nuevo en powershell y estaba buscando gmailing desde PS. Tomé lo que ustedes hicieron anteriormente, lo modifiqué un poco y obtuve un script que verificará los archivos adjuntos antes de agregarlos, y también para tomar una serie de destinatarios. Voy a agregar algunas verificaciones de errores más y cosas más tarde, pero pensé que podría ser lo suficientemente bueno (y lo suficientemente básico) para publicar aquí.

## Send-Gmail.ps1 - Send a gmail message ## By Rodney Fisk - [email protected] ## 2 / 13 / 2011 # Get command line arguments to fill in the fields # Must be the first statement in the script param( [Parameter(Mandatory = $true, Position = 0, ValueFromPipelineByPropertyName = $true)] [Alias(''From'')] # This is the name of the parameter e.g. -From [email protected] [String]$EmailFrom, # This is the value [Don''t forget the comma at the end!] [Parameter(Mandatory = $true, Position = 1, ValueFromPipelineByPropertyName = $true)] [Alias(''To'')] [String[]]$Arry_EmailTo, [Parameter(Mandatory = $true, Position = 2, ValueFromPipelineByPropertyName = $true)] [Alias( ''Subj'' )] [String]$EmailSubj, [Parameter(Mandatory = $true, Position = 3, ValueFromPipelineByPropertyName = $true)] [Alias( ''Body'' )] [String]$EmailBody, [Parameter(Mandatory = $false, Position = 4, ValueFromPipelineByPropertyName = $true)] [Alias( ''Attachment'' )] [String[]]$Arry_EmailAttachments ) # From Christian @ .com $SMTPServer = "smtp.gmail.com" $SMTPClient = New-Object Net.Mail.SMTPClient( $SmtpServer, 587 ) $SMTPClient.EnableSSL = $true $SMTPClient.Credentials = New-Object System.Net.NetworkCredential( "GMAIL_USERNAME", "GMAIL_PASSWORD" ); # From Core @ .com $emailMessage = New-Object System.Net.Mail.MailMessage $emailMessage.From = $EmailFrom foreach ( $recipient in $Arry_EmailTo ) { $emailMessage.To.Add( $recipient ) } $emailMessage.Subject = $EmailSubj $emailMessage.Body = $EmailBody # Do we have any attachments? # If yes, then add them, if not, do nothing if ( $Arry_EmailAttachments.Count -ne $NULL ) { $emailMessage.Attachments.Add() } $SMTPClient.Send( $emailMessage )

Por supuesto, cambie los valores de GMAIL_USERNAME y GMAIL_PASSWORD a su usuario en particular y pase.


Esto debería solucionar tu problema

$credentials = new-object Management.Automation.PSCredential “[email protected]”, (“password” | ConvertTo-SecureString -AsPlainText -Force)

Luego use la credencial en su llamada a Send-MailMessage -From $From -To $To -Body $Body $Body -SmtpServer {$smtpServer URI} -Credential $credentials -Verbose -UseSsl


Estoy de acuerdo con la solución de Christian Muggli, aunque al principio todavía tengo el error que informó Scott Weinstein. Cómo pasas eso es:

O bien primero inicie sesión en Gmail desde la máquina, esto se ejecutará utilizando la cuenta especificada. (NO es necesario agregar ningún sitio de Google a la zona de Sitios de confianza, incluso si la Configuración de seguridad mejorada de Internet Explorer está habilitada).

O, en su primer intento, obtendrá el error y su cuenta de Gmail recibirá un aviso sobre el inicio de sesión sospechoso, por lo tanto, siga sus instrucciones para permitir futuros inicios de sesión desde la máquina en la que se ejecutará.


No estoy seguro de que pueda cambiar los números de puerto con Send-MailMessage ya que gmail funciona en el puerto 587. De todos modos, aquí le mostramos cómo enviar correos electrónicos a través de gmail con .NET SmtpClient:

$smtpClient = new-object system.net.mail.smtpClient $smtpClient.Host = ''smtp.gmail.com'' $smtpClient.Port = 587 $smtpClient.EnableSsl = $true $smtpClient.Credentials = [Net.NetworkCredential](Get-Credential GmailUserID) $smtpClient.Send(''[email protected]'',''[email protected]'',''test subject'', ''test message'')


No he utilizado el mensaje de envío de PowerShell V2, pero he utilizado la clase System.Net.Mail.SMTPClient en V1 para enviar mensajes a una cuenta de gmail con fines de demostración. Esto podría ser excesivo, pero ejecute un servidor smtp en mi laptop Vista, consulte este enlace , si está en una empresa, ya tendrá un servidor de correo dependiente y este paso no es necesario. Con un servidor smtp, puedo enviar correos electrónicos a mi cuenta de gmail con el siguiente código:

$smtpmail = [System.Net.Mail.SMTPClient]("127.0.0.1") $smtpmail.Send("[email protected]", "[email protected]", "Test Message", "Message via local smtp")


Utilicé la solución de Christian el 12 de febrero y también estoy empezando a aprender PowerShell. En cuanto a los archivos adjuntos, estaba hurgando con Get-Member aprendiendo cómo funciona y noté que Send () tiene dos definiciones ... la segunda definición toma un objeto System.Net.Mail.MailMessage que permite archivos adjuntos y muchos más poderosos y funciones útiles como Cc y Bcc. Aquí hay un ejemplo que tiene archivos adjuntos (para mezclar con su ejemplo anterior):

# append to Christian''s code above --^ $emailMessage = New-Object System.Net.Mail.MailMessage $emailMessage.From = $EmailFrom $emailMessage.To.Add($EmailTo) $emailMessage.Subject = $Subject $emailMessage.Body = $Body $emailMessage.Attachments.Add("C:/Test.txt") $SMTPClient.Send($emailMessage)

¡Disfrutar!


echa un vistazo a esta publicación para ver cómo enviar archivos adjuntos con los ejemplos de Powershell de gmail para que puedas ver cómo enviar archivos adjuntos usando gmail. Avísame si te ayuda Scott A www.techjunkie.tv