Создание учетных записей электронной почты с помощью PHP

Я пытаюсь создавать электронные письма с помощью PHP.

Это мой код, пока он очень простой, пока я не смогу получить рабочий скрипт. Это самое близкое, что у меня есть, но в нем говорится, что он добавил электронное письмо, хотя в cpanel его нет, поэтому, очевидно, его нет :)

Обратите внимание, что следующая информация в этом коде была отредактирована по соображениям безопасности (например, не настоящий пароль, имя пользователя или домен).

Это код, который я нашел и пытаюсь разрабатывать ..

<?php

// cPanel info
$cpuser = 'someusername'; // cPanel username
$cppass = 'somepassword'; // cPanel password
$cpdomain = 'somesite.com'; // cPanel domain or IP
$cpskin = 'someskin';  // cPanel skin. Mostly x or x2. 
// See following URL to know how to determine your cPanel skin
// http://www.zubrag.com/articles/determine-cpanel-skin.php

// Default email info for new email accounts
// These will only be used if not passed via URL
$epass = 'hispassword'; // email password
$edomain = 'somesite.com'; // email domain (usually same as cPanel domain above)
$equota = 20; // amount of space in megabytes


function getVar($name, $def = '') {
  if (isset($_REQUEST[$name]))
    return $_REQUEST[$name];
  else 
    return $def;
}

// check if overrides passed
$euser = getVar('user', '');
$epass = getVar('pass', $epass);
$edomain = getVar('domain', $edomain);
$equota = getVar('quota', $equota);

$msg = 'check';

if (!empty($euser))
while(true) {

  // Create email account
  $f = fopen ("http://$cpuser:$cppass@$cpdomain:2082/frontend/$cpskin/mail/doaddpop.html?email=$euser&domain=$edomain&password=$epass&quota=$equota", "r");
  if (!$f) {
    $msg = 'Cannot create email account. Possible reasons: "fopen" function allowed on your server, PHP is running in SAFE mode';
    break;
  }

  $msg = "<h2>Email account {$euser}@{$edomain} created.</h2>";

  // Check result
  while (!feof ($f)) {
    $line = fgets ($f, 1024);
    if (ereg ("already exists", $line, $out)) {
      $msg = "<h2>Email account {$euser}@{$edomain} already exists.</h2>";
      break;
    }
  }
  @fclose($f);

  break;

}

?>
<html>
<head><title>cPanel Email Account Creator</title></head>
<body>
<?php echo '<div style="color:red">'.$msg.'</div>'; ?>
<h1>cPanel Email Account Creator</h1>
<form name="frmEmail" method="post">
<table width="400" border="0">
<tr><td>Username:</td><td><input name="user" size="20" value="<?php echo htmlentities($euser); ?>" /></td></tr>
<tr><td>Password:</td><td><input name="pass" size="20" type="password" /></td></tr>
<tr><td colspan="2" align="center"><hr /><input name="submit" type="submit" value="Create Email Account" /></td></tr>
</table>
</form>
</body>
</html>

Заранее спасибо :)

Эндрю


person Andrew    schedule 25.07.2013    source источник
comment
В чем собственно вопрос?   -  person Khawer Zeshan    schedule 26.07.2013
comment
Есть ли на самом деле лучший способ сделать это? - не разрывая какой-нибудь клиент с открытым исходным кодом для достижения этой цели.   -  person Andrew    schedule 26.07.2013
comment
это должно проходить через cpanel? (может помочь: stackoverflow.com/questions/6422200/)   -  person    schedule 26.07.2013
comment
Это не обязательно, нет. Причина, по которой я предложил cpanel, заключается в том, что я не использую никаких альтернативных способов их добавления. Однако с учетом сказанного в отношении связанного сообщения код, с которым у меня возникают проблемы, является предлагаемым решением для этой темы.   -  person Andrew    schedule 26.07.2013
comment
Получил следующий сценарий из: stackoverflow.com/questions/17094468/ Этот скрипт работает :)   -  person Andrew    schedule 26.07.2013
comment
Ваш вопрос связан с stackoverflow.com/questions / 17094468 / сослаться на этот пост   -  person Crazy Developer    schedule 30.12.2013


Ответы (2)


Я думаю, это то, что вы ищете:

$socket = fsockopen($cpdomain,2082);
$cuser = "YourUserName";
$cpassword = "YourPassword";
$authstr = base64_encode("".$cpuser.":".$cppass."");
$in = "GET /frontend/$cpskin/mail/doaddpop.html?email=$euser&$edomain&password=$epass&quota=$equota
HTTP/1.0\r\nAuthorization: Basic $authstr \r\n";
fputs($socket,$in);
fclose( $socket );
person Mike Perrenoud    schedule 25.07.2013

Существует xml api для cpanel и несколько классов php для выполнения запросов. У многих людей есть конфигурации сервера, которые делают fopen проблематичным, но файл xmlapi.php работает на многих различных веб-хостах.

include("xmlapi.php");        //XMLAPI cpanel client class

$ip = "127.0.0.1";            // should be server IP address or 127.0.0.1 if local server
$account = "username";        // cpanel user account name
$passwd ="password";          // cpanel user password
$port =2083;                  // cpanel secure authentication port unsecure port# 2082
$email_domain ="example.com";
$email_user ="john";
$email_pass ="johnspassword";
$email_quota = 0;             // 0 is no quota, or set a number in mb

$xmlapi = new xmlapi($ip);
$xmlapi->set_port($port);     //set port number.
$xmlapi->password_auth($account, $passwd);
$xmlapi->set_debug(0);        //output to error file  set to 1 to see error_log.

$call = array(domain=>$email_domain, email=>$email_user, password=>$email_pass, quota=>$email_quota);

$result = $xmlapi->api2_query($account, "Email", "addpop", $call );

print_r($result);            //show the result of your query

Полный список функций электронной почты в API доступен здесь. https://documentation.cpanel.net/display/SDK/cPanel+API+2+-+Email

person RightClick    schedule 24.10.2014