带有 XAMPP 的 SMTP 服务器?
Posted
技术标签:
【中文标题】带有 XAMPP 的 SMTP 服务器?【英文标题】:SMTP server with XAMPP? 【发布时间】:2014-04-29 08:00:54 【问题描述】:我是 php 新手,在我的项目中我使用了 php 邮件功能,但是在从数据库发送邮件时,它显示如下错误:
Failed to connect to mailserver at "localhost" port 25, verify your "SMTP"
通过 *** 和 google 搜索,得知 XAMPP 不提供 SMTP 服务器,我必须安装 SMTP 服务器。
我真的很困惑。那么,我应该安装哪个 SMTP 服务器?
【问题讨论】:
您可以使用 ISP 的 SMTP 服务器或 Google 的(如果您有 GMail 帐户),而不是安装 SMTP 服务器。见***.com/questions/14456673/… 我是 php 新手。我不知道如何使用 Gmail 帐户在 php 中发送邮件。你能在答案中更好地解释这个吗? php mail setup in xampp的可能重复 【参考方案1】:对于这个例子,我将使用PHPMailer。
所以首先,你必须下载 PHPMailer 的源代码。只需要 3 个文件:
PHPMailerAutoload.php class.phpmailer.php class.smtp.php将这三个文件放在同一个文件夹中。 然后创建主脚本(我称之为'index.php')。
index.php 的内容:
<?php
//Load PHPMailer dependencies
require_once 'PHPMailerAutoload.php';
require_once 'class.phpmailer.php';
require_once 'class.smtp.php';
/* CONFIGURATION */
$crendentials = array(
'email' => 'XXXXXXXX@gmail.com', //Your GMail adress
'password' => 'XXXXXXXX' //Your GMail password
);
/* SPECIFIC TO GMAIL SMTP */
$smtp = array(
'host' => 'smtp.gmail.com',
'port' => 587,
'username' => $crendentials['email'],
'password' => $crendentials['password'],
'secure' => 'tls' //SSL or TLS
);
/* TO, SUBJECT, CONTENT */
$to = ''; //The 'To' field
$subject = 'This is a test email sent with PHPMailer';
$content = 'This is the html message body <b>in bold!</b>';
$mailer = new PHPMailer();
//SMTP Configuration
$mailer->isSMTP();
$mailer->SMTPAuth = true; //We need to authenticate
$mailer->Host = $smtp['host'];
$mailer->Port = $smtp['port'];
$mailer->Username = $smtp['username'];
$mailer->Password = $smtp['password'];
$mailer->SMTPSecure = $smtp['secure'];
//Now, send mail :
//From - To :
$mailer->From = $crendentials['email'];
$mailer->FromName = 'Your Name'; //Optional
$mailer->addAddress($to); // Add a recipient
//Subject - Body :
$mailer->Subject = $subject;
$mailer->Body = $content;
$mailer->isHTML(true); //Mail body contains HTML tags
//Check if mail is sent :
if(!$mailer->send())
echo 'Error sending mail : ' . $mailer->ErrorInfo;
else
echo 'Message sent !';
您还可以添加“抄送”、“密件抄送”等字段...
可以在Github 上找到示例和文档。
如果您需要使用其他 SMTP 服务器,您可以修改$smtp
中的值。
注意:您可能在发送邮件时遇到问题,例如“警告:stream_socket_enable_crypto():此流不支持 SSL/加密”。
在这种情况下,您必须启用 OpenSSL 扩展。检查您的phpinfo()
,查找“加载的配置文件”的值(在我的情况下:E:\Program Files\wamp\bin\apache\apache2.4.2\bin\php.ini)并在此文件中取消注释线extension=php_openssl.dll
。然后,重新启动您的 XAMPP 服务器。
【讨论】:
您是否介意评论一下答案here 中使用这种方法与sendmail 方法的主要区别是什么?两者似乎都有效,但我不确定为什么我会选择其中一个。谢谢!以上是关于带有 XAMPP 的 SMTP 服务器?的主要内容,如果未能解决你的问题,请参考以下文章
无法与主机 smtp.gmail.com [#0] 建立连接 - LARAVEL / XAMPP / PHP7
使用代码点火器和 gmail smtp 从本地主机上的 xampp 发送电子邮件
如何配置 XAMPP PHP 通过安全 smtp 我的 ISP 从本地主机发送邮件