带有 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 从本地主机发送邮件

SMTP 错误:身份验证

在本地 XAMPP 服务器中使用 CodeIgniter 发送电子邮件

使用 xampp localhost 发送电子邮件