我正在尝试使用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"a=$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>
提前谢谢你:)
安德鲁
答案 0 :(得分:4)
有一个用于cpanel的xml api,以及一些用于发出请求的php类。许多人的服务器配置会导致fopen出现问题,但xmlapi.php文件可以在许多不同的Web主机上运行。
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
答案 1 :(得分:3)
我认为这就是你要找的东西:
$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"a=$equota
HTTP/1.0\r\nAuthorization: Basic $authstr \r\n";
fputs($socket,$in);
fclose( $socket );