Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

PHP Build a Simple PHP Application Wrapping Up The Project Sending The Contact Form Email

Theo Goedert
Theo Goedert
174 Points

Getting error phpmailer

So i tried the course on my server. And when i use the contact form i keep getting this message: There was a problem sending the email: The following From address failed: real@adress.com

I thought maybe i didn't follow up the course properly so i decided to try with the download package, and i get the same problem, strange.

I wonder if there is an issue with the form part of course or if its related to my own server?

6 Answers

xprofessor white
xprofessor white
4,777 Points

can i see some code? what software are you running?

Theo Goedert
Theo Goedert
174 Points

Hi, this is the entire contact form code exactly as it is on the course:

<?php 

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $name = trim($_POST["name"]);
    $email = trim($_POST["email"]);
    $message = trim($_POST["message"]);


    if ($name == "" OR $email == "" OR $message == "") {
        echo "You must specify a value for name, email address, and message.";
        exit;
    }

    foreach( $_POST as $value ){
        if( stripos($value,'Content-Type:') !== FALSE ){
            echo "There was a problem with the information you entered.";    
            exit;
        }
    }

    if ($_POST["address"] != "") {
        echo "Your form submission has an error.";
        exit;
    }

    require_once("inc/phpmailer/class.phpmailer.php");
    $mail = new PHPMailer();

    if (!$mail->ValidateAddress($email)){
        echo "You must specify a valid email address.";
        exit;
    }

    $email_body = "";
    $email_body = $email_body . "Name: " . $name . "<br>";
    $email_body = $email_body . "Email: " . $email . "<br>";
    $email_body = $email_body . "Message: " . $message;

    $mail->SetFrom($email, $name);
    $address = "orders@shirts4mike.com";
    $mail->AddAddress($address, "Shirts 4 Mike");
    $mail->Subject    = "Shirts 4 Mike Contact Form Submission | " . $name;
    $mail->MsgHTML($email_body);

    if(!$mail->Send()) {
      echo "There was a problem sending the email: " . $mail->ErrorInfo;
      exit;
    }

    header("Location: contact.php?status=thanks");
    exit;
}
?>
    <div class="section page">
        <div class="wrapper">
            <h1>Contact</h1>
            <?php if (isset($_GET["status"]) AND $_GET["status"] == "thanks") { ?>
                <p>Thanks for the email! I&rsquo;ll be in touch shortly!</p>
            <?php } else { ?>

                <form method="post" action="contact.php">

                    <table>
                        <tr>
                            <th>
                                <label for="name">Name</label>
                            </th>
                            <td>
                                <input type="text" name="name" id="name">
                            </td>
                        </tr>
                        <tr>
                            <th>
                                <label for="email">Email</label>
                            </th>
                            <td>
                                <input type="text" name="email" id="email">
                            </td>
                        </tr>
                        <tr>
                            <th>
                                <label for="message">Message</label>
                            </th>
                            <td>
                                <textarea name="message" id="message"></textarea>
                            </td>
                        </tr> 
                        <tr style="display: none;">
                            <th>
                                <label for="address">Address</label>
                            </th>
                            <td>
                                <input type="text" name="address" id="address">
                                <p>Humans (and frogs): please leave this field blank.</p>
                            </td>
                        </tr>                   
                    </table>
                    <input type="submit" value="Send">
                </form>
            <?php } ?>
        </div>
    </div>

This is the part that i guess i making troubles

   if(!$mail->Send()) {
      echo "There was a problem sending the email: " . $mail->ErrorInfo;
      exit;
    }
xprofessor white
xprofessor white
4,777 Points

your server software? and your operating system type? did you check if you got it in junk mail?

Theo Goedert
Theo Goedert
174 Points

Sorry i forget to add something to the previous code, and try the form again without the extra php lines it and it works fine. The issue happens when i add the smtp server, maybe i'm not doing it properly. I added the class.smtp.php to the inc folder following this article http://blog.teamtreehouse.com/sending-email-with-phpmailer-and-smtp . Is at that moment that i get the: "The following From address failed: real@adress.com ".

 require_once("inc/phpmailer/class.phpmailer.php");
    $mail = new PHPMailer();
    $mail->IsSMTP();
    $mail->SMTPAuth   = true; 
    $mail->SMTPSecure = "tls"; 
    $mail->Host       = "email-smtp.us-west-2.amazonaws.com";
    $mail->Username   = "0x0x0x0x0x0x0x";
    $mail->Password   = "0x0x0x0x0x0x0x0x0x0x";

    if (!$mail->ValidateAddress($email)){
        echo "You must specify a valid email address.";
        exit;
    }

    $email_body = "";
    $email_body = $email_body . "Name: " . $name . "<br>";
    $email_body = $email_body . "Email: " . $email . "<br>";
    $email_body = $email_body . "Message: " . $message; 

    $mail->SetFrom($email, $name);
    $address = "reak@adress.com";
    $mail->AddAddress($address, "Shirts 4 Mike");
    $mail->Subject    = "Shirts 4 Mike Contact Form Submission | " . $name;
    $mail->MsgHTML($email_body);

I'm probably adding the smtp the wrong way.

Theo Goedert
Theo Goedert
174 Points

Hi Caleb, yep all good thanks for the help, i'll keep on looking why the smtp implementation cause trouble.

Cheers.