如何配置XAMPP从本地主机发送邮件?

我正在尝试从本地主机发送邮件。 但是我无法从本地主机发送邮件 所以有人能告诉我如何重新配置我的xampp从localhost

发送邮件
697073 次浏览

你必须在你的服务器上配置SMTP。你可以通过谷歌免费使用G Suite SMTP:

<?php


$mail = new PHPMailer(true);


// Send mail using Gmail
if($send_using_gmail){
$mail->IsSMTP(); // telling the class to use SMTP
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->SMTPSecure = "ssl"; // sets the prefix to the servier
$mail->Host = "smtp.gmail.com"; // sets GMAIL as the SMTP server
$mail->Port = 465; // set the SMTP port for the GMAIL server
$mail->Username = "your-gmail-account@gmail.com"; // GMAIL username
$mail->Password = "your-gmail-password"; // GMAIL password
}


// Typical mail data
$mail->AddAddress($email, $name);
$mail->SetFrom($email_from, $name_from);
$mail->Subject = "My Subject";
$mail->Body = "Mail contents";


try{
$mail->Send();
echo "Success!";
} catch(Exception $e){
// Something went bad
echo "Fail :(";
}


?>

阅读更多关于PHPMailer 在这里

你必须为此定义一个SMTP服务器和一个端口。除了从实时主机发送邮件。

这是一个有用的链接

NB:该端口应未被使用。请小心点,Some 像Skype这样的应用程序使用默认端口并通过阻止 发送邮件。< / p >

你可以用sendmail包从本地主机发送邮件,sendmail包是XAMPP内置的。 所以如果你使用XAMPP,那么你可以很容易地从localhost发送邮件

例如,你可以为gmail配置C:\xampp\php\php.inic:\xampp\sendmail\sendmail.ini来发送邮件。

C:\xampp\php\php.ini中找到extension=php_openssl.dll并从该行开始删除分号,以使SSL为gmail的localhost工作。

在php.ini文件中找到[mail function]并更改

SMTP=smtp.gmail.com
smtp_port=587
sendmail_from = my-gmail-id@gmail.com
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"

现在打开C:\xampp\sendmail\sendmail.ini。将sendmail.ini中的所有现有代码替换为以下代码

[sendmail]


smtp_server=smtp.gmail.com
smtp_port=587
error_logfile=error.log
debug_logfile=debug.log
auth_username=my-gmail-id@gmail.com
auth_password=my-gmail-password
force_sender=my-gmail-id@gmail.com

现在你做到了!!创建带有邮件功能的PHP文件,并从本地主机发送邮件。

PS:不要忘记替换上面代码中的my-gmail-idmy-gmail-password。 此外,如果你从上面复制了设置,不要忘记删除重复的键。例如,如果php.ini文件

.ini文件中有另一个sendmail_path: sendmail_path="C:\xampp\mailtodisk\mailtodisk.exe",则在该行后面注释

还记得使用XAMMP控制面板重新启动服务器,以便更改生效。

对于gmail,请检查https://support.google.com/accounts/answer/6010255以允许从不太安全的应用程序访问。

在Linux上通过Gmail发送电子邮件(使用sendmail包) localhost please check PHP+Ubuntu使用gmail表单发送电子邮件 localhost < / > . < / p >

我花了一个多小时才搞定。对于每个人都有同样的问题,所有的建议张贴不工作:你必须重新启动Apache在你的XAMPP inrerface!只是重新启动XAMPP行不通!!

在本地主机或本地服务器上发送电子邮件非常简单

注意:我使用的测试邮件服务器软件在Windows 7 64bit安装Xampp

只需下载测试邮件服务器工具,并根据其网站测试邮件服务器工具上的说明安装

现在你只需要改变php.ini文件下的两行

  1. 找到[mail function]并删除;smtp = localhost之前的分号
  2. sendmail_path = "C:\xampp\mailtodisk\mailtodisk.exe"之前加上分号

你不需要改变任何其他东西,但如果你仍然没有收到电子邮件,检查SMTP port,端口号必须是相同的。

以上方法是针对Xampp软件提供的默认设置。

在XAMPP v3.2.1中,出于测试目的,您可以在XAMPP/mailoutput中看到XAMPP发送的电子邮件。就我在Windows 8上的情况而言,这不需要任何额外的配置,是测试电子邮件的简单解决方案

您可以测试发送邮件在您的PC没有互联网

你应该使用剪纸这个简单的应用程序来测试发送邮件。你不需要配置任何东西。

只需运行它,并尝试测试发送邮件:

test_sendmail.php

<?php
$to = "somebody@example.com";
$subject = "My subject";
$txt = "Hello world!";
$headers = "From: webmaster@example.com" . "\r\n" .
"CC: somebodyelse@example.com";


mail($to,$subject,$txt,$headers);
?>

你会看到这个:

enter image description here

我希望你今天过得愉快。 你可以在Youtube上找到我,获得更多教程Piseth Sok

欢呼!

根据我的个人经验,我发现与Vikas Dwivedi非常相似的答案会很好地工作。

步骤1 (php.ini文件)

在php.ini文件中,位于xampp\php\php.ini。更改设置如下:

 extension=php_openssl.dll
[mail function]
sendmail_path =":\xampp7\sendmail\sendmail.exe -t"
mail.add_x_header=On

