2012-03-11 73 views
2

从本地服务器发送我有我的文件mail.php:电子邮件在PHP

<html> 
<body> 

<?php 
if (isset($_REQUEST['email'])) 
//if "email" is filled out, send email 
    { 
    //send email 
    $email = $_REQUEST['email'] ; 
    $subject = $_REQUEST['subject'] ; 
    $message = $_REQUEST['message'] ; 
    mail("[email protected]", $subject, 
    $message, "From:" . $email); 
    echo "Thank you for using our mail form"; 
    } 
else 
//if "email" is not filled out, display the form 
    { 
    echo "<form method='post' action='mail.php'> 
    Email: <input name='email' type='text' /><br /> 
    Subject: <input name='subject' type='text' /><br /> 
    Message:<br /> 
    <textarea name='message' rows='15' cols='40'> 
    </textarea><br /> 
    <input type='submit' /> 
    </form>"; 
    } 
?> 

</body> 
</html> 

,但是当我运行它。我得到这个错误:

Warning: mail() [function.mail]: Failed to connect to mailserver at "127.0.0.1" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\Program Files\EasyPHP-5.3.8.1\www\safepay247\mail.php on line 13 
Thank you for using our mail form 

什么即时试图做的是发邮件到我的邮箱ID:[email protected]使用PHP写在输入型的人的电子邮件。

我经历了许多视频,但没有任何帮助我解决php.ini问题。

+0

你通常不希望从开发服务器发送邮件 - 如果它是从一个发送它不会在大多数情况下抵达动态IP。你有什么样的服务器?谁在管理它? – 2012-03-11 23:45:20

+0

@皮卡 - 我使用easyPHP作为我的本地服务器。 – Samir 2012-03-11 23:46:52

+0

我会推荐使用swiftmailer(http:// swiftmailer。org /)而不是mail()函数。在你的情况下,你的错误的原因是你没有在'php.ini'中设置有效的SMTP服务器。 – F21 2012-03-11 23:47:04

回答

1

您需要在您的php.ini中设置您的SMTP服务器。

您需要更改的指令列表为here。这些设置应该由您的主机提供商提供。

但在此之前,我们超越自己,只是一个快速的警告:

  • 你被伪装成某个设定的电子邮件中的“从”头别的发送电子邮件。

  • 大多数SMTP服务器需要某种形式的身份验证,例如使用Gmail SMTP服务器发送内容,我需要使用我的用户名和密码进行身份验证。

  • 如果表单字段中的电子邮件与认证用户名不匹配,则可能会被服务器拒绝,或者可能会更改为反映认证用户名。最后,它可能不适合垃圾邮件过滤器。

我的建议是,您从您自己的电子邮件帐户发送电子邮件,例如([email protected])。然后在邮件正文中输入客户的电子邮件地址。您还可以将reply-to标题设置为客户的电子邮件地址,以便在您的电子邮件客户端中单击“回复”将自动将其电子邮件地址放在“至”字段中。

+0

是的,我可以做到这一点,但我如何更改我的php.ini文件?我的意思是我必须改变它呢? – Samir 2012-03-12 00:13:16

1

试试这个:

  1. 打开php.ini

  2. 在php.ini文件中搜索名为SMTP的属性。一般你可以找到行SMTP=localhost。将localhost更改为ISP的smtp服务器名称。而组25

    SMTP = smtp.gmail.com #user your smtp address here 
    smtp_port = 25 
    
  3. 重新启动Apache服务器或WAMP或XAMMP的端口。无论你使用什么。

  4. 现在试着用邮件来发送邮件()函数

+0

我得到这个错误:警告:mail()[function.mail]:SMTP服务器响应:530 5.7.0必须首先发出一个STARTTLS命令。 gl4sm17489588obb.23在C:\ Program Files \ EasyPHP-5.3.8.1 \ www \ safepay247 \ mail.php on line 13 感谢您使用我们的邮件表格 – Samir 2012-03-12 00:16:51

+0

@DaveJarvis,它不傲慢:P – Starx 2012-11-08 04:30:37