cPanel Email Forwarder Creator

This sections will contains code regarding different PHP & MySQL features and contains help about php/mysql issues.

cPanel Email Forwarder Creator

Postby MT Shahzad on March 18th, 2008, 9:49 am

Create email forwarders on cPanel based hosting. No need to login to cPanel. Provide cPanel login and password once, and use this script each time you need to create email forwarder.

Can be run in either way:
- Parameters passed via URL (see example below)
- If no parameters passed via URL then will show email forwarder parameters entry form

Usage:
* Update script with your cPanel login, password, skin (once)
* When running script to create email forwarder, provide following data:
o Username - create email forwarder for this username(sample: john)
o Domain - create email forwarder for this domain (sample: mysite.com)
o Redirect to - forward emails to address (sample: jimm@site2.com)

Sample parameters passing via url:
cpanel_email_forwarder.php?euser=john&edomain=site1.com&eforward=johny@site2.com

cPanel Skin:
Try following steps if you do not know what your current cPanel theme is.
* Login to your cPanel account
* Look at the URL in your browser. It would look somewhat similar to http://www.domain.com:2082/frontend/x/index.html
* cPanel theme name is everything after the "/frontend/", and before the next slash "/". In above example cPanel theme is "x". It could be "x2", "rvblue", etc.

Code: Select all
<?php

###############################################################
#
# Can be used in 3 ways.
#
# 1) Sample run from browser:
# cpanel_email_forwarder.php?euser=john&edomain=site1.com&eforward=johny@site2.com
#
# 2) When run from browser without parameters will show entry form
#
# 3) Sample run from you script (by including):
# $REQUEST['euser'] = 'john';
# $REQUEST['edomain'] = 'site1.com';
# $REQUEST['eforward'] = 'johny@site2.com';
# include("cpanel_email_forwarder.php");
#
###############################################################

////////////////////////////////////////////////////////////////
/////////////////////// SETTINGS START  ////////////////////////
////////////////////////////////////////////////////////////////

// cpanel user (the one you login to cpanel)
define('CPANELUSER','cpanel-username-here');

// cpanel password (the one you login to cpanel)
define('CPANELPASS','cpanel-password-here');

// your cpanel domain (localhost, or domain name)
define('CPANELDOMAIN','localhost');

// cPanel skin (usually "x")
define('CPANEL_SKIN','x');

// Allow multiple forwarders for the same email?
// true - allow, false - disallow
define('ALLOW_MULTIPLE', false);

////////////////////////////////////////////////////////////////
/////////////////////// END OF SETTINGS ////////////////////////
////////////////////////////////////////////////////////////////

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

$cpuser = CPANELUSER;
$cppass = CPANELPASS;
$cpdomain = CPANELDOMAIN;
$cpskin = CPANEL_SKIN;

$euser=getVar('euser');
$edomain=getVar('edomain');
$eforward = getVar('eforward');

if (empty($euser) || empty($edomain) || empty($eforward)) {
  echo "All fields are required to create email forwarding:<br>
<form method='post'>
  Username:<input name='euser' value='$euser'> (sample: john)<br>
  Domain:<input name='edomain' value='$edomain'> (sample: mysite.com)<br>
  Redirect to:<input name='eforward' value='$eforward'> (sample: jimm@site2.com)<br>
  <input type='submit' value='Create forwarder' style='border:1px solid black'>
</form>";
  die();
}

if (!ALLOW_MULTIPLE) {
  // get list of existing forwarders for this email
  $forwarders = array();
  preg_match_all('/\?email=' . $euser. '@' . $edomain . '=([^"]*)/', file_get_contents("http://$cpuser:$cppass@$cpdomain:2082/frontend/$cpskin/mail/fwds.html"), $forwarders);

  if (count($forwarders[1]) > 0) {
    die("Email forwarder for this account already exists.");
  }
} // ALLOW_MULTIPLE

// Create email forwarder
$f = fopen
("http://$cpuser:$cppass@$cpdomain:2082/frontend/$cpskin/mail/doaddfwd.html?email=$euser&domain=$edomain&forward=$eforward",
"r");
if (!$f) {
  die('Cannot create forwarding. Possible reasons: "fopen" function disallowed on your server, or PHP is running in SAFE mode');
}

$text = "";

// Check result
while (!feof ($f)) {
  $text = $text . fgets ($f, 1024);;
}
fclose($f);

if (ereg ("failure", $text, $out) || !strpos($text,"redirected")) {
  die('Cannot create email forwarding.' . $text);
}

echo "Email Forwarder created: $euser@$edomain =&gt; $eforward";

?>
MT Shahzad
Web/Software Developer
http://mts.sw3solutions.com
User avatar
MT Shahzad
Site Admin
 
Posts: 300
Joined: February 29th, 2008, 8:11 am
Location: Muridke, Pakistan

Return to PHP / MySQL / XML

Who is online

Users browsing this forum: No registered users and 0 guests