大概和这个样子差不多: http://www.ddeee.com/guestbook.php
应该怎么做?
我用了那个GuestBook.php的源码(ddeee.com的站长给我发了份代码),修改了一上,用不了。总是提示发送成功,但是收不了邮件!可是,我装了Discuz!却可以用它的功能给任何邮箱发邮件!我的网站php探针:http://www.d1exe.cn/phpinfo.php附以上guestbook.php的代码<?php
session_start();
?>
<?php
$cur_page_title = '留言反馈';
include('inc/header.inc.php');
?>
<style>
p {text-indent:0px}
</style>
<table width="760" align="center" cellspacing="0" bgcolor="#F3F3F3">
  <tr>
    <td height="29"><table width="400" align="center" cellspacing="0" style="margin-bottom:20px; margin-top:20px">
        <tr>
          <td><?php
function isSpace($input) {
$input = str_replace(" ", "",  $input);
$input = str_replace(" ", "", $input);
$input = str_replace("\n", "", $input);
$input = str_replace("\r", "", $input);
return ($input == "");
}function to_base64(&$to, &$subject, &$message, $name, $address, &$headers) {
$bm1 = "=?GB2312?B?"; // 编码1
$bm2 = "?="; // 编码2 // 收件人
$temp = strrchr($to, ''); // 获得邮件地址
$to = str_replace($temp, '', $to); // 把邮件地址去掉,只剩下名字
$to = base64_encode($to); // 把名字转换成 Base64 编码格式
if($to != '') $to = $bm1 . $to . $bm2;
$to .= $temp; // 标题
$subject = base64_encode($subject); // 把主题用 Base64 编码
if($subject != '') $subject = $bm1 . $subject . $bm2; // 内容
$message = chunk_split(base64_encode($message), 76, "\n");

// 发信人名字
if($name != '') $name = $bm1 . base64_encode($name) . $bm2;

// 邮件头
$headers  = "";
$headers .= "Date: " . date("D, j M Y H:i:s +0800") . "\n";
$headers .= "MIME-Version: 1.0" . "\n";
$headers .= "Content-Type: text/plain; charset=\"gb2312\"" . "\n";
$headers .= "Content-Transfer-Encoding: base64" . "\n";
$headers .= "From: $name<$address>";
}
$to = '皮皮鲁<[email protected]>';
$subject;
$message;
$name;
$address;
$headers;if ($_SERVER['QUERY_STRING'] != "" && $_GET['action'] == 'post') { // 留言
$post = false; if (!isset($_SESSION[$_SERVER['REMOTE_ADDR']])) { // 如果没有留过言,则让变量等于这次的留言时间
$post = true; // 允许留言
$_SESSION[$_SERVER['REMOTE_ADDR']] = time(); // 更新变量为这次的留言时间
} else { // 已经留过言
$timeout = time() - $_SESSION[$_SERVER['$REMOTE_ADDR']]; // 计算这次留言时间距离上次留言时间的间隔
if($timeout < 60) { // 距离上次留言没有超过 60 秒
$post = false; // 不允许留言
$timeout = 60 - $timeout;
echo "<p align=\"center\"><b>留言间隔小于60秒!<br>距离允许再次留言还剩".$timeout."秒<br><a href=\"".$_SERVER['PHP_SELF']."\">点击这里返回</a></b></p>";
} else { // 距离上次留言时间已经超过 60 秒
$post = true; // 允许留言
$_SESSION[$_SERVER['$REMOTE_ADDR']] = time(); // 更新变量为这次的留言时间
}
} if($post) { // 允许留言
$subject = $_POST['txtBT'];
$message = $_POST['txtNR'];
$name =    $_POST['txtXM'];
$address = $_POST['txtYX'];

if(isSpace($subject)) $subject = "[无标题]";
$subject = "网站留言:" . $subject;

if(isSpace($message)) { // 没有任何留言内容
echo "<p align=\"center\"><b>没有任何留言内容!<br><a href=\"".$_SERVER['PHP_SELF']."\">点击这里返回</a></b></p>";
} else { // 有效的留言内容
to_base64($to, $subject, $message, $name, $address, $headers);
if(mail($to, $subject, $message, $headers)) {
echo "<p align=\"center\"><b>邮件发送成功<br><a href=\"http://".$_SERVER['SERVER_NAME']."\">点击这里返回首页</a></b></p>";
} else {
echo "<p align=\"center\"><b>邮件发送失败!<br>请检查您的留言内容是否太多。<br><a href=\"".$_SERVER['PHP_SELF']."\">点击这里返回</a></b></p>";
}
}
}
} else {
  echo "<p>该留言将被发送到 <a href=\"mailto:".rawurlencode($to)."\">".htmlspecialchars($to)."</a></p>\n";
  echo "<p style=\"color: red;\">如果想收到回复,请如实填写您的邮箱</p>\n";
  echo "<p style=\"color: red;\">如果在十天后您还没有得到回复,可能您无法从这里发送邮件。<br>请使用您的邮箱发送邮件</p>\n";
  echo "<form action=\"".$_SERVER['PHP_SELF']."?action=post\" method=\"post\" name=\"frmLY\" id=\"frmLY\">\n";
print <<<END
        <p>标题(可以不写):<br><input name="txtBT" type="text" id="txtBT" value="" style="width:100%" class="flat"></p>
<p><b>内容(必须填写):</b><br><textarea name="txtNR" id="txtNR" style="width:100%; height:200px" class="flat"></textarea></p>
<p>您的姓名(可以不写):<br><input name="txtXM" type="text" id="txtBT" value="" style="width:100%" class="flat"></p>
<p>您的邮箱(可以不写):<br><input name="txtYX" type="text" id="txtBT" value="" style="width:100%" class="flat"></p>
<p align="center">
          <input type="submit" class="flat" value="提交">
      <input type="reset"  class="flat" value="重置">
</p>
  </form>
END;
}
?>
          </td>
        </tr>
      </table></td>
  </tr>
