Доброго времени суток друзья. Хочу поделиться с Вами не большим скриптом на powershell отправки сообщения на внешнюю почту с авторизацией на примере smtp.yandex.ru
Для отправки писем через яндекс у нас должна быть действующая почта на яндексе с помощью которой мы и будем отправлять письма. В скрипте указываем свои данные адрес отправителя, адрес получателя, заголовок письма, путь до файла если хотите, чтобы письмо было с вложением, логин и пароль от почты.
Имя | Описание | |
---|---|---|
MailMessage() | Инициализирует пустой экземпляр класса MailMessage. | |
MailMessage(MailAddress, MailAddress) | Инициализирует новый экземпляр класса MailMessage, используя указанные объекты класса MailAddress. | |
MailMessage(String, String) | Инициализирует новый экземпляр класса MailMessage, используя указанные объекты класса String. | |
MailMessage(String, String, String, String) | Инициализирует новый экземпляр класса MailMessage |
Имя | Описание | |
---|---|---|
AlternateViews | Возвращает коллекцию вложений, используемую для хранения альтернативных форм тела сообщения. | |
Attachments | Возвращает коллекцию вложений, используемую для хранения данных, вложенных в это сообщение электронной почты. | |
Bcc | Возвращает коллекцию адресов, содержащую получателей скрытой копии (BCC) данного сообщения электронной почты. | |
Body | Получает или задает основную часть сообщения. | |
BodyEncoding | Получает или задает кодировку, используемую для кодирования тела сообщения. | |
BodyTransferEncoding | Получает или задает кодирование передачи, используемое для кодирования тела сообщения. | |
CC | Возвращает коллекцию адресов, содержащую получателей копии (CC) данного сообщения электронной почты. | |
DeliveryNotificationOptions | Получает или задает уведомления о доставке данного сообщения электронной почты. | |
From | Получает или задает адрес отправителя данного сообщения электронной почты. | |
Headers | Возвращает заголовки электронной почты, передаваемые с данным сообщением. | |
HeadersEncoding | Получает или задает кодировку, используемую для пользовательских заголовков данного сообщения электронной почты. | |
IsBodyHtml | Получает или задает значение, показывающее, имеет ли основная часть почтового сообщения формат HTML. | |
Priority | Получает или задает приоритет данного сообщения электронной почты. | |
ReplyTo | Устаревшее. Получает или задает адрес ReplyTo для данного почтового сообщения. | |
ReplyToList | Получает или задает список адресов для ответа для данного сообщения электронной почты. | |
Sender | Получает или задает адрес отправителя данного сообщения электронной почты. | |
Subject | Получает или задает строку темы для данного сообщения электронной почты. | |
SubjectEncoding | Получает или задает кодировку, используемую для темы данного сообщения электронной почты. | |
To | Возвращает коллекцию адресов, содержащую получателей данного сообщения электронной почты. |
Имя | Описание | |
---|---|---|
Dispose() | Освобождает все ресурсы, используемые объектом MailMessage. | |
Dispose(Boolean) | Освобождает неуправляемые ресурсы, используемые объектом MailMessage, а при необходимости освобождает также управляемые ресурсы. | |
Equals(Object) | Определяет, равен ли заданный объект текущему объекту. (Унаследовано от Object.)Finalize | |
Finalize | Позволяет объекту попытаться освободить ресурсы и выполнить другие операции по очистке перед тем, как объект будет утилизирован сборщиком мусора. (Унаследовано от Object.) | |
GetHashCode | Играет роль хэш-функции для определённого типа. (Унаследовано от Object.) | |
GetType | Возвращает объект класса Type для текущего экземпляра. (Унаследовано от Object.) | |
MemberwiseClone | Создает "поверхностную" копию текущего объекта. (Унаследовано от Object.) | |
ToString | Возвращает строковое представление текущего объекта. (Унаследовано от Object.) |
Имя | Описание | |
---|---|---|
SmtpClient() | Инициализирует новый экземпляр класса SmtpClient, используя параметры файла конфигурации. | |
SmtpClient(String) | Инициализирует новый экземпляр класса SmtpClient, который отправляет электронную почту с помощью указанного сервера SMTP. | |
SmtpClient(String, Int32) | Инициализирует новый экземпляр класса SmtpClient, который отправляет электронную почту с помощью указанного сервера SMTP и порта. |
Имя | Описание | |
---|---|---|
AlternateViews | Возвращает коллекцию вложений, используемую для хранения альтернативных форм тела сообщения. | |
ClientCertificates | Указывает, какие сертификаты следует использовать для установки SSL-подключения. | |
Credentials | Возвращает или задает учетные данные, используемые для проверки подлинности отправителя. | |
DeliveryFormat | Получает или задает формат доставки, используемый SmtpClient для отправки электронной почты. | |
DeliveryMethod | Указывает, как будут обрабатываться исходящие сообщения электронной почты. | |
EnableSsl | Указывает, использует ли SmtpClient протокол SSL для шифрования подключения. | |
Host | Возвращает или задает имя или IP-адрес хоста, используемого для SMTP-транзакций. | |
PickupDirectoryLocation | Возвращает или задает папку, в которой приложения сохраняют почтовые сообщения для обработки локальным SMTP-сервером. | |
Port | Возвращает или задает порт, используемый для SMTP-транзакций. | |
ServicePoint | Возвращает сетевое подключение, используемое для передачи сообщения электронной почты. | |
TargetName | Получает или задает имя поставщика услуг (SPN) для проверки подлинности при использовании расширенной защиты. | |
Timeout | Возвращает или задает значение, указывающее промежуток времени, после которого для синхронного вызова Send истечет время тайм-аута. | |
UseDefaultCredentials | Возвращает или задает значение Boolean, которое управляет отправкой учетных данных DefaultCredentials вместе с запросами. |
Имя | Описание | |
---|---|---|
Dispose() | Отправляет сообщение QUIT на SMTP-сервер, правильно завершает TCP-подключение и освобождает все ресурсы, используемые текущим экземпляром класса SmtpClient. | |
Dispose(Boolean) | Отправляет сообщение QUIT на SMTP-сервер, правильно завершает TCP-подключение и освобождает все ресурсы, используемые текущим экземпляром класса SmtpClient, и при необходимости освобождает управляемые ресурсы. | |
Equals(Object) | Определяет, равен ли заданный объект текущему объекту. (Унаследовано от Object.) | |
Finalize | Позволяет объекту попытаться освободить ресурсы и выполнить другие операции по очистке перед тем, как объект будет утилизирован сборщиком мусора. (Унаследовано от Object.) | |
GetHashCode | Играет роль хэш-функции для определённого типа. (Унаследовано от Object.) | |
GetType | Возвращает объект класса Type для текущего экземпляра. (Унаследовано от Object.) | |
MemberwiseClone | Создает "поверхностную" копию текущего объекта. (Унаследовано от Object.) | |
OnSendCompleted | Создает событие SendCompleted. | |
Send(MailMessage) | Отправляет указанное сообщение на сервер SMTP для доставки. | |
Send(String, String, String, String) | Отправляет указанное сообщение электронной почты на сервер SMTP для доставки. Отправитель, получатели, тема и основная часть сообщения указываются с помощью объектов String. | |
SendAsync(MailMessage, Object) | Отправляет указанное сообщение электронной почты на сервер SMTP для доставки. Этот метод не блокирует вызывающий поток и позволяет вызывающей стороне передать объект в метод, вызванный после завершения операции. | |
SendAsync(String, String, String, String, Object) | Отправляет сообщение электронной почты на сервер SMTP для доставки. Отправитель, получатели, тема и основная часть сообщения указываются с помощью объектов String. Этот метод не блокирует вызывающий поток и позволяет вызывающей стороне передать объект в метод, вызванный после завершения операции. | |
SendAsyncCancel | Отменяет асинхронную операцию отправки сообщения электронной почты. | |
SendMailAsync(MailMessage) | Отправляет указанное сообщение SMTP-серверу для доставки в качестве асинхронной операции. | |
SendMailAsync(String, String, String, String) | Отправляет указанное сообщение SMTP-серверу для доставки в качестве асинхронной операции. . Отправитель, получатели, тема и основная часть сообщения указываются с помощью объектов String. | |
ToString | Возвращает строковое представление текущего объекта. (Унаследовано от Object.) |
Имя | Описание | |
---|---|---|
SendCompleted | Происходит после завершения асинхронной операции по отправке электронной почты. |
#Адрес сервера SMTP для отправки
$serverSmtp = "smtp.yandex.ru"
#Порт сервера
$port = 587
#От кого
$From = "login@yandex.ru"
#Кому
$To = "myMail@mail.ru"
#Тема письма
$subject = "Письмо с вложением"
#Логин и пароль от ящики с которого отправляете login@yandex.ru
$user = "login"
$pass = "12345678"
#Путь до файла
$file = "C:\arhive.zip"
#Создаем два экземпляра класса
$att = New-object Net.Mail.Attachment($file)
$mes = New-Object System.Net.Mail.MailMessage
#Формируем данные для отправки
$mes.From = $from
$mes.To.Add($to)
$mes.Subject = $subject
$mes.IsBodyHTML = $true
$mes.Body = "<h1>Тестовое письмо</h1>"
#Добавляем файл
$mes.Attachments.Add($att)
#Создаем экземпляр класса подключения к SMTP серверу
$smtp = New-Object Net.Mail.SmtpClient($serverSmtp, $port)
#Сервер использует SSL
$smtp.EnableSSL = $true
#Создаем экземпляр класса для авторизации на сервере яндекса
$smtp.Credentials = New-Object System.Net.NetworkCredential($user, $pass);
#Отправляем письмо, освобождаем память
$smtp.Send($mes)
$att.Dispose()
01/11/2024 16:29:05
21/01/2024 13:13:53
Добрый день!
Проблема кроется в безопасности почты если вы используете пупличные сервисы (yandex, mail и т.д.). Вам нужно разрешить доступ внешним программам, а также создать пароль для приложения. https://yandex.ru/support/mail/mail-clients/others.html
07/02/2024 12:08:21
15/04/2022 13:06:21
Доброго времени суток.
BodyEncoding - Получает или задает кодировку, используемую для кодирования тела сообщения.
BodyTransferEncoding - Получает или задает кодирование передачи, используемое для кодирования тела сообщения.
HeadersEncoding - Получает или задает кодировку, используемую для пользовательских заголовков данного сообщения электронной почты.
SubjectEncoding - Получает или задает кодировку, используемую для темы данного сообщения электронной почты.
Попробуйте использовать данные свойства. Проверьте заголвки которые приходят вам в письме.
15/04/2022 14:23:55
20/11/2021 20:50:14
#Входящие данные сообщения:$From = "elimsmail@gmail.com"
$To = "test@gmail.com"
$SMTPServer = "smtp.gmail.com"
$SMTPPort = "587"
$Username = "elimsmail"
$Password = "yourpassword"
$subject = "hello"
$body = "bodytext"
#формируем сообщение в формате html:
$message = New-Object System.Net.Mail.MailMessage $From, $To
$message.Subject = $subject
$message.IsBodyHTML = $true
$message.Body = $body
#Отправляем:
$smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort)
$smtp.EnableSSL = $true
$smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password)
$smtp.Send($message)
Данный скрипт, не добавляет 1000 адресов в рассылку, а отправляет каждому сове сообщение. 08/10/2018 16:30:25
Добрый день.
Данный скрипт не предназначен для массовой рассылки, хотя немного переделав можно и рассылку организовать.
Учтите тот момент, что письма уходят через SMTP стороннего сервера, в моем примере Yandex.ru так вот, если вы попытаетесь сразу отправить 1000 писем, то вас забанят!
17/11/2018 12:40:48
15/03/2016 14:49:28