0

I was trying to mail contact from my website to my hotmail account, but it doesn't seem to come through, it doesn't appear even in junk mail, I'll post my code here maybe someone knows how to tweak it so it (at least) comes into my junk mail.

I also don't wan't to use any php mailer services or similar things, so please don't suggest them.

EDIT: Working code (with usage of phpMailer)

    <?php
require_once('phpmailer/class.phpmailer.php');
define('GUSER', 'youtGmail@gmail.com); // GMail username
define('GPWD', 'gmailPassword'); // GMail password

    function smtpmailer($to, $from, $from_name, $subject, $body) { 
        global $error;
        $mail = new PHPMailer();  // create a new object
        $mail->IsSMTP(); // enable SMTP
        $mail->SMTPDebug = 0;  // debugging: 1 = errors and messages, 2 = messages only
        $mail->SMTPAuth = true;  // authentication enabled
        $mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for GMail
        $mail->Host = 'smtp.gmail.com';
        $mail->Port = 465; 
        $mail->Username = GUSER;  
        $mail->Password = GPWD;           
        $mail->SetFrom($from, $from_name);
        $mail->Subject = $subject;
        $mail->Body = $body;
        $mail->AddAddress($to);
            if(!$mail->Send()) {
                $error = 'Mail error: '.$mail->ErrorInfo; 
                return false;
            } else {
                $error = 'Message sent!';
                return true;
            }
    }

if(isset($_POST['submit'])) {


    if(trim($_POST['contactname']) == '') {
        $hasError = true;
    } else {
        $name = trim($_POST['contactname']);
    }


    if(trim($_POST['subject']) == '') {
        $hasError = true;
    } else {
        $subject = trim($_POST['subject']);
    }


    if(trim($_POST['email']) == '')  {
        $hasError = true;
    } else if (!eregi("^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}$", trim($_POST['email']))) {
        $hasError = true;
    } else {
        $email = trim($_POST['email']);
    }


    if(trim($_POST['message']) == '') {
        $hasError = true;
    } else {
        if(function_exists('stripslashes')) {
            $comments = stripslashes(trim($_POST['message']));
        } else {
            $comments = trim($_POST['message']);
        }
    }


    if(!isset($hasError)) {

     $emailTo = 'your@email.com';
     smtpmailer($emailTo, $email, 'Company', $name, $subject, $comments);
     $emailSent = true;

    }
}
?>

EDIT: I was suggested to use SMTP for this, but I am not sure how to achieve it.

Ilja
  • 44,142
  • 92
  • 275
  • 498

2 Answers2

0

What domain are you sending the email from? A trusted .com or is it one that email servers may recognize as spam? Domains like these are usually free ones.

If not, I would check you php.ini file to make sure it is properly configured.

Community
  • 1
  • 1
Oliver Spryn
  • 16,871
  • 33
  • 101
  • 195
  • hi, Im sending e-mails from .lv domain, which is official Latvian domain, so that shouldn't be a problem. – Ilja Aug 18 '12 at 18:39
0

There are several things you can try to improve email reception. You could try setting your X-mailer headers, using domain keys, and if all else fails, just send you mail from a google smtp account. I would highly recommend using the google smtp account + something like php mailer. I haven't had any problems with that solution.

Here's a tutorial on how to use gmail+phpmailer to send mail via smtp:

http://www.web-development-blog.com/archives/send-e-mail-messages-via-smtp-with-phpmailer-and-gmail/

user1477388
  • 20,790
  • 32
  • 144
  • 264
  • could you explain in more depth or give reference that would explain usage of google smtp acc? (ok can see it now ;)) – Ilja Aug 20 '12 at 17:33
  • Please see the link I posted in my most recent edit. Thanks. – user1477388 Aug 20 '12 at 17:33
  • Hi it worked ;))) just one more question, when I receive a message it says that it comes from "Root User" any chance that you know how to change it to name of my company which is "Bryuvers" ? P.S I will award the bounty as soon as stackowerflow allows me – Ilja Aug 21 '12 at 13:26
  • Are you setting the variable `$from_name` in `$mail->SetFrom($from, $from_name);`? – user1477388 Aug 21 '12 at 13:28
  • You could also try this: `$mailer->FromName = 'Your Name'; $mailer->From = 'You@yourdomain.com';` – user1477388 Aug 21 '12 at 13:34
  • forgot to tell you, I fixed it ;)) Just waiting till I am able to award bounty ;))) – Ilja Aug 21 '12 at 14:06
  • Also, feel free to post your working code in case some one else finds this, it may also help them. – user1477388 Aug 21 '12 at 14:08