php - 无法通过php发送邮件

标签 php

我有一个表单,用户输入消息,消息被发送到另一端的收件人。我已经多次尝试这个脚本,浏览了教程,但我似乎无法找到问题所在。有任何想法吗?

HTML 表单:

 <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" >
       <?php 
        if(isset($sent))
                 echo 'Your message has been sent. '; ?>
      <label for="Name">Name</label><br />                  
      <input type="text" class="textbox" size="35" id="Name" name="Name" <?php if(isset($name)) echo "value=\"$name\"";?> /><br />
      <label for="Service">Service</label><br />
      <input type="text" size="35" class="textbox" id="Service" name="Service" <?php  if(isset($subject)) echo"value=\"$subject\"";?> /><br />
      <label for="Email">Email</label><br />
      <input type="text" size="35" class="textbox" id="Email" name="Email" <?php if(isset($from)) echo"value=\"$from\""; ?> /><br />     
      <label for="message">Message</label><br />
      <textarea rows="95" cols="100" id="message" name="message"><?php if(isset($message)) echo"$message"; ?></textarea><br />
      <button type="submit">Send Message</button>               
</form>

PHP:
if(isset($_POST['Name']) && isset($_POST['Email']) && isset($_POST['Service']) && isset($_POST['message'])) {
    $name = $_POST['Name'];
    $from = $_POST['Email'];
    $subject = $_POST['Service'];
    $to = "emailtestertora@gmail.com";
    $message = $_POST['message'];
    mysql_query("INSERT INTO `Contact`(`Name`, `Email`, `Message`, `Service`) VALUES('$name', '$from', '$message', '$subject')");
    $headers = "From:".$from;
    if(mail($to,$subject,$message,$headers)) 
        $msgsent = true;
}

谢谢!

最佳答案

(道歉,因为这应该作为评论,但它会更容易在文本框中布局)

首先,使用以下代码进行调试:

<?php

error_reporting(E_ALL);
ini_set('display_errors', 'on');

if (mail('emailtestertora@gmail.com', 'test', 'test')) {
    echo 'Mail Sent';
} else {
    echo 'Mail Failed';
}

?>

此脚本将在发送电子邮件时为您提供有助于调试的错误消息。

但是,此评论的重要部分是上面的电子邮件脚本对垃圾邮件(以及 SQL 注入(inject))开放。我会强烈鼓励您可以使用其中一个可用的函数/类来帮助您消除邮件脚本中的安全漏洞。

如果您决定自己动手,那就太好了,但是在将此脚本放在服务器上之前,请先阅读有关电子邮件垃圾邮件 header 注入(inject)的信息。当垃圾邮件发送者发现这样的开放脚本时,他们可以非常迅速地发送数千封电子邮件,他们会定期自动测试,因此您必须加以制止。

(并阅读有关 PHP 数据库对象 - PDO - 同时保存 MySQL 注入(inject)。)

关于php - 无法通过php发送邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11716054/

相关文章:

php - 如何使用 PHP 将任何图像转换为位图图像并存储在 MySQL 数据库中?

magento - 如何在 magento 的主页上仅制作 Logo H1

php - 如何创建图表来显示数据库值?

php - 使用 imap_body 仅获取电子邮件正文的特定部分

php - 避免返回到页面顶部

php - MYSQL/PHP 帮助 - 从原始预订两侧的表格中选择下一个可用日期

PHP、MYSQL 辅助键

php - 从 txt 文件中的字符串中删除行

php - 警告 : ftp_get(): Delete operation successful

php - 如何更改 Yii2 中 Controller 的默认 View ?