如何在PHP中使用Mailto函数

时间:2013-07-21 19:24:41

标签: php forms mailto

我真的很新,需要帮助......我有一个论坛,我想发送,但由于某种原因它不发送。 mailto功能不是在服务器上发送电子邮件,也不是刷新redirect.html。这是我的代码:

 <?php 
                $problem = FALSE;
                if ($_SERVER['REQUEST_METHOD'] == 'POST') {
                    if (empty($_POST['name'])) {
                        $problem = TRUE;
                        print '<p class="important">&bull;&nbsp;What is your name?</p>';
                    }   
                    if (empty($_POST['email'])) {
                        $problem =TRUE;
                        print '<p class="important">&bull;&nbsp;What is your email?</p>';
                    }
                    if (empty($_POST['message'])) {
                        $problem =TRUE;
                        print '<p class="important">&bull;&nbsp;What is your message?</p>';
                    }
                    if ($problem = TRUE) {print '<br />';}
                    }
            ?>
            <form action="index.php" id="contact_me" method="post">
            <table border="0" cellspacing="0" cellpadding="0" width="500">
                  <tr>
                    <td width="160">Your Name:<span class="important">*</span></td>
                    <td width="340"><input name="name" type="text" size="30" value="<?php if ($_SERVER['REQUEST_METHOD'] == 'POST') { if (isset($_POST['name'])) { print htmlspecialchars($_POST['name']); }}?>"/>
                    </td>
                  </tr>
                  <tr>
                    <td><p>Your Email:<span class="important">*</span></p>
                    </td>
                    <td><input name="email" type="text" size="30" placeholder="example@example.com" value="<?php if ($_SERVER['REQUEST_METHOD'] == 'POST') { if (isset($_POST['email'])) { print htmlspecialchars($_POST['email']); }}?>"/></td>
                  </tr>
                  <tr>
                    <td>Message:<span class="important">*</span></td>
                    <td><textarea name="message" rows="6" cols="40" placeholder="Your message here"><?php if($_SERVER['REQUEST_METHOD']=='POST'){if(isset($_POST['message'])){print htmlspecialchars($_POST['message']);}}?></textarea></td>
              </tr>
            </table><br />
            <input type="submit" name="submit" id="submit" value="Submit" >
            </form>
            <?php
            // Start the email function
            if ($_SERVER['REQUEST_METHOD'] == 'POST') {
                    if ($problem == FALSE) { // holy cow they didn't mess up
                        $name=$_REQUEST['name']; 
                        $email=$_REQUEST['email']; 
                        $message=$_REQUEST['message'];   

                        $from="From: $name<$email>\r\nReturn-path: $email"; 
                        $subject="Mathew Blair - Contact form"; 
                        mail("mathewblair@live.com", $subject, $message, $from);

                        Header("Location: redirect.html");
                    }
            }
            ?>

感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

关于你的最后一个条件

 if ($problem = TRUE) {print '<br />';}

您不是在检查problem是否为true,而是您设置problemTRUE

将其更改为:

 if ($problem == TRUE) {print '<br />';}

答案 1 :(得分:0)

您所在的服务器需要安装sendmail或postfix等邮件服务。

在Ubuntu上,那是

sudo apt-get install sendmail

sudo apt-get install postfix

您可能需要在php.ini(http://php.net/manual/en/mail.configuration.php)中更改邮件配置。

另外,为了发送电子邮件,我发现最好使用完整的类而不仅仅是邮件功能。这样的类可以更容易地连接第三方邮件网关,例如gmail。因此,您将能够通过gmail的SMTP服务器从您的Web应用程序发送电子邮件,这样可以更好地将您发送的电子邮件检测为垃圾邮件。这是三个很好的包。我推荐swiftmailer。

http://swiftmailer.org/

https://github.com/Synchro/PHPMailer

http://framework.zend.com/manual/1.12/en/zend.mail.html

http://pear.php.net/package/Mail_Mime

答案 2 :(得分:0)

您需要配置SMTP才能使mail正常工作。

由于配置错误,mail功能也可能出现故障。您必须编辑php.ini文件。