我尝试通过我的localhost php发送电子邮件,但问题是我的电子邮件中没有收到任何内容,我应该配置什么?
这是我的代码
$to="someone@gmail.com";
$name="jason";
$subject="test message";
$header="From: $name";
$message="blah blah blah";
$sentmail=mail($to,$subject,$message,$header);
echo $sentmail ? "email send" : "email send fail"?
结果是“发送电子邮件”
答案 0 :(得分:4)
有2个理由不从您的localhost发送电子邮件..
因此,您必须配置邮件服务器,但我认为这不是一个方便的解决方案。
最好尝试使用SMTP服务。要做到这一点,最好使用PHPMailer。
以下是使用PHPMailer类的示例。
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->CharSet = 'UTF-8';
$mail->Host = "mail.example.com"; // SMTP server example
$mail->SMTPDebug = 0; // enables SMTP debug information (for testing)
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Port = 25; // set the SMTP port for the GMAIL server
$mail->Username = "username"; // SMTP account username example
$mail->Password = "password";
您可以将此类用于任何类型的电子邮件,以替代PHP : mail()。
答案 1 :(得分:2)
邮件功能将在邮件成功接受传递时返回TRUE,否则返回FALSE。
邮件功能不会检查收件箱中是否有邮件到达
http://php.net/manual/en/function.mail.php
无法检查邮件是否已发送,您可以检查收件人是否使用跟踪像素https://support.google.com/dfp_premium/answer/1347585?hl=en打开邮件
答案 2 :(得分:0)
您应该在本地计算机中集成邮件服务器以发送邮件。如果所有参数都正确,则php邮件函数返回true,它不会检查传递状态。
阅读本文,http://www.zenddeveloper.com/how-to-send-emails-from-localhost-apachephp-server/ 和http://roshanbh.com.np/2007/12/sending-e-mail-from-localhost-in-php-in-windows-environment.html
答案 3 :(得分:0)
您需要有一个邮件服务器才能在localhost.Check PHP : send mail in localhost
中发送电子邮件答案 4 :(得分:0)
您需要在标头上添加内容类型。为了使它更容易,您可以编写简单的函数然后调用它。这是一个例子:
function sendMail($to, $title, $url, $from, $username, $password) {
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: '.$title.' <'.$from.'>' . "\r\n";
$subject = 'Welcome to '.$title;
$message = 'Thank you for joining <strong>'.$title.'</strong><br /><br />Your username: <strong>'.$username.'</strong><br />Your Password: <strong>'.$password.'</strong><br /><br />You can log-in at: <a href="'.$url.'" target="_blank">'.$title.'</a>';
return @mail($to, $subject, $message, $headers);
}
答案 5 :(得分:0)
默认情况下,PHP的mail()
函数会将邮件发送到Linux上的sendmail
程序。
要使sendmail正常工作,您需要具有正确配置且正常运行的MTA。例如,postfix是一个相对容易配置的MTA。
配置MTA时,您可以将其配置为直接发送邮件,将其作为Internet上的邮件服务器进行配置,或将邮件中继到其他服务器。
配置您自己的MTA直接发送邮件不是为了轻松。发送电子邮件现在变得很复杂,需要大量的工作才能让您的邮件被gmail或yahoo等主要邮件服务器接受。
如果您的ISP提供外发邮件服务器并且很乐意为您转发邮件,您可以设置postfix来通过该服务器中继所有邮件,并节省一些配置麻烦。如果您使用postfix,这只需要像后缀配置中的Postfix on a null client下的示例一样进行设置。
要记住的主要事情是,无论您如何配置邮件服务器,都应避免将其设置为在传出网络上中继传入邮件(即将其设置为开放中继)。在空邮件程序示例配置中,行inet_interfaces = loopback-only
实现了此目的。
请注意,将postfix或其他内容设置为MTA的替代方法是使用PHP自己的内置SMTP支持,这实际上意味着您将PHP本身用作仅将邮件转发到中继的MTA。
使用像postfix这样的专用MTA的优点是可靠性。如果到达外部邮件中继存在临时问题,Postfix可以对电子邮件进行排队。它也会在邮件排队后立即返回,因此您的PHP邮件功能将更快地执行,并且在将邮件传递到外部邮件中继时无需等待。