Jump to:

17452 Posts in 4473 Topics by 1971 members

Archive

SilverStripe Forums » Archive » Having trouble using the Email class

Our old forums are still available as a read-only archive.

Moderators: martimiz, Sean, biapar, Willr, Ingo, simon_w

Page: 1
Go to End
Author Topic: 2790 Views
  • spullen
    Avatar
    14 Posts

    Having trouble using the Email class Link to this post

    Hello, I am trying to create a custom form and send the information in an email using the email class.

    $body = "<p>You've received a contact us submission from the website</p>";
          $body .= "<p>Name: {$data['Name']}<br />";
          $body .= "Title: {$data['Title']}<br />";
          $body .= "Company: {$data['Company']}<br />";
          $body .= "Phone: {$data['Phones']}<br />";
          $body .= "Fax: {$data['Fax']}<br />";
          $body .= "Email: {$data['Email']}<br />";
          $body .= "Phone: {$data['Phone']}<br />";
          $body .= "Comments: {$data['Comments']}<br />";
          $body .= "Product 1: {$products[$data['Product1']]}<br />";
          $body .= "Product 2: {$products[$data['Product2']]}<br /><br />";
          
          
          //print 'email: '.Email::getAdminEmail().'<br><br>';
          $email = new Email('no-reply@marketingmessages.com', Email::getAdminEmail(), 'Website Contact Submission', $body);
          
          $email->sendPlain();

    That is the code I have and when I run the page I get the following errors.
    FATAL ERROR: None of these templates can be found: GenericEmail.ss
    At line 53 in C:\wamp\www\marketing_messages\sapphire\core\SSViewer.php

    user_error(None of these templates can be found: GenericEmail.ss,512)
    user_error at line 53 of SSViewer.php

    SSViewer->__construct(GenericEmail)
    __construct at line 148 of Email.php

    Email->parseVariables()
    parseVariables at line 101 of Email.php

    Email->debug()
    debug at line 117 of ContactUs.php

    I don't know if I am using the email class correctly. Thank you in advance for any help.

  • elijahlofgren
    Avatar
    Google Summer of Code Hacker
    222 Posts

    Re: Having trouble using the Email class Link to this post

    Hi spullen,

    I ran into that same problem when trying to fix this bug: Errors when Importing Recipients to Newsletter Mailing List

    I added the attached GenericEmail.ss file to sapphire/templates/email/ in order to fix that problem.

    I appleid the fix on the gsoc branch so future versions of SilverStripe it should not have this problem:
    ------------------------------------------------------------------------
    r38503 | elofgren | 2007-07-11 23:20:12 -0500 (Wed, 11 Jul 2007) | 1 line

    BUGFIX: Add missing 'GenericEmail.ss' template which is used in RecipientImportField::notifyChanges() as part of fix for bug 'Errors when Importing Recipients to Newsletter Mailing List' Reported here: http://www.silverstripe.com/bugs/flat/1470
    ------------------------------------------------------------------------

    You may want to add GenericEmail.ss mysite/templates/email so that if you make any changes, they will not be overwritten when you upgrade.

    Hope this helps,

    Elijah Lofgren

  • spullen
    Avatar
    14 Posts

    Re: Having trouble using the Email class Link to this post

    Thank you for your reply. My question now is am I using the email class correctly to send the email? I generated the body and did a print on it and that was fine. Now am I called the new Email correctly? and did I use $email->sendPlain() correctly to send a plain text email? Thank you for the GenericEmail.ss download I am sure this had something to do with it, I will try it now.

  • elijahlofgren
    Avatar
    Google Summer of Code Hacker
    222 Posts

    Re: Having trouble using the Email class Link to this post

    Hi spullen,

    > Thank you for your reply. My question now is am I using the email class correctly to send the email? I generated the body and did a print on it and that was fine. Now am I called the new Email correctly? and did I use $email->sendPlain() correctly to send a plain text email? Thank you for the GenericEmail.ss download I am sure this had something to do with it, I will try it now.

    You're welcome. I just tested your code and it works fine here. You'll want to delete the unneeded HTML code from GenericEmail.ss since you are not sending an HTML email.

    Have a great day,

    Elijah

  • spullen
    Avatar
    14 Posts

    Re: Having trouble using the Email class Link to this post

    I figured out what our problem was here on our end. We are in a shared hosting environment which means that the sendmail would not work correctly. No mail would get sent out by PHP. So, if you want to set SilverStripe up in a shared hosting environment I would recommend using the PHP Mailer Class. This can be found here:

    http://phpmailer.sourceforge.net/

    This is a class that uses SMTP to send the email instead of the sendmail.

    In order to get this working all I did was pull down the zip for the library, unzip it and stick it in the mysite/code folder. Then I used the following code on the page I wanted to send the email on, which in my case was mysite/code/ContactUs.php(altered slightly of course) which can be found on the front page of the website above to send the email.

    require("phpmailer/class.phpmailer.php");

    $mail = new PHPMailer();

    $mail->IsSMTP(); // send via SMTP
    $mail->Host = "smtp1.site.com;smtp2.site.com"; // SMTP servers
    $mail->SMTPAuth = true; // turn on SMTP authentication
    $mail->Username = "jswan"; // SMTP username
    $mail->Password = "secret"; // SMTP password

    $mail->From = "from@email.com";
    $mail->FromName = "Mailer";
    $mail->AddAddress("josh@site.com","Josh Adams");
    $mail->AddAddress("ellen@site.com"); // optional name
    $mail->AddReplyTo("info@site.com","Information");

    $mail->WordWrap = 50; // set word wrap
    $mail->AddAttachment("/var/tmp/file.tar.gz"); // attachment
    $mail->AddAttachment("/tmp/image.jpg", "new.jpg");
    $mail->IsHTML(true); // send as HTML

    $mail->Subject = "Here is the subject";
    $mail->Body = "This is the <b>HTML body</b>";
    $mail->AltBody = "This is the text-only body";

    if(!$mail->Send())
    {
    echo "Message was not sent <p>";
    echo "Mailer Error: " . $mail->ErrorInfo;
    exit;
    }

    echo "Message has been sent";

    This was the only work around I could find to manually send an email in a shared hosting environment with SilverStripe.

    2790 Views
Page: 1
Go to Top

Want to know more about the company that brought you SilverStripe? Then check out SilverStripe.com

Comments on this website? Please give feedback.