In some cases you might need to redirect a given mailbox to a PHP script to handle the incoming messages. This can be easily done with cPanel -> Forwarders tool.
To set up pipe forwarding, you can follow the steps below:
- Log in to your cPanel;
- Click on the Forwarders icon, under the Mail section;
- Click on the Add Forwarder button;
- Fill in Address to Forward and put the mail address you would like to pipe the messages from.
- Click on the Advanced options link and select Pipe to a Program. Then fill in the full path to the script which will handle the messages. Bear in mind that the path is relative to your home directory, so if you create a script/file called pipescript.php placed inside your home/ folder you should fill in only pipescript.php inside the Pipe to a Program field. If the script is situated inside the public_html/ folder you should fill in public_html/pipescript.php
There are several important things you should check regarding the PHP script which is handling the email messages:
- Ensure the very first line of the script is a hashbang (also called shebang). This is a special line which identifies the file as a PHP script. In most cases it should look like this:
#!/usr/bin/php -q
- Make sure that there are no whitespaces or blank lines before the above line as this will be sent to the mail server, which will result in a bounced message. The –q option instructs PHP not to print its version either, since this will also result in a bounced message.
- Make sure that the script permissions are set correctly. In most cases, you would simply need to change the permissions, either via your cPanel -> File Manager or through an FTP client and set them to 755. This will make the script executable.
Below you can find a sample PHP script which handles piped messages. The script will read the input from the STDIN and then save the full message into a file called pipemail.txt (make sure you provide the full path to the pipemail.txt file).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#!/usr/bin/php -q
<?php
/* Read the message from STDIN */
$fd=fopen("php://stdin","r");
$email="";// This will be the variable holding the data.
while(!feof($fd)){
$email.=fread($fd,1024);
}
fclose($fd);
/* Saves the data into a file */
$fdw=fopen("/home/user/pipemail.txt","w+");
fwrite($fdw,$email);
fclose($fdw);
/* Script End */
?>
|
where the user from the /home/user/pipemail.txt line is your cPanel username.
If you experience troubles piping the email messages you can contact the SiteGround Technical Support team through the Help desk and they will be glad to assist you.
Setting up your email is easy when you have the right host by your side. If you need a reliable partner to help you resolve email issues and provide expert support, check out our email hosting services.