Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.71/75: Рейтинг темы: голосов - 75, средняя оценка - 4.71
-17 / 2 / 0
Регистрация: 22.02.2017
Сообщений: 28

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

30.04.2018, 09:53. Показов 14910. Ответов 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
 Аватар для volodin661
6796 / 2293 / 348
Регистрация: 10.12.2013
Сообщений: 7,920
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
7406 / 2256 / 360
Регистрация: 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
7406 / 2256 / 360
Регистрация: 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
1886 / 1108 / 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
1886 / 1108 / 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
1886 / 1108 / 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
1886 / 1108 / 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
1886 / 1108 / 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 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru