以下脚本使用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
SCRIPT
<?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>";
}
?>
我使用Apache作为php服务器
还要说明为什么我们必须在邮件参数中写$subject
,$message
即$
符号,因为我们已声明$email
,{{ 1}}等等,就在上面。为什么我们不能只写消息,电子邮件,没有美元符号?
答案 0 :(得分:10)
Resolvendo:
在Xampp菜单中,
转到水银管理员 - &gt;配置菜单 - &gt; MercuryS SMTP服务器 - &gt;连接控制。在该窗口中,取消选中复选框。见下文:
然后在php.ini文件中:
[邮件功能] SMTP = 127.0.0.1&lt; ------------------将localhost更改为ip local
SMTP_PORT = 25
答案 1 :(得分:5)
警告:mail()[function.mail]:SMTP服务器响应:553我们不转发非本地邮件,抱歉。在第19行的E:\ xampp \ htdocs \ feedback.php中 邮件已成功发送
这意味着您的服务器配置不正确。它应该能够通过一些智能主机发送邮件,允许从您的系统中继。在真实服务器上,这可能是在 localhost 上运行的MTA。
还要说明为什么我们必须写一个$ subject,$ message,即邮件参数中的$ sign,因为我们已经在上面声明了$ email,$ message等。为什么我们不能只写消息,电子邮件,......没有美元符号?
这是因为变量在PHP中以$
为前缀。
答案 2 :(得分:4)
您正在使用默认情况下附带Mercury的XAMPP,默认情况下,Mercury未配置为将邮件发送到其他服务器。它基本上用于调试。 Instructions do exist将其配置为执行此操作,但Windows + Apache通常最适合作为我的体验调试环境。
PHP变量都有$ before。它被称为sigil
。它是区别于常量,类定义和函数的区别。如果要分配值然后将其发送到函数,则需要使用变量。你可以使用define
设置一个常数,如果它足够重要,但请相信我,这些情况很少见,你通常应该避免它们。
你也可以这样做:
mail("me@gmail.com" ,
$_REQUEST['subject'] ,
$_REQUEST['message'] ,
"From:".$_REQUEST['email'] );
答案 3 :(得分:1)
以下脚本使用邮件功能发送电子邮件。但是我无法发送电子邮件。点击提交后会显示:
SMTP服务器阻止在不从本地计算机/域发送邮件时使用。
这是为了防止使用SMTP服务器的垃圾邮件发送者发送邮件。 (开放中继)。
_也告诉我们为什么要写$ subject,$ message,即邮件参数中的$ sign,因为我们已经在上面声明了$ email,$ message等。为什么我们只能在没有美元符号_?
的情况下编写邮件,电子邮件......
<击> 您不必使用变量。
mail('me@gmail.com' , 'subject', 'test', 'From: someone@example.com');
完全没问题
击>
你也可以做到:
mail("me@gmail.com" , $_REQUEST['subject'] , $_REQUEST['message'] , "From:".$_REQUEST['email'] );
答案 4 :(得分:0)
此问题是由于您的服务器配置造成的。 现在一天服务器停止打开中继我们在核心PHP中使用的消息和方法用于发送邮件是一种开放的中继方法。打开开放中继可以减少垃圾邮件。 这是你得到这个错误信息的共鸣,尝试邮寄图书馆像swift邮件从SMTP发送邮件
答案 5 :(得分:0)
如果使用Windows + Xampp安装: 这是因为水银服务已在运行,并且无法在本地主机之外发送电子邮件。 转到xammp控制面板并停止水银维修。希望对您有所帮助。
答案 6 :(得分:-1)
答案很简单:您的SMTP服务器不支持中继邮件。您可能需要配置或登录它才能进行中继工作。虽然我之前做过类似的事情,但现在还不能提供任何样品。尝试搜索“使用PHP登录SMTP”