Advertisement
Alex1979

sendMailSMTPClient

Nov 11th, 2014
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.75 KB | None | 0 0
  1. --//Массив необходимых папок и файлов (false - создается только папка)
  2. local data_load =   {   {"uS4F7euL","/Lib/","LCR"},
  3.             {false,"/Logs/",false},
  4.             {false,"/Temp/",false}
  5.         }
  6.  
  7. --//Создание папок и загрузка необходимых файлов с pastebin.com
  8. local function loadFiles(data_load)
  9.         if not http then
  10.                 error("Set enable API_http in ComputerCraft.cfg")
  11.         end      
  12.    
  13.     for i=1, #data_load do 
  14.         if not fs.exists(data_load[i][2]) then
  15.             fs.makeDir(data_load[i][2])
  16.         end
  17.         if data_load[i][1] then
  18.             if not fs.exists(data_load[i][2]..data_load[i][3])then
  19.                 local response = http.get("http://pastebin.com/raw.php?i="..textutils.urlEncode(data_load[i][1]))      
  20.                 if response then
  21.                     local sResponse = response.readAll()
  22.                     response.close()
  23.                     local file = fs.open(data_load[i][2]..data_load[i][3], "w")
  24.                     file.write( sResponse )
  25.                     file.close()
  26.                 end
  27.             end
  28.         end
  29.     end  
  30. end
  31.  
  32. loadFiles(data_load)  -- скачивание необходимых библиотек, файлов и создание директорий
  33. os.loadAPI("Lib/LCR")  -- загрузка библиотеки для шифрования
  34.  
  35. local my_channel = 3000      -- Ваш радиоканал, на который получите ответ от сервера (1 - 65535)
  36. local server_channel = 25666  -- Wi-Fi радиоканал игрового почтового сервера
  37.  
  38. modem = peripheral.wrap("top")  -- укажите сторону модема
  39. modem.open(my_channel)
  40. local state = 'empty'
  41.  
  42. --// Функция отправки зашифрованного сообщения на почтовый сервер
  43. -- Необходим аккаунт на игровом сервере, который можно получить в любом почтовом отделении
  44. -- У Вас есть лимит сообщений. Каждый час работы сервера у Вас становиться на одно сообщение больше!
  45. -- Лимит сообщений при накоплении - 100 шт.
  46.  
  47. local function sendMailCrypt(mailto, subject, text, nick, pass)
  48.     local key = LCR.getkey(pass)
  49.     local open_text = "mailto="..mailto.."&subject="..subject.."&content="..text
  50.     local crypt_text = LCR.crypt(open_text,key)
  51.     local msg = textutils.serialize({nick, crypt_text})
  52.    
  53.     if modem.isOpen(my_channel) then
  54.         modem.transmit(server_channel, my_channel, msg)
  55.         msg = {os.pullEvent("modem_message")}
  56.         state = msg[5]
  57.     else
  58.         error('Modem is not open')
  59.     end
  60. end
  61.  
  62. local function send()
  63.     sendMailCrypt(mailto, subject, text, nick, pass)
  64. end
  65.  
  66. local function timer()
  67.     sleep(20)   --время сброса попытки отправки, когда сервер не отвечает или перестал отвечать, сек
  68.     state = 'empty'
  69. end
  70.  
  71.  
  72. --//Вот пример данных для отправки на указанный почтовый адрес с помощью SMTP.
  73. --ВНИМАНИЕ!  ПАРОЛЬ ИГРОВОЙ! ЕГО МОЖНО ПОЛУЧИТЬ(ВОССТАНОВИТЬ) В ПОЧТОВОМ ОТДЕЛЕНИИ В ИГРЕ!
  74. --ПАРОЛЬ ХРАНИТЕ В ТАЙНЕ.
  75.  
  76. nick = 'alexcc' -- Ваш ник в Игре
  77. pass = '123ABC' -- пароль в игре, которы Вы получили в почтовом отделении при клике по блоку  детектора в личку на игровую почту
  78. mailto = '[email protected]'  -- адрес, кому хотите отправить письмо (или укажите свой)
  79. subject = 'Grief-Attack'    -- тема письма
  80. text = 'Player-Kakashka89-penetrated-in-to-my-house.Coordinates:23-465-78'  --текст письма
  81. debag = true   -- измените на false, если не хотите видеть отладочной информаци от сервера
  82.  
  83.  
  84. --//Пример использования функции отправки сообщения из игры Майнкрафт
  85. --  на реальный почтовый адрес!
  86.  
  87. function mailSend(n, debag)
  88.     for i = 1, n do
  89.         parallel.waitForAny(send,timer)
  90.         if state == 'Your email was sent!' then
  91.             if debag then
  92.             print('Attempt to send: '..i..'\nINFO: Your email was sent!') end
  93.             return true
  94.         elseif state == 'empty' then
  95.             if debag then
  96.             print('Attempt to send: '..i..'\nINFO: Server not response!') end
  97.         else
  98.             if debag then
  99.             print('Attempt to send: '..i..'\nINFO: ',state) end
  100.         end
  101.     end
  102.         return false
  103. end
  104.  
  105. mailSend(10, debag) --количество попыток отправки письма, вернет TRUE при положительном ответе от сервера
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement