Отправка электронных писем с помощью PowerShell только с BCC

Вопрос или проблема

Мне нужно найти способ отправить 30 людям электронные письма, я не хочу, чтобы они были в CC, я хочу, чтобы каждый из них получил письмо так, чтобы казалось, что это письмо только для него. Я знаю, что могу использовать Outlook и оставить поле “кому” пустым, а электронные адреса указать в BCC. Это хорошее решение, но мне нужно автоматизировать процесс. Я не могу найти способ использовать командлет send-mailmessage в PowerShell для достижения этой же цели. Ближайшее, что я могу сделать, это отправить письмо себе, а затем добавить всех в BCC, или запустить цикл, отправляя по одному письму с аргументом -to. Оба варианта для меня не подходят. Есть ли способ, как это сделать?

Согласен с Дэвидом.

Согласно моему исследованию, параметр -To является обязательным, что может помочь предотвратить превращение в спам-движок. Поэтому для вашего требования в PowerShell вы можете попробовать указать свой собственный адрес электронной почты или что-то вроде “[email protected]” в поле “кому”.

Запрашиваемые действия недоступны с использованием командлета Send-MailMessage, однако вы можете использовать класс .net net.mail, чтобы достичь желаемого. Пожалуйста, посмотрите ниже, что вы могли бы интегрировать в свой скрипт.

$SMTPserver = "<SMTP Endpoint>"
$fromAddress = "[email protected]"
$subject = "<Тема>"
$emailbody = "<текст электронного письма>"
$bccAddresses = @("[email protected]","[email protected]","[email protected]")

$mailer = new-object Net.Mail.SMTPclient($SMTPserver)
$msg = new-object Net.Mail.MailMessage

Foreach ($emailAddress in $bccAddresses){
    $msg.bcc.add($emailAddress)
}

$msg.Subject = $Subject
$msg.Body = $emailbody
$msg.From = $fromAddress


$mailer.send($msg)

.

Ответ или решение

Для автоматической отправки электронной почты с использованием только поля BCC (скрытая копия) в PowerShell, вы можете воспользоваться функциональностью .NET класса System.Net.Mail. Важно отметить, что стандартная команда Send-MailMessage в PowerShell требует указания адреса в поле TO, что может создать нежелательное поведение, когда получатели смогут видеть друг друга.

В этом ответе я подробно объясню, как настроить отправку сообщений, используя класс System.Net.Mail, что позволит вам избежать указания адреса в поле TO и отправить сообщения только в BCC.

Шаги по автоматической отправке писем

  1. Настройка SMTP-сервера: Определите SMTP-сервер, который вы будете использовать для отправки электронной почты. Это может быть ваш корпоративный SMTP-сервер или сторонний сервис, такой как Gmail.

  2. Подготовка списка получателей: Создайте массив с адресами электронной почты, которые вы хотите добавить в поле BCC.

  3. Скрипт PowerShell: Ниже приведен пример скрипта, который отправляет электронное письмо, используя только поле BCC.

# Параметры SMTP-сервера
$SMTPserver = "<SMTP Endpoint>" # Укажите адрес вашего SMTP-сервера
$fromAddress = "<отправитель@вашдомен.com>" # Укажите адрес отправителя
$subject = "<Тема письма>" # Укажите тему письма
$emailbody = "<Текст письма>" # Укажите содержимое письма

# Список адресов, которые будут добавлены в BCC
$bccAddresses = @(
    "recipient1@example.com",
    "recipient2@example.com",
    "recipient3@example.com",  # Добавьте остальные адреса по мере необходимости
    ...
)

# Инициализация SMTP-клиента
$mailer = New-Object Net.Mail.SmtpClient($SMTPserver)
$mailer.Port = 25 # Укажите порт вашего SMTP-сервера
$mailer.Credentials = New-Object Net.NetworkCredential("username", "password") # Укажите учётные данные, если требуется

# Создание нового сообщения
$msg = New-Object Net.Mail.MailMessage

# Добавляем адреса в BCC
Foreach ($emailAddress in $bccAddresses) {
    $msg.Bcc.Add($emailAddress)
}

# Установка свойств сообщения
$msg.Subject = $subject
$msg.Body = $emailbody
$msg.From = $fromAddress

# Отправка сообщения
$mailer.Send($msg)

# Освобождение ресурсов
$msg.Dispose()

Важные моменты

  • SMTP-сервер: Убедитесь, что вы используете правильный адрес SMTP-сервера и порт. Некоторые провайдеры могут требовать использование порта 587 для отправки через SSL.
  • Аутентификация: Если ваш SMTP-сервер требует аутентификацию, не забудьте указать корректные учетные данные.
  • Обработка ошибок: Рассмотрите возможность добавления блока try-catch для обработки ошибок, которые могут возникнуть при отправке электронной почты.

Заключение

Используя вышеописанный метод, вы сможете автоматизировать процесс отправки электронной почты без указания адреса в поле TO, что сделает каждое сообщение выглядящим индивидуально для каждого получателя. Это эффективно решает вашу задачу, сохраняет конфиденциальность адресов получателей и минимизирует риск попадания в спам.

Оцените материал
Добавить комментарий

Капча загружается...