Кто ни будь может помочь готовым скриптом отправки e-mail через публичный почовик
Помогите готовым скриптом отправки e-mail, с помощью CDO, через gmail.com, например.
Ответы
Подновил скрипт добавив поддержку SSL и указание учетных данных. Спасибо .Net, это заняло лишь несколько строчек
Send-SMTPMail.ps1param
(
$Server = $SmtpHostPreference, # SMTP Сервер $From = $SmtpFromPreference, # Адрес отправителя[
string[]]$To, # Получатели $Body = "", # Тело сообщения $Subject = "", # Тема сообщения[
System.IO.FileInfo[]]$Attachment=@(), # Вложения[
switch]$SSL, #Использовать SSL? $Credentials = $null #Учетные данные для подключения)
Write-Verbose
"Создаем объекты SmtpClient и MailMessage"$SmtpClient
= New-Object System.Net.Mail.SmtpClient$Message
= New-Object System.Net.Mail.MailMessageWrite-Verbose
"Устанавливаем свойства этих объектов"$SmtpClient
.Host = $Server$SmtpClient
.EnableSsl = $SSLif
($Credentials) {$SmtpClient.Credentials = $Credentials.GetNetworkCredential()}$Message
.Body = $Body$Message
.Subject = $Subject$Message
.From = $FromWrite-Verbose
"Создаем и добавляем вложения"$Attachment
| ForEach-Object { $a = New-Object System.Net.Mail.Attachment($_.fullname) $Message.Attachments.Add($a)}
Write-Verbose
"Добавляем получателей"$To
| ForEach-Object {$Message.To.Add($_)}Write-Verbose
"Отправляем сообщение"$smtpclient
.Send($Message)Write-Verbose
"Удаляем объекты"$Message
.Dispose()С гмейлом работает, проверил:
Code SnippetPS> $cred = Get-Credential
cmdlet Get-Credential at command pipeline position 1
Supply values for the following parameters:
Credential
PS> .\send-smtpmail.ps1 -server smtp.gmail.com -from xaegrr@gmail.com -to xaegr@yandex.ru -body "Тест прошел успешно" -subject "Тест" -ssl -credentials $cred
Все ответы
а скрипт power shell не пойдет?Конечно!

Взято отсюда: http://xaegr.wordpress.com/2008/01/24/send-smtpmailps1/
Send-SmtpMail.ps1
Code Snippetparam
( $Server = $SmtpHostPreference, # SMTP Сервер $From = $SmtpFromPreference, # Адрес отправителя[
string[]]$To, # Получатели $Body = "", # Тело сообщения $Subject = "", # Тема сообщения[
System.IO.FileInfo[]]$Attachment=@() # Вложения)
Write-Verbose
"Создаем объекты SmtpClient и MailMessage"$SmtpClient
= New-Object System.Net.Mail.SmtpClient$Message
= New-Object System.Net.Mail.MailMessageWrite-Verbose
"Устанавливаем свойства этих объектов"$SmtpClient
.Host = $Server$Message
.Body = $Body$Message
.Subject = $Subject$Message
.From = $FromWrite-Verbose
"Создаем и добавляем вложения"$Attachment
| ForEach-Object { $a = New-Object System.Net.Mail.Attachment($_.fullname) $Message.Attachments.Add($a)}
Write-Verbose
"Добавляем получателей"$To
| ForEach-Object {$Message.To.Add($_)}Write-Verbose
"Отправляем сообщение"$smtpclient
.Send($Message)Write-Verbose
"Удаляем объекты"$Message
.Dispose()#== Применять скрипт можно например так:
#== .\Send-SmtpMail.ps1 -to ктото@гдето.ru -server pochtovik -from дядя@гдето.ru -subject test -verbose
#== Или так:
#== $SmtpHostPreference = "pochtovik.domain.local"
#== $SmtpFromPreference = "дядя@гдето.ru"
#== .\Send-SmtpMail.ps1 -to ктото@гдето.ru -subject test -body "Hello there!" -attachment (dir c:\files\*.txt)
#== PS: Для работы скрипта, должна быть разрешена анонимная отправка сообщений по SMTP. Хотя можно прикрутить и аутентификацию.
Взято отсюда: http://xaegr.wordpress.com/2008/01/24/send-smtpmailps1/
с gmail всё сложнее
я использовал send-smtpmail
Code SnippetPS:29 > Send-SmtpMail -to test@mail.ru -Body "hi" -SmtpHost smtp.gmail.com -From test@gmail.com -Credential (get-credential)
cmdlet get-credential at command pipeline position 1
Supply values for the following parameters:
Credential
Send-SmtpMail : Серверу SMTP требовалось защищенное соединение, или подлинность клиента не была установлена. Ответ сервера: 5.7.0 Must issue a STARTTLS command
first. j8sm1722841gvb.1
может утилитка bmail поможет?ilgiz® написано: Взято отсюда: http://xaegr.wordpress.com/2008/01/24/send-smtpmailps1/
Send-SmtpMail.ps1
Для работы скрипта, должна быть разрешена анонимная отправка сообщений по SMTP. Хотя можно прикрутить и аутентификацию.
А как аутентификацию прикрутить?
M.S.D. [mdanshin] написано: ilgiz® написано: Взято отсюда: http://xaegr.wordpress.com/2008/01/24/send-smtpmailps1/
Send-SmtpMail.ps1
Для работы скрипта, должна быть разрешена анонимная отправка сообщений по SMTP. Хотя можно прикрутить и аутентификацию.
А как аутентификацию прикрутить?
Автор скрипта не я, но наверно следует посмотреть доступные методы и свойства созданного объекта
$SmtpClient = New-Object System.Net.Mail.SmtpClient
и туда прикрутить аутентификацию.Эх, в том-то и проблема, что чукча не писатель. Чукча читатель, от того и просил готовый.

