Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Rejestracja kont e-mail w PHP
Forum PHP.pl > Forum > PHP
pi4sek
Witam, robię aplikację do obsługi poczty (webmail) w PHP. Logowanie się i odczytywanie wiadomości to nie problem, ale czy da się napisać rejestrację z tworzenie adresów e-mail. Z pomocą protokołu IMAP chyba nie da rady. Proszę o radę jeśli ktoś zna rozwiązanie.
erix
Cytat
ale czy da się napisać rejestrację z tworzenie adresów e-mail

Tzn? Tworzenie kont?
pi4sek
Tak. Tworzenie nowego konta e-mail.
erix
Wystarczy napisać odpowiedni skrypt systemowy. Ale to zależy od demona i systemu. [;

Jeśli chodzi o PHP - przez np. exec" title="Zobacz w manualu PHP" target="_manual wywołujesz ten skrypt, w parametrach podajesz login, hasło, ew. quota i problem z głowy. [;
pi4sek
Wolałbym rozwiązanie w pełnie w PHP, ale jeśli się nie da to może wiesz jak się zabrać do napisania takiego skryptu. Najlepiej żeby skrypt działał na jakimś hostingu z wirtualnym serwerem.
erix
Cytat
Wolałbym rozwiązanie w pełnie w PHP

Zapomnij.

Cytat
ale jeśli się nie da to może wiesz jak się zabrać do napisania takiego skryptu. Najlepiej żeby skrypt działał na jakimś hostingu z wirtualnym serwerem.

To zależy. Bo np. do DirectAdmina jest API, którym można działać przez cURL-a.
pi4sek
To już wolę jakiś skrypt w bashu. Tylko gdzie znajdę coś na ten temat?
Fifi209
Cytat(pi4sek @ 16.07.2009, 13:39:44 ) *
To już wolę jakiś skrypt w bashu. Tylko gdzie znajdę coś na ten temat?


W google ;p

Próbuj np. bash tworzenie kont e-mail, bash create e-mail account(s), etc.
pi4sek
Niestety google nie pomaga. Przydała by mi się komenda na dodanie nowego konta i sprawdzanie już istniejących.
Fifi209
Cytat(erix @ 16.07.2009, 13:07:28 ) *
Wystarczy napisać odpowiedni skrypt systemowy. Ale to zależy od demona i systemu. [;


Cytat(pi4sek @ 16.07.2009, 14:07:32 ) *
Niestety google nie pomaga. Przydała by mi się komenda na dodanie nowego konta i sprawdzanie już istniejących.


Wyciągnij sam wnioski.
erix
Wiesz, niekoniecznie jest potrzebna komenda...

Niektóre serwery korzystają z bazy LDAP, czy SQL do zapisywania informacji o kontach.

Ale to wszystko jest uzależnione od konkretnej konfiguracji, nie ma uniwersalnej recepty.
linx
Przede wszystkim musisz odpowiedzieć sobie na pytanie gdzie są trzymane dane do kont mailowych i do tego przystosować swój skrypt jeśli baza danych do samo php wystarczy, jeśli są to konta systemowe to bash lub python
pi4sek
Szkoda, że nie ma jakiegoś uniwersalnego rozwiązania, żeby skrypt działał na różnych serwerach.
erix
Jeśli jest panel typu DirectAdmin/cPanel/Plesk, to byłoby uniwersalne.
pi4sek
Ale wtedy dla każdego panelu trzeba pisać oddzielnie.
erix
Lepiej chyba dla każdego panelu z osobna niż dla każdego demona...

A zapewniam Cię, że tych jest kilkakrotnie więcej.
pi4sek
Zdecydowałem się na napisanie funkcji dla panelu(cPanel). Może komuś się przyda:
  1. <?php
  2. //konfiguracja
  3. define('CPANEL_HOST', 'adres_do_cpanleu.pl');
  4. define('CPANEL_UZYTKOWNIK', 'login');
  5. define('CPANEL_HASLO', 'haslo');
  6. define('CPANEL_PORT', 2082);
  7. define('CPANEL_KOMPOZYCJA', 'x3polish');
  8. //czy mają wyświetlać się szczegółowe błędy
  9. define('CPANEL_BLEDY', true);
  10.  
  11. function dodajKonto($nazwa, $haslo)
  12.    {
  13.        $post['email'] = $nazwa;
  14.        $post['domain'] = CPANEL_DOMENA;
  15.        $post['pass'] = $haslo;
  16.        $post['pass2'] = $haslo;
  17.        $post['password'] = $haslo;
  18.        $post['password2'] = $haslo;
  19.        $post['quota'] = CPANEL_POJEMNOSC;
  20.  
  21.  
  22.        $ch = curl_init();
  23.        curl_setopt($ch, CURLOPT_URL, 'http://'.CPANEL_HOST.':'.CPANEL_PORT.'/frontend/'.CPANEL_KOMPOZYCJA.'/mail/doaddpop.html');
  24.        curl_setopt($ch, CURLOPT_USERPWD, CPANEL_UZYTKOWNIK.':'.CPANEL_HASLO);
  25.        curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
  26.        curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
  27.        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  28.        curl_setopt($ch, CURL_FAILONERROR, true);
  29.        $strona = curl_exec($ch);
  30.  
  31.        if (curl_errno($ch))
  32.        {
  33.            $blad = 'Błąd tworzenia konata';
  34.  
  35.              //szczegóły błędu
  36.            if(CPANEL_BLEDY==true)
  37.              $blad .=' [nr '.curl_errno($ch).'] ('.curl_error($ch).')';
  38.  
  39.            throw new Exception($blad);
  40.        }
  41.        curl_close($ch);
  42.  
  43.        if (substr_count($strona, $nazwa.'@'.CPANEL_DOMENA)==0)
  44.        {
  45.            $blad = 'Błąd tworzenia konata';
  46.  
  47.              //szczegóły błędu
  48.            if(CPANEL_BLEDY==true)
  49.              $blad .='<br />'.$strona;
  50.  
  51.            throw new Exception($blad);
  52.        }
  53.    }
  54. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.