通过将;放在mail funciton下的其他变量前面来关闭它们。如;smtp_port=25

步骤2 (sendmail.ini文件)

在sendmail.ini位于xampp\sendmail\semdmail.ini更改为 : < / p >

 smtp_server=smtp.gmail.com
smtp_port=465
smtp_ssl=auto
auth_username=address@gmail.com
auth_password=YourPassword

步骤3(代码)

创建一个php文件,并使用以下命令:

 <?php
mail($to, "subject", "body", "From: ".$from);
?>

请注意

  • 为了重新加载php.ini,您需要重新启动apache。
  • 你需要在https://myaccount.google.com/u/1/security中激活谷歌不安全的应用程序访问
  • 使用管理员权限运行Xampp可能会有所帮助。

此代码用于从您的本地主机XAMPP和您的Gmail帐户发送邮件。 这段代码非常简单,为我工作,你自己试试

下面是修改php.ini文件

SMTP=smtp.gmail.com
smtp_port=587
sendmail_from = your@gmail.com
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"
extension=php_openssl.dll

下面是sendmail.ini文件中的Change

smtp_server=smtp.gmail.com
smtp_port=587
error_logfile=error.log
debug_logfile=debug.log
auth_username=yourmail@gmail.com
auth_password=your-gmail-password
force_sender=yourmail@gmail.com

请在你的PHP文件中写爱的代码来发送电子邮件

<?php
$to = "tomail@gmail.com";
$subject = "Test Mail";
$headers = "From: from_mail@gmail.com\r\n";
$headers .= "Reply-To: replytomail@gmail.com\r\n";
$headers .= "CC: theassassin.edu@gmail.com\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$message = '<html><body>';
$message .= '<img src="//css-tricks.com/examples/WebsiteChangeRequestForm/images/wcrf-header.png" alt="Website Change Request" />';
$message .= '<table rules="all" style="border-color: #666;" cellpadding="10">';
$message .= "<tr style='background: #eee;'><td><strong>Name:</strong> </td><td>Details</td></tr>";
$message .= "<tr><td><strong>Email:</strong> </td><td>Details</td></tr>";
$message .= "<tr><td><strong>Type of Change:</strong> </td><td>Details</td></tr>";
$message .= "<tr><td><strong>Urgency:</strong> </td><td>Details</td></tr>";
$message .= "<tr><td><strong>URL To Change (main):</strong> </td><td>Details</td></tr>";
$addURLS = 'google.com';
if (($addURLS) != '') {
$message .= "<tr><td><strong>URL To Change (additional):</strong> </td><td>" . $addURLS . "</td></tr>";
}
$curText = 'dummy text';
if (($curText) != '') {
$message .= "<tr><td><strong>CURRENT Content:</strong> </td><td>" . $curText . "</td></tr>";
}
$message .= "<tr><td><strong>NEW Content:</strong> </td><td>New Text</td></tr>";
$message .= "</table>";
$message .= "</body></html>";


if(mail($to,$subject,$message,$headers))
{
echo "Mail Send Sucuceed";
}
else{
echo "Mail Send Failed";
}
?>

我尝试了许多方法从XAMPP Localhost发送邮件,但由于XAMPP没有SSL证书,我的电子邮件请求被Gmail或类似的SMTP服务提供商阻止。

然后我使用MailHog为本地smtp服务器,你需要做的就是运行它。 Localhost:1025是SMTP服务器, Localhost:8025是邮件服务器,在那里你可以检查你发送的邮件

这是我的代码:

    require_once "src/PHPMailer.php";
require_once "src/SMTP.php";
require_once "src/Exception.php";


$mail = new PHPMailer\PHPMailer\PHPMailer();


//Server settings
$mail->SMTPDebug = 3;                      // Enable verbose debug output
$mail->isSMTP();                                            // Send using SMTP
$mail->Host       = 'localhost';                    // Set the SMTP server to send through
$mail->Port       = 1025;                                    // TCP port to connect to
// $mail->Username   = '';                     // SMTP username
// $mail->Password   = '';                               // SMTP password
// $mail->SMTPAuth   = true;                                   // Enable SMTP authentication
// $mail->SMTPSecure = 'tls';         // Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` also accepted


//Recipients
$mail->setFrom('testtoo@testto.com', 'Mailer');
$mail->addAddress('testtoo@webbamail.com', 'Joe User');     // Add a recipient


// Content
$mail->isHTML(true);                                  // Set email format to HTML
$mail->Subject = 'Here is the subject';
$mail->Body    = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';


if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}

MailHog Github Repository link

除了所有的答案,请注意在sendmail.ini文件中:

auth_password =融入于汉语--your-Gmail-password

由于新的谷歌安全问题,您应该按照以下步骤为此目的设置应用程序密码:

  1. 在安全选项卡中找到https://accounts.google.com/
  2. 使用任何可用选项打开两步验证
  3. 返回security选项卡(在同一部分,两步验证最初被发现的地方)并创建App-password (在选择-应用下拉菜单中,你可以选择“其他”)

最后,请注意,如果您只是使用一个应用程序,而不是自己编写php代码,则可能需要将Sendmail设置为首选选项。

作为管理员运行XAMPP还应该解决任何文件访问问题。