Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Автоматическая отправка документов надлежащему адресату (http://forum.oszone.net/showthread.php?t=301078)

VictorST 11-06-2015 23:22 2517656

Автоматическая отправка документов надлежащему адресату
 
Доброго времени суток, уважаемые скриптописатели! Нужны ваши бесценные советы. Задумка в том, что я хочу попытаться написать сложносоставной скрипт, который будет запускаться вручную в операционной системе Windows 7 Professional и он будет автоматически создавать почтовые сообщение Outlook 2010, затем забирать файлы из определенной папки (по имени файла определяя, к какому адресату отнесено какое сообщение) и затем данные файлы прикладывать к письму (в котором автоматически будет указан адрес именно того получателя, которому надлежит получить документ с соответствующим названием), а затем по всем письмам будет дана команда отправки и их получат именно те адресаты, которые должны их получить (ибо письма конфиденциальны).

Возможно ли написать что-то подобное в виде скрипта для Powershell? Заранее спасибо за советы. Если возможно, то дайте пожалуйста ссылки на статьи по написанию скриптов для Windows. У клиентов машины на Windows 7 Enterprise. Вся затея нужна для того, чтобы решить проблему с 1С, которую толком я не знаю и просто хочу добиться того, чтобы расчётные листки автоматически рассылались именно тем лицам, для которых они предназначены.

Вот что я начитал и надумал:

$From = "dulin@chelyabinsk.ru"
$To = "michalich@chelyabinsk.ru"
$Attachment = "C:\SECRET\LoveStory-1.pdf"
$Subject = "LoveStory"
$Body = "Have a great day! :)"
$SMTPServer = "mail.chelyabinsk.ru"
$SMTPPort = "587"

$From = "dulin@chelyabinsk.ru"
$To = "dmitrich@chelyabinsk.ru"
$Attachment = "C:\SECRET\LoveStory-2.pdf"
$Subject = "LoveStory"
$Body = "Have a great day! :)"
$SMTPServer = "mail.chelyabinsk.ru"
$SMTPPort = "587"

$From = "dulin@chelyabinsk.ru"
$To = "egorich@chelyabinsk.ru"
$Attachment = "C:\SECRET\LoveStory-3.pdf"
$Subject = "LoveStory"
$Body = "Have a great day! :)"
$SMTPServer = "mail.chelyabinsk.ru"
$SMTPPort = "587"

Send-MailMessage -From $From -to $To -Subject $Subject `
-Body $Body -SmtpServer $SMTPServer -port $SMTPPort -UseSsl `
-Credential (Get-Credential) -Attachments $Attachment

После этого все прописываю в файле .txt, которому присваиваю расширение .ps2 и после этого запуская этот файл можно будет добиться того, что каждый из прописанных адресатов получит именно свой файл. То есть, michalich получит по почте файл LoveStory-1.pdf, dmitrich получит по почте файл LoveStory-2.pdf и так далее, хоть там 40 человек ещё будет прописано (весь завод). Я всё правильно понял или нужно что-то скорректировать? Заранее спасибо за советы!

P.S объясните пожалуйста, за что отвечает параметр -cc? Не нашел инфы зачем это надо.

Iska 12-06-2015 05:39 2517687

Цитата:

Цитата VictorST
Вся затея нужна для того, чтобы решить проблему с 1С, которую толком я не знаю и просто хочу добиться того, чтобы расчётные листки автоматически рассылались именно тем лицам, для которых они предназначены. »

Download Collaboration Data Objects, version 1.2.1 from Official Microsoft Download Center+Отправка сообщений по SMTP из VBScript, объектная модель CDO, объект CDO.Message - AskIt.RU. Можете использовать как внешний .vbs-скрипт, так и перевести его на 1C (и, помнится, в самой 1С во внешней библиотеке тоже что-то было про отправку/получение писем).

Цитата:

Цитата VictorST
P.S объясните пожалуйста, за что отвечает параметр -cc? Не нашел инфы зачем это надо. »

Скорее, особо и не пытались. Электронная почта — Википедия:
Цитата:

Сc: (RFC 822, RFC 1123) — (от англ. carbon copy) содержит имена и адреса вторичных получателей письма, к которым направляется копия. Участвует в формировании поля SMTP RCPT TO, как и поле "To".

greg zakharov 12-06-2015 07:09 2517693

Цитата:

Цитата VictorST
.ps2

Может все же .ps1?!
Цитата:

Цитата VictorST
Я всё правильно понял или нужно что-то скорректировать?

Конечно же нужно "скорректировать", а в идеале и вовсе задаться вопросом: для чего танцевать код, когда его нужно писать? Если имена (пароли, явки, адреса - нужное подчеркнуть) хранятся в JSON (XML, SQLite, хэш-литерале - также подчеркнуть нужное), достаточно замутить перебор данных с последующей отправкой нужных данных (при условии, что ссылки на аттачи прописаны в этих данных). Но Outlook'ом здесь не шибко пахнет, ибо командлет Send-MailMessage согласно справке "отправляет сообщение электронной почты из Windows PowerShell", поэтому придется скорее использовать COM от Outlook.
Цитата:

Цитата Iska
Можете использовать как внешний .vbs-скрипт...

Резонный вопрос - зачем?

Iska 12-06-2015 12:40 2517793

Цитата:

Цитата greg zakharov
Резонный вопрос - зачем? »

Цитата:

Цитата VictorST
1С, которую толком я не знаю »


VictorST 13-06-2015 12:28 2518133

В общем мне кажется я придумал решение этой задачи с использование VBA в Excel 2013 в тандеме с Outlook 2013. Посмотрим, что выйдет из этого...

VictorST 15-06-2015 20:19 2518942

ВОТ! РЕШЕНО! Человек пишет 100% рабочее решение, не постесняюсь привести его сюда (и пусть все так делают, а не будут хмырями, которые тычут пальцем во всех и говорят какие они идиоты и не говорят ничего полезного, к счастью на OSzone такого не замечал). http://www.mrspreadsheets.com/1/post...ttachment.html


Время: 21:58.

Время: 21:58.
© OSzone.net 2001-