2013-03-05 121 views
-1

我有一个利用PHP Mail()函数的HTML表单。我使用的SMTP服务器是localhost,不需要验证。PHP不会发送HTML邮件

<form action="../../Scripts/fused.php" method="POST"><p>Name</p> <input type="text" name="name"> 
<p>Email</p> <input type="text" name="email"> 
<p>Phone</p> <input type="text" name="phone"> 

<p>Request Phone Call:</p> 
Yes:<input type="checkbox" value="Yes" name="call"><br /> 
No:<input type="checkbox" value="No" name="call"><br /> 

<p>Website</p> <input type="text" name="website"> 

<p>Message</p><textarea name="message" rows="6" cols="25"></textarea><br /> 
<input type="submit" value="Send"><input type="reset" value="Clear"> 
</form> 

这里是php文件:

<?php 

$name = $_POST['name']; 
$email = $_POST['email']; 
$phone = $_POST['phone']; 
$call = $_POST['call']; 
$website = $_POST['website']; 
$message = $_POST['message']; 
$formcontent = 'From: $name \n Phone: $phone \n Call Back: $call \n Website: $website \n Message: $message'; 
$recipient = '[email protected]'; 
$subject = 'Fused Enterprises Contact Form'; 

$headers = "MIME-Version: 1.0" . "\r\n"; 
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n"; 
$headers .= 'From: <[email protected]>' . "\r\n"; 
$headers .= 'Cc: [email protected]' . "\r\n"; 

mail($recipient, $subject, $formcontent, $headers) or die("Error!"); 

echo "Thank You, the form has been submitted. Someone from the Team will contact you shortly." . " -" . "<a href='/Home/' style='text-decoration:none; color:#1e90ff;'> Return Home</a>"; 

?> 

我一定要实现PEAR邮件?我也试图实现,并且我没有收到电子邮件。我不知道它是否失败。脚本运行,我得到echo,但我从来没有收到电子邮件。它没有去垃圾邮件文件夹。

该网站托管(与此脚本一起)在example.com下,但电子邮件使用本地主机与smtp服务器mail.example.com。它们托管在同一台服务器上。域名的差异可能是一个问题?

+0

当你说“不会发送”你的意思是它给人的错误,或者您没有收到该电子邮件?你有检查过你的垃圾邮件文件夹吗? – 2013-03-05 19:40:17

+0

我没有收到电子邮件。我没有任何迹象表明它是否失败。我也检查过垃圾邮件文件夹,但它会发送两封不同的电子邮件,但都未收到。 – user1453549 2013-03-05 19:51:07

+0

检查您的邮件日志。 – Sammitch 2013-03-05 21:11:28

回答

0

某些主机关闭了其服务器发送电子邮件的功能(因此无法从其服务器发送垃圾邮件)。我会首先检查。

+0

我检查了主机,他们说我可以用它来发送邮件,没有验证,并且我将不得不使用'localhost'作为SMTP服务器(不是mail.example.com),我无法弄清楚如何在上面的示例中成功实现代码以识别该服务器。 – user1453549 2013-03-05 19:58:59

1

要以HTMl格式发送邮件,标题是最重要的。 使用此PHP函数.. 我在这里使用这个脚本... http://ieeeaset.com/mailer/mailer.php

function htmlmail() 
    { 
     if (strtoupper(substr(PHP_OS,0,3)=='WIN')) { 
      $eol="\r\n"; 
     } elseif (strtoupper(substr(PHP_OS,0,3)=='MAC')) { 
      $eol="\r"; 
     } else { 
      $eol="\n"; 
     } 
     $recmail = $_POST['toemail']; // address where you want the mail to be send 
     $sub = $_POST['subject']; //subject of email that is sent 
     $mess = $_POST['message']; 
     $pattern[0]="\'"; 
     $pattern[1]='\"'; 
     $replace[0]="'"; 
     $replace[1]='"'; 
     $mess= str_replace($pattern, $replace, $mess); 
     $headers = "From: [senders_email].$eol . 
     "MIME-Version: 1.0".$eol . 
     "Content-type: text/html; charset=iso-8859-1"; 
      mail($recmail,$sub,$mess,$headers); 
    }