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

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

interminable 13-01-2017 12:33 2703221

Отправка email
 
Здраве будьте бояре, нужна ваша великая помощ...
Нужен батник, в который заранее пропишешь отправителя и получателя письма, батник этот при запуске должен узнать локальный IP ПК и отправить его письмецом.

greg zakharov 13-01-2017 13:04 2703225

Отправка сообщения в примере ниже осуществляется самосборным curl'ом.
Код:

@echo off
  setlocal
    set "key=HKLM\SYSTEM\CurrentControlSet\Services"
    set "key=%key%\Tcpip\Parameters\Interfaces"
    for /f "tokens=3" %%i in (
      'reg query %key% /s ^| findstr /irc:"DhcpIPAddress"'
    ) do if /i "%%i" neq "0.0.0.0" set "ip=%%i"&goto:send
    :send
    set msg="%tmp%\msg.txt"
    for %%i in (
      "From:from@mail.ru"
      "To:target@mail.ru"
      "Subject:IP-Address"
      ""
      "%computername%:%ip%"
    ) do echo:%%~i>>%msg%
    curl -# smtps://smtp.mail.ru:465 --ssl-reqd^
    --mail-from "from@mail.ru" --mail-rcpt "target@mail.ru"^
    --upload-file %msg% -u from@mail.ru
    del /f /q %msg%
  endlocal
exit /b


interminable 13-01-2017 14:19 2703244

Ну я не такой прогер, ваще не прогер...
А где пароль от почты вписывать? И какие поля менять с почтовым адресом?

greg zakharov 13-01-2017 14:26 2703250

Парамерт -u в curl указывает на имя пользователя (имя почтового ящика), но последний может быть представлен парой username:password. В примере выше после запуска бата curl попросит ввести пароль от ящика (не светить же им, верно?!), но если хочется выставить пароль на всеобщее обозрение, то:
Код:

curl -# ... -u "from@mail.ru:password"
Помимо прочего есть возможность хранить имя пользователя и пароль для curl в файле _netrc, но этот способ потребует дополнительных телодвижений и также не особо безопасен, так как _netrc предствляет собой обычный текстовый файл без какого-либо шифрования.

interminable 13-01-2017 15:26 2703266

curl не является внутренней или внешней программой...а мне надо так, чтоб запускалось везде и всегда и легко.

greg zakharov 13-01-2017 16:00 2703282

Вам ведь русским языком было написано "самосборный curl", это значит "собран из исходников самостоятельно", - неудивительно, что curl "не является внутренней или внешней программой". Командная строка Windows не предусматривает средств взаимодействия по SMTP, POP3 и дыр и пыр; есть лишь убогий ftp.exe, который ftp сессии держит с полпинка, а может и того хуже, собственно, на этом вся роскошь и заканчивается. Если желаете, чтобы "везде и всегда", используйте WSH, только головной боли куда больше, нежели с PowerShell, который начиная с Win7 стал штатным средством Windows.
Кто бы что ни говорил, а круче curl для работы с сетью в консоли пока ничего не выдумано: здесь и возможность управлять облачными хранилищами через WebDAV, манипуляция почтой (SMTP\POP3\IMAP) и еще невесть сколько всего. Так что Вам выбирать: развернуть везде curl (чай ведь один бинарник, если статически слинкован) или освоить, например, WSH.


Время: 11:06.

Время: 11:06.
© OSzone.net 2001-