-17 / 2 / 0
Регистрация: 22.02.2017
Сообщений: 28

Отправить email сразу на две электронные почты

30.04.2018, 09:53. Показов 15177. Ответов 37
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется рабочий скрипт отправки email:

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#Входящие данные сообщения:
$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)

Мне необходимо, чтобы скрипт отправлял одно и тоже сообщение сразу двум получателям. Как это можно реализовать?

Одно из решений это продублировать уже готовый скрипт (т.е. подряд написать две копии кода и во-второй копии указать соответственно другой электронный ящик), но выглядит это не совсем эстетично, слишком много лишнего кода.
1
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.04.2018, 09:53
Ответы с готовыми решениями:

Email запрет почты
добрый день а этом коде регистрация правильной почты т.е youremail@email.com preg_match("/^+@+\./" как можно сделать к примеру...

Отправка почты на разные email
Добрый всем вечер. Подскажите пожалуйста, как можно реализовать отправку почту на разные email (находящиеся на разных серверах) с одного...

Рассылка почты на email из поля БД Access
Всем привет. Есть база данных в которой находится связанные таблицы "Ученики" и "Родители" (в таблице Родители есть поле...

37
Нарушитель
7097 / 2328 / 353
Регистрация: 10.12.2013
Сообщений: 8,047
10.05.2018, 15:24
Студворк — интернет-сервис помощи студентам
C++
1
myStr.destroy()
всё равно не освобождает память,
0
-17 / 2 / 0
Регистрация: 22.02.2017
Сообщений: 28
12.05.2018, 02:48  [ТС]
данный код:

PowerShell
1
2
3
$To = 'email1@site.com','email2@site.com'
и
$To = 'email1@site.com, email2@site.com'
не работает в связке с кодом, который я запостил в первом сообщении, но работает в коде, которым поделился KDE777
0
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
12.05.2018, 08:55
Jqot,
Как бы Вам сказать, чтобы не обидеть...
если:
Цитата Сообщение от Jqot Посмотреть сообщение
так как я абсолютно не разбираюсь в PowerShell.
то лучше не вступать в спор более опытными людьми, а просто прислушаться к их мнению. Принимать к сведению или нет - это уже другой вопрос. Всегда есть возможность проверить утверждение и если что-то непонятно, то спросить - зачем спорить-то? Чтобы вступать в спор, который Вы сами же и раздули, необходимо быть уверенным в своей позиции. А вот откуда такая уверенность появилась у Вас, не понимаю.
Это что касается "флуда", которого не было, на самом деле...

теперь о Вашем якобы опыте:
Цитата Сообщение от Jqot Посмотреть сообщение
не работает в связке с кодом, который я запостил в первом сообщении
А вот это Вам ни о чем не говорит:
Цитата Сообщение от YuS_2 Посмотреть сообщение
поэтому, как минимум, лучше будет так:
PowerShell
1
2
$To = 'email1@site.com','email2@site.com'
$To|%{message.to.add($_)}
?
и это касается всех почтовых заголовков, с адресом получателя.
Т.е. и так можно:
PowerShell
1
2
$сс = 'email1@site.com','email2@site.com'
$сс|%{message.сс.add($_)}
и так тоже будет работать:
PowerShell
1
2
$bсс = 'email1@site.com','email2@site.com'
$bсс|%{message.bсс.add($_)}
Поэтому прежде чем нажимать кнопку "жалоба", имеет смысл проверить то о чем говорят, а не козырять своим, пока что мизерным, опытом...
0
-17 / 2 / 0
Регистрация: 22.02.2017
Сообщений: 28
12.05.2018, 09:10  [ТС]
приведённый код
PowerShell
1
2
3
$To = 'email1@site.com','email2@site.com'
и
$To = 'email1@site.com, email2@site.com
'
В связке с первым не работает.
Да, его можно дополнить, допилить и т.д., что вы сейчас и сделали, но это уже будет другой код.
0
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
12.05.2018, 09:48
$To - переменная не имеющая отношения к полю To:
To: - поле/заголовок, заполняемый тем или иным кодом, в теле почтового отправления.
Каким образом заполнено будет это поле - вопрос реализации того или иного кода, но стандарт RFC 2822, строго соблюдается,в том числе и в части перечисления адресатов. И в коде, который Вы привели в самом начале, всё работает согласно тому же стандарту.
0
-17 / 2 / 0
Регистрация: 22.02.2017
Сообщений: 28
12.05.2018, 10:33  [ТС]
PowerShell
1
$To = 'email1@site.com','email2@site.com'
Мной уже все сказано неоднократно, обсуждать тут нечего.
0
14.05.2018, 20:38
 Комментарий модератора 
Прекращаем словесные перепалки - далее только по теме
0
0 / 0 / 0
Регистрация: 24.07.2018
Сообщений: 15
24.07.2018, 11:43
Добрый день.
есть скрипт, как добавить еще 2 адресата.
Спасибо

$emailFrom = “sales@wer.net.ua”
$emailTo = "mon@wer.com.ua"
$subj = “Проверка рассылки”
$body = “Это Проверка рассылки”
$user = "sales@wer.net.ua"
$pass = "Password_312"
$file = "D:\Temp\test.xlsx"
$smtpServer = “mail.wer.net.ua”
$port = 25
$att = new-object Net.Mail.Attachment($file)
$smtp = new-object Net.Mail.SmtpClient($smtpServer,$port)
$smtp.EnableSSL = $false
$smtp.Credentials = New-Object System.Net.NetworkCredential($user, $pass);
$msg = new-object Net.Mail.MailMessage
$msg.From = $emailFrom
$msg.To.Add($emailTo)
$msg.Subject = $subj
$msg.Body = $body
$msg.Attachments.Add($att)
$smtp.Timeout = 100000
$smtp.Send($msg)

спасибо
0
 Аватар для KDE777
1887 / 1109 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
24.07.2018, 12:12
Цитата Сообщение от simonpst Посмотреть сообщение
как добавить еще 2 адресата.
https://www.cyberforum.ru/post12359252.html

Добавлено через 9 минут
Но если, по какой-то причине не хотите использовать Send-MailMessage, тогда 2 и 16 строчку вашего скрипта меняете на такие:

PowerShell
1
2
3
4
5
...
$emailTo = "mon@wer.com.ua","mon1@wer.com.ua","mon2@wer.com.ua"
...
$emailTo | %{$msg.To.Add($_)}
...
Или ещё вариант для вашего скрипта - поменять только строчку 2:

PowerShell
1
$emailTo = "mon@wer.com.ua, mon1@wer.com.ua, mon2@wer.com.ua"
И кстати, все эти решения уже показаны в ответах выше...
0
0 / 0 / 0
Регистрация: 24.07.2018
Сообщений: 15
24.07.2018, 12:40
Спасибо.
Получилось
$emailTo = "mon@wer.com.ua, mon1@wer.com.ua, mon2@wer.com.ua"

Напишите как добавить еще вложение.
Например
D:\Temp\test.xlsx, D:\Temp\test1.xlsx, D:\Temp\test2.xlsx
0
 Аватар для KDE777
1887 / 1109 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
24.07.2018, 12:56
Цитата Сообщение от simonpst Посмотреть сообщение
как добавить еще вложение
PowerShell
1
2
3
4
5
...
$file = "D:\Temp\test.xlsx","D:\Temp\test1.xlsx","D:\Temp\test2.xlsx"
...
$file |%{$att = new-object Net.Mail.Attachment($_); $msg.Attachments.Add($att)}
...
Добавлено через 7 минут
И ещё раз посоветую использовать Send-MailMessage, например для нескольких получателей и вложений:


PowerShell
1
2
3
4
$To = "mon@wer.com.ua","mon1@wer.com.ua","mon2@wer.com.ua"
$Attachment= "D:\Temp\test.xlsx","D:\Temp\test1.xlsx","D:\Temp\test2.xlsx"
 
Send-MailMessage -From $From -To $To -Subject $Subject -Body $Body -Attachment $Attachment -SmtpServer $SMTPServer -port $port -Credential $Credential
0
0 / 0 / 0
Регистрация: 24.07.2018
Сообщений: 15
24.07.2018, 13:08
все равно во вложении только первый файл
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$emailFrom = “sales@wer.net.ua”
$emailTo = "mon@wer.com.ua"
$subj = “Проверка рассылки”
$body = “Это Проверка рассылки”
$user = "sales@wer.net.ua"
$pass = "Password_312"
$file = "D:\Temp\Medvedev\NEW\Distribution Ukraine_TM_Ref.xlsx","D:\Temp\Medvedev\NEW\Distribution Ukraine_Distr_Ref.xlsx"
$file |%{$att = new-object Net.Mail.Attachment($_); $msg.Attachments.Add($att)}
$smtpServer = “mail.wer.net.ua”
$port = 25
$smtp = new-object Net.Mail.SmtpClient($smtpServer,$port)
$smtp.EnableSSL = $false
$smtp.Credentials = New-Object System.Net.NetworkCredential($user, $pass);
$msg = new-object Net.Mail.MailMessage
$msg.From = $emailFrom
$msg.To.Add($emailTo)
$msg.Subject = $subj
$msg.Body = $body
$msg.Attachments.Add($att)
$smtp.Timeout = 100000 
$smtp.Send($msg)
Добавлено через 5 минут
Ошибся - только ВТОРОЙ файл.
0
 Аватар для KDE777
1887 / 1109 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
24.07.2018, 13:11
Цитата Сообщение от simonpst Посмотреть сообщение
все равно во вложении только первый файл
конечно один, т.к. надо было строчку $msg.Attachments.Add($att) заменить на $file |%{$att = new-object Net.Mail.Attachment($_); $msg.Attachments.Add($att)}

Вы по какой причине не хотите использовать более простое и наглядное решение с использованием стандартного PS командлета Send-MailMessage?
0
0 / 0 / 0
Регистрация: 24.07.2018
Сообщений: 15
24.07.2018, 13:17
Спасибо, получилось.
Причина отказа от стандартного PS командлета Send-MailMessage - явное указание логина и пароля SMTP.
Если можно, вышлите решение с использованием стандартного PS командлета Send-MailMessage
0
 Аватар для KDE777
1887 / 1109 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
24.07.2018, 13:23
Цитата Сообщение от simonpst Посмотреть сообщение
Если можно, вышлите решение с использованием стандартного PS командлета Send-MailMessage
И ещё раз - ответ #9 в этом топике, кстати помечен, как решение

Добавлено через 2 минуты
И если у вас в скрипте указано $smtp.EnableSSL = $false, тогда просто уберите ключ -UseSsl
0
0 / 0 / 0
Регистрация: 24.07.2018
Сообщений: 15
26.07.2018, 13:29
Вот так?
$From = “sales@wer.net.ua”
$To = "mon@wer.com.ua", "mon1@wer.com.ua", "mon2@wer.com.ua"
$Cc = "mon3@wer.com.ua", "mon4@wer.com.ua"
$Bcc = "mon5@wer.com.ua", "mon6@wer.com.ua"
$SMTPServer = “mail.wer.net.ua”
$SMTPPort = "25"
# $Username = $From
$Username = "sales@wer.net.ua"
$Password = "Password_312"
$subject = “Проверка рассылки”
$body = “Это Проверка рассылки”
$file = "D:\Temp\Medvedev\NEW\Distribution Ukraine_TM_Ref.xlsx","D:\Temp\Medvedev\N EW\Distribution Ukraine_Distr_Ref.xlsx"

не понятно $SecPassword = $Password | Convertto-SecureString -AsPlainText -Force
$Credential = New-Object -TypeName System.Management.Automation.PSCredentia l -Argumentlist $Username,$SecPassword

Send-MailMessage -From $From -To $To -Cc $Cc -Bcc $Bcc -Subject $Subject -Body $Body -BodyAsHtml -Attachments $file -SmtpServer $SMTPServer -port $SMTPPort -UseSsl -Credential $Credential
0
 Аватар для KDE777
1887 / 1109 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
26.07.2018, 13:47
Цитата Сообщение от simonpst Посмотреть сообщение
Вот так?
Цитата Сообщение от KDE777 Посмотреть сообщение
И если у вас в скрипте указано $smtp.EnableSSL = $false, тогда просто уберите ключ -UseSsl
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$From = "sales@wer.net.ua"
$To = "mon@wer.com.ua", "mon1@wer.com.ua", "mon2@wer.com.ua"
$Cc = "mon3@wer.com.ua", "mon4@wer.com.ua"
$Bcc = "mon5@wer.com.ua", "mon6@wer.com.ua"
$SMTPServer = "mail.wer.net.ua"
$SMTPPort = 25
$Username = $From
$Password = "Password_312"
$subject = "Проверка рассылки"
$body = "Это Проверка рассылки"
$file = "D:\Temp\Medvedev\NEW\Distribution Ukraine_TM_Ref.xlsx","D:\Temp\Medvedev\NEW\Distribution Ukraine_Distr_Ref.xlsx"
 
$SecPassword = $Password | Convertto-SecureString -AsPlainText -Force
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -Argumentlist $Username,$SecPassword
 
Send-MailMessage -From $From -To $To -Cc $Cc -Bcc $Bcc -Subject $Subject -Body $Body -BodyAsHtml -Attachments $file -SmtpServer $SMTPServer -port $SMTPPort -Credential $Credential
Добавлено через 3 минуты
и если нет необходимости в добавление получателей в поля "Копия" и "Скрытая копия", тогда ключи -Cc, -Bcc и переменные $Cc, $Bcc естественно не нужны.
1
0 / 0 / 0
Регистрация: 24.07.2018
Сообщений: 15
26.07.2018, 14:15
Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.07.2018, 14:15

Отправить сообщение на email
У меня есть форма html. Нужно написать код php для отправки сообщения на почту и доработать код html до рабочего состояния. Php не...

Отправить файл по email
Люди помогите очень нужно. Програма заключатся есть какойто файл (константа). и его нужно скопировать и отправить на эмейл или хостинг...

Отправить email с вебстраницы
Всем привет. Как я могу сделать форму с которой потом люди скажем смогут мне отправлять комменты? У меня вот есть такой код: ...

Не могу отправить email
Всем привет, хочу отправить email, нашел несколько примеров, какие-то работают, а какие-то нет. Вот например: # coding: utf-8 import...

Аватар иконка для сообщений email почты?
Добрый день. Где можно почитать о том как добавить свою иконку для ящика электронной почты или всего домена. Чтобы почтовые...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
38
Ответ Создать тему
Опции темы

Новые блоги и статьи
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru