问题描述:

I have been trying get php to send mail for over a month. I am moving from 000webhost, where it worked fine, to my friend's server.

The php code that sends mail is:

$subject = $u.", your infomation";

$message = "Your password is ".$p;

$from = "[email protected]";

$headers = "From:" . $from;

if(mail($e,$subject,$message,$headers))

$_SESSI ON['message']="message sent";

else $_SESSION['message']="error";


the sendmail path in php.ini is "/usr/sbin/sendmail -t -i"


etc/hosts:

000.000.000.000 inspiron-1000 inspiron-1000.

::1 ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters


and the mail.log:

Jun 9 22:05:07 inspiron-1000 sendmail[24552]: r5A357t5024552: from=www-data, size=144, class=0, nrcpts=1, msgid=<[email protected]>, [email protected]

Jun 9 22:05:07 inspiron-1000 sm-mta[24553]: r5A357A8024553: from=<[email protected]>, size=367, class=0, nrcpts=1, msgid=<[email protected]>, proto=ESMTP, daemon=MTA-v4, relay=ip6-localhost [127.0.0.1]

Jun 9 22:05:08 inspiron-1000 sendmail[24552]: r5A357t5024552: [email protected], ctladdr=www-data (33/33), delay=00:00:01, xdelay=00:00:01, mailer=relay, pri=30144, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (r5A357A8024553 Message accepted for delivery)


this is mailq:

MSP Queue status...

/var/spool/mqueue-client is empty

Total requests: 0

MTA Queue status...

/var/spool/mqueue (5 requests)

-----Q-ID----- --Size-- -----Q-Time----- ------------Sender/Recipient-----------

r5M3LmZV023863* 19 Fri Jun 21 22:21 <[email protected]>

<[email protected]>

r5M3HicX023780* 19 Fri Jun 21 22:17 <[email protected]>

<[email protected]>

r5M3BSDF023465 19 Fri Jun 21 22:11 <[email protected]>

(Deferred: Connection timed out with alt4.gmail-smtp-in.l.goo)

<[email protected]>

r5M36Tjx023175 19 Fri Jun 21 22:06 <[email protected]>

(Deferred: Connection timed out with alt4.gmail-smtp-in.l.goo)

<[email protected]>

r5M33YQf023137* 19 Fri Jun 21 22:03 <[email protected]>

(Deferred: Connection timed out with alt4.gmail-smtp-in.l.goo)

<[email protected]>

Total requests: 5

网友答案:

That isn't all of the information from mail.log. You're seeing that the local server did accept your email, but it doesn't mention trying to send that email off to GMail. You could check the mail that is queued for delivery with $ mailq from the commandline. Chances are there are a few more lines in that log file with more information though.

网友答案:

This is how I fixed it: Install phpmailer.

Here is a tutorial how to send mail with PHP mailer

Here is my code:

<?php
require 'PHPMailer-master/class.phpmailer.php';

function sendmail($to,$subject, $body) 
{ 
    return sendmailfrom($to,"[email protected]","from me", $subject, $body);
}
function sendmailfrom($to, $from, $from_name, $subject, $body) 
{
    $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';//required for gmail
    $mail->Port = 465; 
    $mail->Username = '[email protected]';//the email I want to send from  
    $mail->Password = 'mypassword';  //my password         
    $mail->SetFrom($from, $from_name);
    $mail->Subject = $subject;
    $mail->Body = $body;
    $mail->AddAddress($to);
    if(!$mail->Send()) return false;
    else return true;
}
?>

When ever I want to send mail I include this code, via include("filename.php"), and run sendmail($to,$subject, $body);

相关阅读:
Top