邮件不发送给用户

时间:2014-02-01 06:36:58

标签: php email

您好我创建了一个表单,我在其中输入用户详细信息并通过电子邮件向他们提供用户名和密码以进行登录。

问题:使用post方法我想向用户发送电子邮件。 但它显示已发送的电子邮件,但尚未收到电子邮件。

如果直接发送地址,则会发送电子邮件。 $ to:email@domain.com - 发送邮件。

我使用发送邮件在localhost中发送电子邮件。

我的表单是

<form name="assignteacher" method="post" action="../path.php">

<table align="center" width="450px">

<tr>

<td valign="top">

<label for="teacherid">Teacher ID</label>

</td>

<td valign="top">

<input  type="text" name="teacherid" maxlength="50" size="30">

</td>

</tr>
<tr>

<td valign="top">

<label for="email">Email</label>

</td>

<td valign="top">

<input  type="email" name="email" maxlength="50" size="30">

</td>

</tr>
<tr>

<td valign="top">

<label for="username">User Name</label>

</td>

<td valign="top">

<input  type="text" name="username" maxlength="50" size="30">

</td>

</tr>

<tr>

<td valign="top"">

<label for="password">Password</label>

</td>

<td valign="top">

<input  type="text" name="password" maxlength="50" size="30">

</td>

</tr>

<tr>

<td valign="top">

<label for="class">Class Assigned</label>

</td>

<td valign="top">

<input  type="text" name="class" maxlength="80" size="30">

</td>

</tr>



<tr>

<td colspan="2" style="text-align:center">

<input type="submit" value="Submit">   
<a href="http://www.freecontactform.com/email_form.php">Email Form</a>

</td>

</tr>

</table>

</form>

我的PHP代码是..

<?php

$emailid=$_POST['email'];
$to='$emailid';
$subject='Your Login info';

$message ="username: ".$_POST['username']."\r\n"; 
$message .= "Password: ".$_POST["password"]."\r\n"; 
  $message .= "class: ".$_POST["class"]."\r\n";  



$headers="from:myemail@gmail.com" . "\r\n" .
        "Reply_to:myemail@gmail.com" . "/r/n" .
        "MIME-version:1.0" . "\r\n" .
        "Content-type:text/html" . "\r\n" .
        "X-Mailer:PHP/" . phpversion();
if(mail($to, $subject, $message, $headers))
echo "mail sent";
else
echo"mail sending failed";




?>

请帮助我。如果我犯了任何咒语或语法错误,请耐心等待。

4 个答案:

答案 0 :(得分:0)

不需要为$to='$emailid';提供单引号,因为它是包含字符串值的PHP变量。鉴于如下:

$to=$emailid;

答案 1 :(得分:0)

如果您使用的是Xampp,则必须修改2个ini文件:php.ini和sendmail.ini 1)在php.ini中查找邮件功能(c:/xampp/php/php.ini)&gt;&gt; [邮件功能] 改变以下内容:

SMTP=smtp.gmail.com
smtp_port=587
sendmail_from = from@gmail.com
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"

2)接下来修改sendmail.ini(c:/xampp/sendmail/sendmail.ini) 编辑以下行(如果没有,则复制并粘贴,然后进行编辑)

account Gmail
tls on
tls_certcheck off
host smtp.gmail.com
from x@gmail.com
auth on
user x@gmail.com
password x

port 587

account default : Gmail

保存这两个文件,然后使用此代码

进行测试
<?php
$subject="Test mail";
$to="someone@whatever.com";
$body="This is a test mail";
if (mail($to,$subject,$body)) {
echo "Mail sent successfully!";
} else {
echo"Mail not sent!";
}
?>

答案 2 :(得分:-1)

第二行 $to='$emailid';应为$to=$emailid;

值得指出的是,这是一个巨大的安全风险 - 除非密码受到保护,否则此代码不应在公共互联网上提供。

答案 3 :(得分:-1)

您正在使用HTML 5属性进行输入,它仅适用于现代浏览器.. 所以做如下更改

HTML中的

<input  type="text" name="email" maxlength="50" size="30">

在PHP中修复错误

$to=$emailid;