无法通过php发送邮件

时间:2012-07-30 05:56:09

标签: 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;
}

谢谢!

3 个答案:

答案 0 :(得分:3)

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

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

<?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注入)。我强烈建议您使用其中一个可用的函数/类来帮助您减少邮件脚本中的安全漏洞。

如果您决定自己动手,那么请在服务器上发布此脚本之前阅读有关电子邮件垃圾邮件标头注入的信息。垃圾邮件发送者在发现这样的开放脚本时可以非常快速地发送数千封电子邮件,它们会定期自动测试,因此您必须进行压制。

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

答案 1 :(得分:0)

  1. 您的服务提供商可能会阻止您的邮件。

  2. 如果您在专用服务器中,则可能需要配置邮件服务器

  3. 由于

    Sreeraj

答案 2 :(得分:0)

使用此方法 这是一个php电子邮件脚本,不需要任何smpt连接

<?php
$to = "someone@example.com";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "someonelse@example.com";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
echo "Mail Sent.";
?>