Возник вопрос с правами. Я пишу некоммерческую программу, которая в частности работает с почтовыми ящиками, для отсылки писем использую blat, для скачивания собираюсь использовать pop3recv.exe Вопрос — можно ли включить pop3recv.exe в дистрибутив моей проги? Повторюсь, программа моя некоммерческая, распространяться будет бесплатно, исходники будут открыты.
Пока нигде. Т.к. выполнена на данный момент процентов на 30% и существует пока в виде отдельных не объединенных кусков. Это мой первый опыт в программировании, потому доделаю месяца через два, не раньше. Пишу на Autoit. Вот пример кода, который, как предполагается, будет использовать pop3recv.exe
#include <Constants.au3>
$POP3RecvArgs = "pop3recv.exe -s pop.yandex.ru -p 110 -u delta2-greit -w не_скажу -uidl -dw"
_GetMail ($POP3RecvArgs)
Func _GetMail ($CMDstring) ; функция скачивает почту и выдирает из нее аттачи
$foo = Run ($CMDstring, @ScriptDir, @SW_HIDE, $STDOUT_CHILD) ; запускаем pop3recv.exe с аргументами
$sReadStdout = ""
While 1 ; бесконечный цикл
$line = StdoutRead($foo) ; захватываем вывод построчно
If $line <> "" Then
$sReadStdout &=$line ; если он не пустой, дописываем его к переменной $sReadStdout
EndIf
If @error Then ExitLoop ; если вывод кончился, выходим из цикла
Sleep (1) ; спим 1 мсек, чтоб не грузить излишне процессор
WEnd
$sAllowed_Email = "delta-greit[сами_знаете_что]yandex.ru" ; объявляем адреса, с которых разрешено выдирать аттачи
$aContents = StringRegExp($sReadStdout, '(?m)^From: +(?:.*?<|)(.*?)(?:>|)(?s)\s+.*?filename="(.*?)".*?\r\n\r\n(.*?)\r\n\r\n', 3) ; обрабатываем весь вывод pop3recv.exe, сохраняя в массив адреса отправителей, имена аттачей, сами аттачи в UUE
For $i = 0 To UBound($aContents)-1 ; пробегаем циклом по массиву
;Каждые 3 единицы проверяем от кого, и если совпадает, то:
If Mod($i, 3) = 0 And $i+2 <= UBound($aContents)-1 And $aContents[$i] = $sAllowed_Email Then
; 1. пишем аттач в текстовый файл
FileWrite($aContents[$i+1] & ".txt", $aContents[$i+2])
; 2. декодируем его с помощью base64.exe, получая аттач в бинарном виде
RunWait ("base64.exe -d " & $aContents[$i+1] & ".txt" & " " & $aContents[$i+1], @ScriptDir, @SW_HIDE)
; 3. удаляем текстовый файл аттача
FileDelete ($aContents[$i+1] & ".txt")
EndIf
Next
EndFunc ; ==> _GetMail
И ещё вот здесь почитайте: http://forum.etype.net/viewtopic.php?t=3279
А где мы сможем посмотреть вашу программу?