![]() |
Отправить письмо с вложением.
Как можно реализовать сабж, с использованием CMD.
Без использования сторонних программ - утилит. Возможно использование PowerShell. Суть такова: Есть bat файл, который ведет лог своей работы и в конце работы делает call Send-Log-Email.bat Send-Log-Email.bat должен отправить на почту лог предидущего бат файла. Как реализовать в бат файле отправку письма с вложением? |
Отправлять почту через батик никогда не пробовал - слишком часто там приходится следить за ответом сервера, находясь в оболочке телнета.
Лично для себя - отправляю логи через ftp (есть у многих хостеров с бесплатной почтой). Могу поделиться одним из: Батник на удаленном объекте по Шедулу паковал архив с некой базой и логом и отправлял его на ftp сервер (используется до сих пор). В главном офисе другой батник (также по Шедулу, но на пару часов позже) скачивал и распаковывал архив. При необходимости апдейта версии или прочих "действиях" на удаленном объекте, батник поддерживает передачу 2х файлов - один из них батник апдейта, а другой - некоторые данные, например архив. Пересылка Код:
@Echo Off Код:
Работа с почтовым ящиком через Telnet. |
Цитата:
Код:
$emailFrom = "user@yourdomain.com" |
Быть может Вам подойдет не PowerShell, а VBS/WSH? Вот тут пример есть: Примеры скриптов для администрирования
Скрипт сжимает указанную папку с логами и отправляет по указанному адресу. Недостатки решения: - использование внешней утилиты сжатия 7z.exe; - необходимость Exchange server в организации. Код:
' === Script Information Header === |
Цитата:
- тут отправка по SMTP, не вижу необходимости в Exchange. |
Цитата:
Код:
Log_BackUp-%DATE:~-10%.txt Код:
Log_BackUp-23.11.2009.txt |
Цитата:
Код:
$file = "Log_BackUp-" + (Get-Date -format "dd.mm.yyyy") + ".txt" |
Как использовать авторизацию на почтовом сервере?
Можно использовать почтовый сервер для отправки без авторизации, но он находится в другой сети и не всегда может быть доступен. А почтовый сервер, который находиться в одной сети с машиной на которой это будет работать, требует авторизации. Подскажите как прикрутить авторизацию в скрипте. |
Цитата:
Код:
$smtp.Credentials = new-object Net.NetworkCredential("user", "password") |
Цитата:
Исправил на вот такое Код:
(Get-Date -uformat "%d.%m.%Y") |
C авторизацией оказалось совсем по другому, чем думал.
Сервер в локальной сети не хотел отправлять от несуществующего пользователя. Предложенная конструкция работала, даже с неправильным паролем, убрал её тоже работает. В остальном все хорошо, всем спасибо! |
Камрады, а как сделать отправку без внешнего SMTP?
Может как то срипт надо пделать так, что бы локальная машина выступала в роли SMTP сервера и отправка шла от localhost? |
ameelien, элементарно. Разверните на локальной машине smtp-сервер.
Можете, конечно, попробовать и без него, но, скорее всего, принимающий сервер такое письмо попросту отвергнет. |
я сделал так, когда вызывается батник с параметрами он собирает vbs файлик запускает его а потом грохает
пример VBS взят кстати с этой темы |
Время: 04:39. |
Время: 04:39.
© OSzone.net 2001-