Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Отправка email с вложениями из подпапок каталога

Ответить
Настройки темы
PowerShell - Отправка email с вложениями из подпапок каталога
E_o E_o вне форума

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Здравствуйте. Хочу настроить отправку email из каталога C:/Mail/ с папками где, в каждой папке файл pdf или xls, который будет вложением в письмо.
Отправлять или средствами PowerShell или скриптом для MailAlert. Адрес получателя могу указать в каждой папке в виде файла с именем example@mail.com.
Как сделать перебор папок с выводом в цикле переменных "адрес получателя" и "ссылка на файлы с вложением" или "файл с вложением"? потому что MailAlert может только одно вложение вставлять. После каждого цикла сделать перенос файлов вложений в отдельную одну папку архив.
Если в какой-то папке нет файлов pdf и/или xls, то пропустить её.

Будут ли проблемы, если папки и/или вложения будут на русском?

Можно ли сделать так, чтобы скрипт проверял содержимое файла на наличие определенных слов, например во вложении есть слова "отправитель" и "получатель", а в папке есть файл words.txt, в котором указаны эти 2 слова, как некий параметр и если в содержимом файла нет этих слов, то в лог пишется ошибка и письмо не отправляется, файл не удаляется.

Спасибо.

Отправлено: 14:10, 13-01-2021

 

Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


Создайте примерную иерархию каталогов с файлами и выложите сюда в zip.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 17:46, 13-01-2021 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


E_o, попробуйте описать саму задачу, а не выбранное решение.

Отправлено: 19:13, 13-01-2021 | #3

E_o E_o вне форума Автор темы

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: zip mail.zip
(26.6 Kb, 2 просмотров)

Цитата DJ Mogarych:
выложите сюда в zip. »

Отправлено: 20:44, 13-01-2021 | #4

E_o E_o вне форума Автор темы

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska,

Задача: Отправлять письма с вложениями zip, pdf, xls, xlsx, doc, docx из каталога папок по разным адресатам с проверкой в тексте вложения корректности соответствия наименования отправителя и адресата. Документ вложение содержит имена отправителя - он один во всех документах - ГеннадийВВ, и адресата, АннаИЛ или ЗлатаГВ и т.д. в разных папках каталога. Этим именам соответствуют адреса электронной почты в каком-то произвольном документе. Все имена и почта уникальные. Это для того, чтобы в каталог АннаИЛ не попало вложение для ЗлатаГВ или не от ГеннадийВВ, потому что в папках они будут создаваться вручную.
Если имена соответствуют, то отправить письмо с вложениями, а файлы переместить в отдельную папку, если не соответствуют, оставить их в папке и создать 1 файл с текстом ошибок:
не совпадает адресат, не совпадает отправитель, не совпадает адресат/отправитель
- в папке 1, папке 2

Отправлено: 21:06, 13-01-2021 | #5


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


Могу сразу сказать, что проверять содержимое файла скриптом - занятие крайне неблагодарное, если вообще возможное. Во всяком случае, работать это будет супер-криво при том, что реализация такого добра невероятно трудоёмкая. Я за это точно не буду даже браться.
Ладно бы был один формат (лучше всего txt), ещё куда ни шло, а тут такой зоопарк. Тем более, тут и zip, и pdf, который может вообще не содержать текстового слоя.

Насчёт остального - сейчас поковыряю.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 21:38, 13-01-2021 | #6

E_o E_o вне форума Автор темы

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


DJ Mogarych, спасибо.
Если бы и без проверки, то уже ах!
Тогда емейл отправителя какой-то один на yandex.ru или gmail.com, а адрес получателя либо файлом с именем адреса или в текстовом файле в папке.

Последний раз редактировалось E_o, 13-01-2021 в 22:24.


Отправлено: 22:11, 13-01-2021 | #7


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


Powershell:
Код: Выделить весь код
$folders = dir C:\mail -Directory -Recurse

foreach ($folder in $folders) {
$files = dir "$($folder.fullname)" -File
    if ($files |? Extension -match "xlsx?|docx?|pdf|zip" -OutVariable attachments) {
    Send-MailMessage -SmtpServer smtp.server.com -from sender@server.com `
    -to ($files -match "^\w+@\w+\.\w+$").name `
    -subject "Тема письма" -body "Текст письма" `
    -attachments $attachments.fullname
    }
}
Попробуйте погонять, я не тестировал, т. к. под рукой нет smtp-сервера.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 22:17, 13-01-2021 | #8

E_o E_o вне форума Автор темы

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


DJ Mogarych,
спасибо, сейчас попробую

Отправлено: 22:26, 13-01-2021 | #9

E_o E_o вне форума Автор темы

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
$Encoding = [System.Text.Encoding]::UTF8
$secpasswd = ConvertTo-SecureString 'passw' -AsPlainText -Force
 $smtpcredentials = New-Object System.Management.Automation.PSCredential ('my@e-mail.ru', $secpasswd)
 
$folders = dir C:\Mail -Directory -Recurse

foreach ($folder in $folders) {
$files = dir "$($folder.fullname)" -File
    if ($files |? Extension -match "xlsx?|docx?|pdf|zip" -OutVariable attachments) {
    Send-MailMessage -Port 587 -UseSSL -SmtpServer smtp.yandex.ru -credential $smtpcredentials -from my@e-mail.ru -Encoding $Encoding `
    -to ($files -match "^\w+@\w+\.\w+$").name `
    -subject "Тема письма" -body "Текст письма" `
    -attachments $attachments.fullname
    }
}
добавил авторизацию, сейчас подумаю как переместить вложения в архив.

Большое спасибо. Письма отправляются, доходят.

Отправлено: 23:28, 13-01-2021 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Отправка email с вложениями из подпапок каталога

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Отправка email interminable Скриптовые языки администрирования Windows 5 13-01-2017 16:00
Автоматическая отправка файлов из локального каталога на FTP __sa__nya Хочу все знать 5 09-03-2015 09:19
FreeBSD - [решено] Zabbix. Отправка по email rip88 Общий по FreeBSD 1 07-11-2013 14:52
CMD/BAT - [решено] Отправка скриншота на email andrew_gurylyov@vk Скриптовые языки администрирования Windows 22 23-02-2012 11:52
CMD/BAT - cmd определение ip и отправка на email exekill Скриптовые языки администрирования Windows 1 15-01-2012 17:40




 
Переход