Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么可以';我是否在PHP中使用simple mail()函数从PC向我的Gmail帐户发送电子邮件?_Php_Email - Fatal编程技术网

为什么可以';我是否在PHP中使用simple mail()函数从PC向我的Gmail帐户发送电子邮件?

为什么可以';我是否在PHP中使用simple mail()函数从PC向我的Gmail帐户发送电子邮件?,php,email,Php,Email,我的电脑上安装了一个XAMPP,我想向我的Gmail帐户发送一封电子邮件,但它不起作用。代码如下: <?php $to = "yjhjerry621@gmail.com"; $subject = "Test mail"; $message = "Hello! This is a simple email message."; $from = "yjhjerry621@qq.com"; $headers = "From: $from"; mail($to,$subject,$message,

我的电脑上安装了一个XAMPP,我想向我的Gmail帐户发送一封电子邮件,但它不起作用。代码如下:

<?php
$to = "yjhjerry621@gmail.com";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "yjhjerry621@qq.com";
$headers = "From: $from";
mail($to,$subject,$message,$headers);
echo "Mail Sent.";
?>
以下是我从浏览器中获得的信息:

警告:mail()[function.mail]: 无法连接到位于的邮件服务器 “localhost”端口25,验证您的 中的“SMTP”和“SMTP_端口”设置 php.ini或在中使用ini_set() 第7行的C:\xampp\htdocs\phpemail.php


您的php.ini是否指向有效的SMTP服务器?在php.ini中检查此部分:

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = smtp.qq.com
; http://php.net/smtp-port
smtp_port = 25
sendmail_from = yjhjerry621@qq.com
[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25

并确认设置了有效值。在尝试运行脚本后,您的PHP错误日志是否包含任何有用的错误?

XAMPP应该为您安装一些应用程序。其中之一是水星邮件。在那里你可以去配置你的SMTP服务器


基本上,当您试图使用PHP的mail函数发送电子邮件时,为了做到这一点,它需要使用SMTP发送电子邮件,因此如果您没有正确设置,该函数将无法建立连接,因此将无法发送邮件。

mail函数返回bool。您应该对此进行检查,以确定您的终端或gmail是否存在问题。下面是my php.ini:[邮件功能]SMTP=SMTP.qq.com,SMTP_port=25中的设置是否足够?这取决于SMTP.qq.com是否设置为SMTP服务器,并且是否正常工作。请尝试“telnet smtp.qq.com 25”(应在Windows或Linux上运行),并验证是否收到220响应。如果没有,则表明问题不在于PHP代码,而在于SMTP服务器。@RyanMitchell:邮件服务器似乎工作正常(以下是来自telnet的信息:
220 esmtp10.qq.com Esmtp qq邮件服务器
)。当我将其设置为“smtp.qq.com”(一个远程邮件服务器)时,从web浏览器收到的警告似乎需要一个“localhost”(这不起作用,我已经尝试过了)。嗯-你确定正在查看的php.ini(列出smtp.qq.com)就是正在使用的吗?PHP似乎另有想法,正在寻找localhost。尝试在您的站点上查看phpinfo.php(或者从web服务器上执行php-i),它将告诉您从哪个php.ini文件获取配置。如果它不在您正在查找的位置,只需在正确的php.ini上更正SMTP ini设置。@RyanMitchell:谢谢您的回复,我非常感谢。我在windows PC上使用xampp作为我的Web服务器。我在目录中做了所有设置:
C:xampp\php\php.ini
,这正是我在查看phpinfo.php时被告知使用的目录:(在Mercury mail中,您必须将SMTP主机指向ISP(提供internet连接的公司)的SMTP主机)。如果你不知道它是什么,你可以用谷歌搜索。例如,如果你使用Verizon DSL,你可以搜索Verizon DSL SMTP设置。