VBS :
Code SnippetiConfig = Server.CreateObject("CDO.Configuration")
Set iConfig = Server.CreateObject("CDO.Configuration")With iConfig.Fields
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.server.com"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/languagecode") = "ru"
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "user@domain.com"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "1234567"
.Update
End With
Set cdoMessage = CreateObject("CDO.Message")With cdoMessage
Set .Configuration = iConfig
.From = "Devil <devil@hell.com>"
.To = "nobody@sonehost.com"
.Subject = "Hello, Nobody!"
.TextBody = "I write from VBS script"
.Send
End WithSet cdoMessage = Nothing
Set iConfig = Nothing
Думаю достаточно прозрачно.Вот кусок на ASPX (правда через System.NetMail, а не через CDO). Спецы помогут перевести это в PowerShell.
Code Snippet<% @Page Language="VB" %>
<% @Import Namespace="System.Net.Mail" %>
<% @Import Namespace="System.Net" %>
<%
Dim smtpMssg AS new MailMessagesmtpMssg.From = New MailAddress ("devil@hell.com")
smtpMssg.To.Add ( nobody@somehost.com )
smtpMssg.Subject = "Message from ASPX"
smtpMssg.Body = "ASPX Work?"
Dim SmtpMail As New SmtpClient("smtp.server.com")
SmtpMail.Credentials = New NetworkCredential(user@domain.com, "1234567")
SmtpMail.Send(smtpMssg)
%>Т.е. у System.Net.Mail.SmtpClient есть property Credentials. Вот его и надо заполнить в PowerShell скрипте.
Как? Пока не знаю.
КГБ написано: VBS :
{...skiped...}
Думаю достаточно прозрачно.
Да, как раз то, что нужно, но не пойму, почему не хочет через gmail работать?
я ж тебе писал уже
скорее всего и не будет с gmail работать, ему ssl нужно
zorion написано: я ж тебе писал уже
скорее всего и не будет с gmail работать, ему ssl нужно
Ну дык... Задача то решаемая или нет? Есть готовый скрипт или еще никто не написал такого? Если нет, то буду ждать.

Подновил скрипт добавив поддержку SSL и указание учетных данных. Спасибо .Net, это заняло лишь несколько строчек
Send-SMTPMail.ps1param
(
$Server = $SmtpHostPreference, # SMTP Сервер $From = $SmtpFromPreference, # Адрес отправителя[
string[]]$To, # Получатели $Body = "", # Тело сообщения $Subject = "", # Тема сообщения[
System.IO.FileInfo[]]$Attachment=@(), # Вложения[
switch]$SSL, #Использовать SSL? $Credentials = $null #Учетные данные для подключения)
Write-Verbose
"Создаем объекты SmtpClient и MailMessage"$SmtpClient
= New-Object System.Net.Mail.SmtpClient$Message
= New-Object System.Net.Mail.MailMessageWrite-Verbose
"Устанавливаем свойства этих объектов"$SmtpClient
.Host = $Server$SmtpClient
.EnableSsl = $SSLif
($Credentials) {$SmtpClient.Credentials = $Credentials.GetNetworkCredential()}$Message
.Body = $Body$Message
.Subject = $Subject$Message
.From = $FromWrite-Verbose
"Создаем и добавляем вложения"$Attachment
| ForEach-Object { $a = New-Object System.Net.Mail.Attachment($_.fullname) $Message.Attachments.Add($a)}
Write-Verbose
"Добавляем получателей"$To
| ForEach-Object {$Message.To.Add($_)}Write-Verbose
"Отправляем сообщение"$smtpclient
.Send($Message)Write-Verbose
"Удаляем объекты"$Message
.Dispose()С гмейлом работает, проверил:
Code SnippetPS> $cred = Get-Credential
cmdlet Get-Credential at command pipeline position 1
Supply values for the following parameters:
Credential
PS> .\send-smtpmail.ps1 -server smtp.gmail.com -from xaegrr@gmail.com -to xaegr@yandex.ru -body "Тест прошел успешно" -subject "Тест" -ssl -credentials $cred
