邮件不发送在PHP?

时间:2016-01-20 04:34:39

标签: javascript php html

我已创建新页面与我们联系 我遇到这个错误遇到了麻烦。

  

警告:mail()[function.mail]:无法连接到mailserver        "本地主机"端口25,验证您的" SMTP"和" smtp_port"在php.ini中设置或       在第41行的contact_me.php中使用ini_set()

我的PHP文件是

<?php
// check if fields passed are empty

if(empty($_POST['fname'])   ||
   empty($_POST['lname'])       ||
   empty($_POST['phone'])       ||
   empty($_POST['email'])      ||
   empty($_POST['dateTime'])     ||
   empty($_POST['heading'])     ||
   empty($_POST['companyName'])     ||
   empty($_POST['address'])     ||
   empty($_POST['postalCode'])     ||
   empty($_POST['city'])     ||
   empty($_POST['country'])     ||
   empty($_POST['message'])     ||
   !filter_var($_POST['email'],FILTER_VALIDATE_EMAIL))
   {
    echo "No arguments Provided!";
    return false;
   }

$fname = $_POST['fname'];
$lname = $_POST['lname'];
$phone = $_POST['phone'];
$dateTime = $_POST['dateTime'];
$heading = $_POST['heading'];
$companyName = $_POST['companyName'];
$address = $_POST['address'];
$postalCode = $_POST['postalCode'];
$city = $_POST['city'];
$country = $_POST['country'];
$message = $_POST['message'];
$email_address = $_POST['email'];

// create email body and send it    
$to = 'ram@gmail.com'; // PUT YOUR EMAIL ADDRESS HERE
$email_subject = "Modern Business Contact Form:  $fname"; // EDIT THE EMAIL SUBJECT LINE HERE
$email_body = "You have received a new message from your website's contact form.\n\n"."Here are the details:\n\nFirst Name: $fname\n\nLast Name: $lname\n\nPhone: $phone\n\nContact Date Time:\n$dateTime\n\nHeading: $heading\n\nCompany Name: $companyName\n\nAddress: $address\n\nPostal Code: $postalCode\n\nCity: $city\n\nCountry: $country\n\nMessage: $message\n\nEmail ID: $email_address";
$headers = "From: rohitnewicvs@gmail.com\n";
$headers .= "Reply-To: $email_address"; 
mail($to,$email_subject,$email_body,$headers);
return true;            
?>

请告诉我什么是问题。

7 个答案:

答案 0 :(得分:2)

您需要在计算机上设置邮件服务器才能使邮件功能正常工作。如果您使用的是Windows(我猜您是使用WAMP),则可以设置Pegasus邮件服务器。

其他选项包括使用包装类(如SwiftMailerPHPMailer)并使用它们连接到另一个SMTP服务器,例如您的GMail帐户。

请参阅this Question它将解决您的问题。

答案 1 :(得分:0)

在进行某些配置之前,无法从本地PC发送电子邮件。我建议你将脚本上传到网络托管服务器(免费或付费)。我认为它会起作用。因为SMTP已在Web托管服务器中配置。

答案 2 :(得分:0)

我强烈建议您使用本网站提及的代码来帮助您从Gmail帐户发送:

http://phpmailer.worxware.com/?pg=examplebgmail

PHPMailer通常由PHP开发人员使用,具有许多功能并且还支持SSL / TLS

答案 3 :(得分:0)

可能是您正在使用wamp服务器或未定义SMTP设置的任何其他本地开发服务器,并且邮件功能需要SMTP才能工作。在PHP.ini中定义SMTP设置。您也可以使用GMAIL或任何其他邮件提供商SMTP设置。

如果您使用的是VPS,您可以使用GMAIL或任何其他邮件SMTP,也可以安装并运行您的OWN SMTP服务。 请点击此链接https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-postfix-as-a-send-only-smtp-server-on-ubuntu-14-04

考虑使用swift邮件程序,它在配置方面提供了更大的灵活性,您可以在脚本本身中设置SMTP设置

答案 4 :(得分:0)

PHP mail()命令不支持身份验证。你的选择:

  1. PHPMailer - Tutorial
  2. PEAR - Tutorial
  3. 自定义功能 - 请参阅备注部分中的各种解决方案:http://php.net/manual/en/ref.mail.php
  4. setup of smtp php.ini

答案 5 :(得分:0)

我认为您在本地计算机上使用,必须在php.ini中配置邮件功能 或者通过添加此代码来试用您的实时服务器,我希望这会对您有所帮助..

// To send HTML mail, the Content-type header must be set
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Additional headers
$headers .= 'To: Mary <nb158f@gmail.com>' . "\r\n";
$headers .= 'From: mysite.com <admin@site.com>' . "\r\n";
//$headers .= 'Cc: cc@gmail.com' . "\r\n";

// Mail it
$flag = mail($to, $subject, $message, $headers);

答案 6 :(得分:0)

修改php.ini文件以使用它(注释掉其他行):

[mail function]
; For Win32 only.
; SMTP = smtp.gmail.com
; smtp_port = 25

; For Win32 only.
; sendmail_from = <e-mail username>@gmail.com

; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
sendmail_path = "C:\xampp\sendmail\sendmail.exe -t"