我一直在尝试让php发送邮件超过一个月。我正在从000webhost移动到我朋友的服务器。
发送邮件的php代码是:
$subject = $u.", your infomation";
$message = "Your password is ".$p;
$from = "me@gmail.com";
$headers = "From:" . $from;
if(mail($e,$subject,$message,$headers))
$_SESSI ON['message']="message sent";
else $_SESSION['message']="error";
php.ini中的sendmail路径是“/ 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
和mail.log:
Jun 9 22:05:07 inspiron-1000 sendmail[24552]: r5A357t5024552: from=www-data, size=144, class=0, nrcpts=1, msgid=<201306100305.r5A357t5024552@inspiron-1000.>, relay=www-data@localhost
Jun 9 22:05:07 inspiron-1000 sm-mta[24553]: r5A357A8024553: from=<www-data@inspiron-1000>, size=367, class=0, nrcpts=1, msgid=<201306100305.r5A357t5024552@inspiron-1000.>, proto=ESMTP, daemon=MTA-v4, relay=ip6-localhost [127.0.0.1]
Jun 9 22:05:08 inspiron-1000 sendmail[24552]: r5A357t5024552: to=user@gmail.com, 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)
这是mailq: MSP队列状态......
/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 <www-data@inspiron-1000>
<user@gmail.com>
r5M3HicX023780* 19 Fri Jun 21 22:17 <www-data@inspiron-1000>
<user@gmail.com>
r5M3BSDF023465 19 Fri Jun 21 22:11 <www-data@inspiron-1000>
(Deferred: Connection timed out with alt4.gmail-smtp-in.l.goo)
<user@gmail.com>
r5M36Tjx023175 19 Fri Jun 21 22:06 <www-data@inspiron-1000>
(Deferred: Connection timed out with alt4.gmail-smtp-in.l.goo)
<user@gmail.com>
r5M33YQf023137* 19 Fri Jun 21 22:03 <www-data@inspiron-1000>
(Deferred: Connection timed out with alt4.gmail-smtp-in.l.goo)
<user@gmail.com>
Total requests: 5
答案 0 :(得分:0)
这不是来自mail.log的所有信息。您看到本地服务器确实接受了您的电子邮件,但它没有提及尝试将该电子邮件发送给GMail。您可以从命令行检查排队等待$ mailq
传递的邮件。有可能在该日志文件中还有更多行,但有更多信息。
答案 1 :(得分:0)
这就是我修复它的方法: 安装phpmailer。
这是一个教程how to send mail with PHP mailer
这是我的代码:
<?php
require 'PHPMailer-master/class.phpmailer.php';
function sendmail($to,$subject, $body)
{
return sendmailfrom($to,"myemail@gmail.com","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 = 'myemail@gmail.com';//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;
}
?>
如果我想发送邮件,请通过include("filename.php")
添加此代码,然后运行sendmail($to,$subject, $body);