Answers:
您可以使用sendmail软件包从localhost发送邮件,sendmail软件包在XAMPP中是内置的。因此,如果您使用的是XAMPP,则可以轻松地从本地主机发送邮件。
例如,您可以配置C:\xampp\php\php.ini
和c:\xampp\sendmail\sendmail.ini
gmail发送邮件。
在该行的开头C:\xampp\php\php.ini
查找extension=php_openssl.dll
并删除分号,以使SSL适用于localhost的gmail。
在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-id和 my-gmail-password。此外,如果您从上方复制设置,请不要忘记删除重复的键。例如,如果在php.ini文件中还有另一个sendmail_path,则在下面的行中注释:sendmail_path="C:\xampp\mailtodisk\mailtodisk.exe"
还请记住使用XAMMP控制面板重新启动服务器,以使更改生效。
对于gmail,请检查https://support.google.com/accounts/answer/6010255以允许不安全的应用访问。
要通过Linux从localhost通过Gmail发送电子邮件(带有sendmail软件包),请选中PHP + Ubuntu使用gmail形式localhost发送电子邮件。
在出于测试目的的XAMPP v3.2.1中,您可以在XAMPP / mailoutput中查看XAMPP发送的电子邮件。就Windows 8而言,这不需要任何其他配置,并且是测试电子邮件的简单解决方案
c:\xampp\php\php.ini
,查找[mail function]
并取消注释提到的行mailtodisk.exe
。除该行外,使本节中的所有其他行都被注释掉mail.add_x_header
。
sendmail_path="C:\xampp\mailtodisk\mailtodisk.exe"
在本地主机或本地服务器上发送电子邮件非常简单
注意:我在安装了Xampp的Windows 7 64bit上使用测试邮件服务器软件
只需下载测试邮件服务器工具并按照其网站上的说明安装测试邮件服务器工具
现在您只需要在php.ini
文件下更改两行
[mail function]
并删除之前的半冒号;smtp = localhost
sendmail_path = "C:\xampp\mailtodisk\mailtodisk.exe"
您无需更改其他任何内容,但是如果您仍然没有收到电子邮件(仅检查)SMTP port
,则端口号必须相同。
上面的方法适用于Xampp软件提供的默认设置。
您应该使用Papercut这个简单的应用程序来测试发送邮件。而且您不需要进行任何配置。
只需运行它并尝试测试发送邮件:
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);
?>
您将看到:
希望您过得愉快。您可以在YouTube上找到我,以获取更多教程Piseth Sok
欢呼!
您必须在服务器上配置SMTP。您可以免费使用Google提供的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
在此处了解更多信息。
根据我的亲身经历,我发现与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文件)
在xampp \ sendmail \ semdmail.ini中的sendmail.ini中,更改为以下内容:
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);
?>
注意
此代码用于来自您的本地主机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文件中的更改
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文件中写入belove代码以发送电子邮件
<?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!";
}
除了所有答案外,请注意以下内容sendmail.ini
:
auth_password =这不是您的Gmail密码
由于新的Google安全问题,您应按照以下步骤为此目的输入应用程序密码: