尝试使用PHP将用户名发送到电子邮件

时间:2016-07-27 13:50:15

标签: php html mysql

我有一个包含用户电子邮件和自动生成的用户名的数据库,我有一个表单,用户输入他们的电子邮件来检索他们的用户名,这是我的代码

<html>
<body>
  <form method="post" action="retrievedetails.php">
    <p><label for="email">Email:</label>
    <input name="email" type="text"/>
    </p>
    <input type="submit" name="submit" value="submit"/>
  </form>

<?php
session_start();
$connect=mysql_connect("localhost","dfarrelly","1234") or die("Could not connect to database");
mysql_select_db("game", $connect) or die("Couldn't find db");

  if(isset($_POST['submit'])) {
      $email=$_POST['email'];
      $email_check=mysql_query("SELECT user_name FROM details WHERE user_email='$email'");
      $name=mysql_num_rows($email_check);
      $subject="Login Info";
      $message="Your username is .$name";
      $from="From: test@gmail.com";
      mail($email, $subject, $message, $from);
      echo "your username has been emailed to you";
  }
?>
</body>
</html>

我没有收到任何错误,我只是没有收到电子邮件,任何人都可以帮我这个吗?

5 个答案:

答案 0 :(得分:2)

假设您尚未指定SMTP服务器,这是您无法发送电子邮件的原因。 Google等公司拥有这些SMTP服务器,允许您作为电子邮件服务客户通过其SMTP服务器接收和发送电子邮件。如果无法访问SMTP服务器,您将无法发送电子邮件。

解决方案是在php.ini中指定SMTP详细信息,您可以通过Windows搜索或聚光灯找到它(如果您使用的是mac)。

我建议您使用PHPMailer,这样可以更轻松地使用来自f.e.的SMTP详细信息。您的个人Google邮件。

只需查看已接受的答案即可: Sending email with PHP from an SMTP server

答案 1 :(得分:1)

你不应该在SQL语句中盲目使用表单的值。

$email=$_POST['email'];
$email_check=mysql_query("SELECT user_name FROM details WHERE user_email='$email'");

你要求有人在那里注入一些非常讨厌的SQL作为电子邮件地址。

http://www.w3schools.com/sql/sql_injection.asp

除此之外,我认为您应该检查您的服务器是否可以发送电子邮件。 mail()只会将您的邮件转发到服务器用于发送电子邮件的任何内容。很可能没有设置,因此在修复之前您无法发送电子邮件。

答案 2 :(得分:0)

根据PHP文档所说的邮件功能和@BeAnonymous,您需要定义一个SMTP服务器。

我使用PEAR邮件通过PHP发送电子邮件。

另外,@ Carl Casbolt说,你正在与你的表格直接与数据库进行交互,这就是要求注入攻击。考虑使用PDO进行数据库交互:

答案 3 :(得分:0)

如果您正在使用本地服务器&#34; localhost&#34;,您应该首先配置您的smtp服务器,否则这个doens将起作用,如果您正在使用Web服务器检查您的垃圾邮件箱,邮件功能就是这样。要解决垃圾邮件问题,请使用phpMailer而不是php的邮件功能。

答案 4 :(得分:-1)

你应该配置你的php.ini文件:你应该搜索[mail function]并添加有关你的邮件服务器的信息。对我来说,在unix上,它可以工作,这是配置:

[邮件功能]

仅适用于Unix。您也可以提供参数(默认值:&#34; sendmail -t -i&#34;)。 ; http://php.net/sendmail-path sendmail_path = / usr / sbin / sendmail -t -i

强制添加指定参数作为额外参数传递 ;到sendmail二进制文件。这些参数将始终替换值 ; mail()的第5个参数,即使在安全模式下也是如此。 ; mail.force_extra_parameters =

添加X-PHP-Originating-Script:包含脚本的uid,后跟文件名 mail.add_x_header = On