以下脚本使用mail函数发送电子邮件.但是我无法发送电子邮件.点击submit此按钮会显示:
Warning: mail() [function.mail]: SMTP server response: 553 We do not relay non-local mail, sorry. in E:\xampp\htdocs\feedback.php on line 19
mail sent successfully
Run Code Online (Sandbox Code Playgroud)
脚本
<?php
if( isset( $_REQUEST['email'] ) ) {
$email = $_REQUEST['email'];
$subject = $_REQUEST['subject'];
$message = $_REQUEST['message'];
mail("me@gmail.com" , $subject , $message , "From:".$email );
echo "mail sent successfully";
} else {
echo "<form method = 'post' action = 'feedback.php'>
Email of sender : <input name = 'email' type = 'text' /> <br/>
Subject : <input name = 'subject' type = 'text'/> <br/>
Enter your feedback here : <textarea name = 'message' rows = 15 cols = 40 > </textarea> <br/>
<input type = 'submit'/>
</form>";
}
?>
Run Code Online (Sandbox Code Playgroud)
我使用Apache作为PHP服务器
还告诉我们为什么要编写$subject,$message即与$在邮件参数标志,因为我们已经声明$email,$message等等,就在上面.为什么我们不能只写消息,电子邮件,没有美元符号?
小智 11
Resolvendo:在Xampp菜单中,
转到水银管理 - >配置菜单 - > MercuryS SMTP服务器 - >连接控制.在该窗口中,取消选中复选框.见下文:

然后在php.ini文件中:
[邮件功能] SMTP = 127.0.0.1 <------------------将localhost更改为ip local
SMTP_PORT = 25
警告:mail()[function.mail]:SMTP服务器响应:553我们不转发非本地邮件,抱歉.在E:\ xampp\htdocs\feedback.php第19行邮件发送成功
这意味着您的服务器配置不正确.它应该能够通过一些智能主机发送邮件,允许从您的系统中继.在真实服务器上,这很可能是在localhost上运行的MTA .
还要说明为什么我们必须写$ subject,$ message,即邮件参数中的$ sign,因为我们已经声明了$ email,$ message等,就在上面.为什么我们不能只写消息,电子邮件,没有美元符号?
那是因为变量以$PHP 为前缀.
您使用的是默认情况下随 Mercury 一起提供的 XAMPP,默认情况下它没有配置为将邮件发送到不同的服务器。它基本上用于调试。确实存在配置它的说明,但根据我的经验,Windows + Apache 通常最好仅作为调试环境。
PHP 变量前面都有 $。它被称为sigil. 这是它们区别于常量、类定义和函数的地方。如果要赋值,然后将其发送到函数中,则需要使用变量。define如果足够重要,您可以使用来设置常量,但相信我,这些情况很少见,您通常应该避免它们。
但是,您也可以这样做:
mail("me@gmail.com" ,
$_REQUEST['subject'] ,
$_REQUEST['message'] ,
"From:".$_REQUEST['email'] );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24581 次 |
| 最近记录: |