</table>
<?php
include('inc/footer.inc.php');
?>

解决方案 »

  1.   


    phpmailer我集成到queryphp里面了,可以下载手册看看 要设置ssl和端口http://code.google.com/p/queryphp/downloads/list
      

  2.   

    mail函数试过了,不行的!
    可不可以不用phpmailer?而且,我不能判断我的空间一定支持phpmailer. 各位大大,把上面的代码改一下,看能不能发到自己的邮箱
      

  3.   

    try {
    $mail =C('PHPMailer'); //创建phmailer
    $address = "[email protected]";
    $mail->IsSMTP(); // set mailer to use SMTP
    $mail->Host = "ssl://smtp.gmail.com"; // specify main and backup server
    $mail->Port = 465;
    $mail->SMTPAuth = true; // turn on SMTP authentication
    $mail->Username = "8888"; // SMTP username
    $mail->Password = "***"; // SMTP password $mail->From = "[email protected]";
    $mail->FromName = "邮件测试";
    $mail->AddAddress("$address", "");
    //$mail->AddAddress(""); // name is optional
    //$mail->AddReplyTo("", ""); //$mail->WordWrap = 50; // set word wrap to 50 characters
    //$mail->AddAttachment("/var/tmp/file.tar.gz"); // add attachments
    //$mail->AddAttachment("/tmp/image.jpg", "new.jpg"); // optional name
    //$mail->IsHTML(true); // set email format to HTML $mail->Subject = "PHPMailer 再次测试";
    $mail->Body = "Hello,这是我的测试松子的测试邮件";
    $mail->AltBody = "This is the body in plain text for non-HTML mail clients";
    if(!$mail->Send())
    {
     echo "Message could not be sent. <p>";
     echo "Mailer Error: " . $mail->ErrorInfo;
     exit;
    } echo "Message has been sent"; } catch (phpmailerException $e) {
      echo $e->errorMessage();
      echo("ssss");
    }