Войти

Показать полную графическую версию : Автоматическая отправка документов надлежащему адресату


VictorST
11-06-2015, 23:22
Доброго времени суток, уважаемые скриптописатели! Нужны ваши бесценные советы. Задумка в том, что я хочу попытаться написать сложносоставной скрипт, который будет запускаться вручную в операционной системе 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
Вся затея нужна для того, чтобы решить проблему с 1С, которую толком я не знаю и просто хочу добиться того, чтобы расчётные листки автоматически рассылались именно тем лицам, для которых они предназначены. »
Download Collaboration Data Objects, version 1.2.1 from Official Microsoft Download Center (https://www.microsoft.com/en-us/download/details.aspx?id=3671)+Отправка сообщений по SMTP из VBScript, объектная модель CDO, объект CDO.Message - AskIt.RU (http://www.askit.ru/custom/progr_admin/m12/12_cdo.htm). Можете использовать как внешний .vbs-скрипт, так и перевести его на 1C (и, помнится, в самой 1С во внешней библиотеке тоже что-то было про отправку/получение писем).

P.S объясните пожалуйста, за что отвечает параметр -cc? Не нашел инфы зачем это надо. »
Скорее, особо и не пытались. Электронная почта — Википедия (https://ru.wikipedia.org/wiki/%DD%EB%E5%EA%F2%F0%EE%ED%ED%E0%FF_%EF%EE%F7%F2%E0):
Сc: (RFC 822, RFC 1123) — (от англ. carbon copy) содержит имена и адреса вторичных получателей письма, к которым направляется копия. Участвует в формировании поля SMTP RCPT TO, как и поле "To".

greg zakharov
12-06-2015, 07:09
.ps2Может все же .ps1?!
Я всё правильно понял или нужно что-то скорректировать?Конечно же нужно "скорректировать", а в идеале и вовсе задаться вопросом: для чего танцевать код, когда его нужно писать? Если имена (пароли, явки, адреса - нужное подчеркнуть) хранятся в JSON (XML, SQLite, хэш-литерале - также подчеркнуть нужное), достаточно замутить перебор данных с последующей отправкой нужных данных (при условии, что ссылки на аттачи прописаны в этих данных). Но Outlook'ом здесь не шибко пахнет, ибо командлет Send-MailMessage согласно справке "отправляет сообщение электронной почты из Windows PowerShell", поэтому придется скорее использовать COM от Outlook.
Можете использовать как внешний .vbs-скрипт...Резонный вопрос - зачем?

Iska
12-06-2015, 12:40
Резонный вопрос - зачем? »
1С, которую толком я не знаю »

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

VictorST
15-06-2015, 20:19
ВОТ! РЕШЕНО! Человек пишет 100% рабочее решение, не постесняюсь привести его сюда (и пусть все так делают, а не будут хмырями, которые тычут пальцем во всех и говорят какие они идиоты и не говорят ничего полезного, к счастью на OSzone такого не замечал). http://www.mrspreadsheets.com/1/post/2014/01/vba-code-snippet-25-create-multiple-emails-from-excel-with-file-attachment.html




© OSzone.net 2001-2012