代码之家  ›  专栏  ›  技术社区  ›  shinjuo

不使用PHP表单发送电子邮件

  •  0
  • shinjuo  · 技术社区  · 14 年前

    我有一个表格,我以前用过,这只是一个普通的表格。您填写表单并点击提交,它会返回一个感谢页面。所以它从form.html转到mailPage.php,然后是Thankyou.html。我已经用了两次同样的表格,它通常运作良好,但由于某些原因,在这个新的网站上,它不发送电子邮件。我知道邮件页面会被调用,因为它会将您发送到“谢谢”页面,但不会发送电子邮件。任何可能导致这种情况的想法。这是我的代码:

        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    
    <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <title>Untitled 1</title>
    </head>
    
    <body>
    <?php
      $email = $_REQUEST['eMail'] ;
      $comments = $_REQUEST['comments'] ;
      $year = $_REQUEST['year'] ;
      $make = $_REQUEST['make'] ;
      $model= $_REQUEST['model'] ;
      $zip = $_REQUEST['zip'] ;
      $state = $_REQUEST['State'] ;
      $city = $_REQUEST['City'] ;
      $address = $_REQUEST['Address'] ;
      $callTime = $_REQUEST['callTime'] ;
      $workNumber= $_REQUEST['workNumber'] ;
      $foundby = $_REQUEST['foundby'] ;
      $fullName = $_REQUEST['fullName'] ;
      $homeNumber = $_REQUEST['homeNumber'] ;
    
      mail( "XXXX@XXXXXXXXXXX", "Estimate Request",
        "From:\t$fullName\nEmail:\t$email\nHome Phone:\t$homeNumber\nWork Phone:\t$workNumber\nBest time to call:\t$callTime\nAddress:\n\t$address\n\t$city, $state $zip\nMake:                 $make\tModel:$model\tYear:$year\nFound us by:\t$foundby\n\nComments:\n$comments");
      header( "Location: thankyou.html" );
    ?>
    </body>
    
    </html>
    
    4 回复  |  直到 14 年前
        1
  •  1
  •   Herr    14 年前

    你从什么环境逃跑?

    请提供一些信息

    像xampp这样的本地程序通常没有
    预装邮件服务器。

        2
  •  1
  •   Lior Iluz    14 年前

    唯一想到的是服务器上没有php邮件定义。。。像EXIM4之类的东西。

        3
  •  1
  •   TsukiakariUsagi    14 年前

    我一直在使用PHP中添加的PEAR来发送邮件,因为我可以更好地控制它的工作。它需要包含以下两个部分:

    require "Mail.php";
    require "Mail/mime.php";
    

    我通常在这两条注释之后从表单中执行所有处理,然后使用以下代码集将它们组合在一起:

        $server   = "mail.myserver.com";
        $username = "myusername@myserver.com";
        $password = "thisIsAPassword";
        $port     = "587";
    
        // Set Up The Mail Headers
        $hdrsUs = array(
                    "From"        => $sender,
                    "To"          => $receiverUs,
                    "Subject"     => $subjectUs,
                    "Return-Path" => $sender
                  );
    
        // Configure the Mailer Mechanism
        $smtp = Mail::factory("smtp",
                  array(
                    "host"     => $server,
                    "username" => $username,
                    "password" => $password,
                    "auth"     => true,
                    "port"     => $port
                   )
                );
    
        $textUs =
          "This is a text version of the e-mail.";
    
        $htmlUs =
          "<html>
             <body>
               <center>
                 <b>This is the HTML version of the e-mail.</b>
               </center>
             </body>
           </html>";
    
      $mimeUs = new Mail_mime($crlf);
    
      $mimeUs->setTXTBody($textUs);
      $mimeUs->setHTMLBody($htmlUs);
    
      // Do not EVER Try to Call These Lines in Reverse Order
      $bodyUs = $mimeUs->get();
      $hdrsUs = $mimeUs->headers($hdrsUs, true);
    
      // Send the Message
      $mailUs   = $smtp->send($receiverUs, $hdrsUs, $bodyUs);
    
      if (PEAR::isError($mailUs))
      {
        echo ($mailThem->getMessage());
      }
      else
      {
        echo "&nbsp;<br /><center><b>The Mail Has Sent.</b></center>\n";
      } 
    
        4
  •  0
  •   A23    11 年前

    最常见的问题是电子邮件的输入名称会不同。你能做以下的事吗?-

    echo $email; die("");
    

    如果您可以看到电子邮件被正确显示,它将与您服务器上的SMTP设置有关。