Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

All other Modules /

Discuss all other Modules here.

Moderators: martimiz, Sean, Ed, biapar, Willr, Ingo, swaiba

send() failing without errors on shared hosting

Go to End

9 Posts   2913 Views


Community Member, 26 Posts

10 March 2010 at 5:39am

I'm failing to understand why my Silverstripe installation on shared hosting refuses to send emails, either from a custom function like this...

class ContactPage extends Page
	static $db = array(
		'Mailto' => 'Varchar(100)', //Email address to send submissions to
		'SubmitText' => 'HTMLText' //Text presented after submitting message
	//CMS fields
	function getCMSFields() {
		$fields = parent::getCMSFields();
		$fields->addFieldToTab("Root.Content.OnSubmission", new TextField('Mailto', 'Email submissions to'));	
		$fields->addFieldToTab("Root.Content.OnSubmission", new HTMLEditorField('SubmitText', 'Text on Submission'));	
		return $fields;	

class ContactPage_Controller extends Page_Controller
	function ContactForm() {
      	// Create fields
	$Params = Director::urlParams();
	    $fields = new FieldSet(
		    new TextField('Name', 'Name*'),
			new EmailField('Email', 'Email*'),
			new TextareaField('Comments','Comments*')
	    // Create action
	    $actions = new FieldSet(
	    	new FormAction('SendContactForm', 'Send')
		// Create action
		$validator = new RequiredFields('Name', 'Email', 'Comments');

	    return new Form($this, 'ContactForm', $fields, $actions, $validator);
	function SendContactForm($data) {
	 	//Set data
		$From = $data['Email'];
		$To = $this->Mailto;
		$Subject = "Website Contact message";  	  
		$email = new Email($From, $To, $Subject);
		//set template
		//populate template
		//send mail
	  	//return to submitted message
		Director::redirect(Director::baseURL(). $this->URLSegment . "/?success=1");

	public function Success()
		return isset($_REQUEST['success']) && $_REQUEST['success'] == "1";

...or from a page created with the UserDefinedForm module. There are no errors logged and no errors displayed on the page--everything seems to check out, except that somewhere between the page and Email.php, the mail function just doesn't seem to work. I'm running PHP Version 5.2.13, with a configuration that works just fine when I write, outside of Silverstripe...
$email = $_POST['email'] ;
$message = $_POST['message'] ;
mail( "", "Email Subject", $message, "From: $email" );
print "Email sent";

2+ years ago, someone recommended installing phpmailer to work around Silverstripe's native mail functioning. Is this STILL the best way to send emails from Silverstripe on a shared host???


Community Member, 26 Posts

10 March 2010 at 8:42am

In case anyone else is having the same problem, here's relevant code that's a little closer(?) to the problem:

	if(!($result = @mail($to, $subject, $fullBody, $headers, "-f$bounceAddress"))) {
		$result = mail($to, $subject, $fullBody, $headers);

Sample message (raw) with variable names noted for clarity         //$to
Sample Subject         //$subject
This is a multi-part message in MIME format.         //$fullBody

Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable

I just really wanted to email you and say hi.

Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "">
=09<base href=3D"" />

<p class=3D"body">
=09I just really wanted to email you and say hi.



MIME-Version: 1.0         //$headers
Content-Type: multipart/alternative; boundary="----=_NextPart_159628161319"
Content-Transfer-Encoding: 7bit
X-Mailer: SilverStripe Mailer - version 2006.06.21 (Sent from "")
X-Priority: 3
X-SilverStripeSite: mysite

Ideas? Anyone?


Community Member, 26 Posts

11 March 2010 at 11:21am

After much futzing around in the guts of Mailer.php and Email.php, I decided to change the recipient of my contact page emails to an address on my host, so that instead my script would try to send emails to instead of Emails which were subsequently attempted were generated and received, but I have no idea why.
Can anyone illuminate me?


Community Member, 323 Posts

12 March 2010 at 2:17am

Hi! I cannot enlighten you, since I had the same problem several months ago. I didn’t remembered what I did then, so I didn’t replied to your post. Now I remember! I’m going to check the wiki and try to write a line about this somewhere.

Best regards,


Community Member, 26 Posts

12 March 2010 at 3:38am

That's great. Could you let me know?


Community Member, 323 Posts

12 March 2010 at 4:14am

There’s nothing more to know: I seem to remember that as soon as I changed the address to one of the same domain, all started to work. I’m really sorry, but I can’t recall nothing else. I’ve checked my custom code for UserDefinedForm and the lines related to send() are not modified.


Community Member, 26 Posts

12 March 2010 at 4:29am

Understood. Thanks.


Forum Moderator, 4102 Posts

12 March 2010 at 4:38am

You need to talk to your hosting provider. This happens all the time if your mail is hosted on a different server. The mailer looks at the destination domain and says, "oh, that's me.. I don't need to do anything".. so I never goes out to the internet to send the mail.

There's a setting somewhere in Apache that they can tweak to force the mailer to always look outside of its own DNS to send mail...

Go to Top