如何使用带有 XAMPP 的 PHP 从本地主机发送电子邮件?

Posted

技术标签:

【中文标题】如何使用带有 XAMPP 的 PHP 从本地主机发送电子邮件?【英文标题】:How to send email from localhost using PHP with XAMPP? 【发布时间】:2019-12-20 21:34:17 【问题描述】:

我想使用 php 和 Xampp 从 localhost 发送 Gmail 邮件。我尝试通过 Youtube 看教程。但即使我一步一步地遵循它仍然无法正常工作。我的PHP代码如下:

<?php
mail('mypersonalemail@gmail.com','Testing send email using PHP','Content 
here','From: otheremail@gmail.com');
?>

我还在“php.ini”文件和“sendmail.ini”中做了一些Xampp配置,如下所示:

1) php.ini:

    [mail function]
    ; For Win32 only.
    ; http://php.net/smtp
    SMTP=smtp.gmail.com
    ; http://php.net/smtp-port
    smtp_port=587

    ; For Win32 only.
    ; http://php.net/sendmail-from
    sendmail_from = mypersonalemail@gmail.com
    sendmail_path = "\"D:\xampp\sendmail\sendmail.exe\" -t"

2) 发送邮件.ini:

    smtp_server=smtp.gmail.com
    smtp_port=587
    auth_username=mypersonalemail@gmail.com
    auth_password=mygmailpassword

而我的PHP文件的文件位置是C:\xampp\htdocs\testemail.php

我使用http://localhost/testemail.php 运行本地主机。我也尝试将端口号更改为 25、587 和 465。如果我遗漏了什么,请指导我。

【问题讨论】:

您确定不对您的 gmail 帐户进行任何更改吗?也许是关于安全? 我已经更改了 gmail 帐户设置 请使用php邮件库 mail 函数不是此任务的正确工具。像 phpmailer 和 Zend\Mail 这样的邮件程序支持通过 SSL/TLS 发送邮件。 你能试试that answer的所有步骤吗? 【参考方案1】:

html

<!DOCTYPE html>
<html>
<head>
<title>FeedBack Form With Email Functionality</title>
<link href="css/elements.css" rel="stylesheet">
</head>
<!-- Body Starts Here -->
<body>
<div class="container">
<!-- Feedback Form Starts Here -->
<div id="feedback">
<!-- Heading Of The Form -->
<div class="head">
<h3>FeedBack Form</h3>
<p>This is feedback form. Send us your feedback !</p>
</div>
<!-- Feedback Form -->
<form action="#" id="form" method="post" name="form">
<input name="vname" placeholder="Your Name" type="text" value="">
<input name="vemail" placeholder="Your Email" type="text" value="">
<input name="sub" placeholder="Subject" type="text" value="">
<label>Your Suggestion/Feedback</label>
<textarea name="msg" placeholder="Type your text here..."></textarea>
<input id="send" name="submit" type="submit" value="Send Feedback">
</form>
<h3><?php include "secure_email_code.php"?></h3>
</div>
<!-- Feedback Form Ends Here -->
</div>
</body>
<!-- Body Ends Here -->
</html>

PHP

<?php
if(isset($_POST["submit"]))
// Checking For Blank Fields..
if($_POST["vname"]==""||$_POST["vemail"]==""||$_POST["sub"]==""||$_POST["msg"]=="")
echo "Fill All Fields..";
else
// Check if the "Sender's Email" input field is filled out
$email=$_POST['vemail'];
// Sanitize E-mail Address
$email =filter_var($email, FILTER_SANITIZE_EMAIL);
// Validate E-mail Address
$email= filter_var($email, FILTER_VALIDATE_EMAIL);
if (!$email)
echo "Invalid Sender's Email";

else
$subject = $_POST['sub'];
$message = $_POST['msg'];
$headers = 'From:'. $email2 . "rn"; // Sender's Email
$headers .= 'Cc:'. $email2 . "rn"; // Carbon copy to Sender
// Message lines should not exceed 70 characters (PHP rule), so wrap it
$message = wordwrap($message, 70);
// Send Mail By PHP Mail Function
mail("recievers_mail_id@xyz.com", $subject, $message, $headers);
echo "Your mail has been sent successfuly ! Thank you for your feedback";



?>

HTML 部分的 CSS

@import "http://fonts.googleapis.com/css?family=Raleway";
/*----------------------------------------------
CSS Settings For HTML Div ExactCenter
------------------------------------------------*/
h3,p,label 
text-align:center;
font-family:'Raleway',sans-serif;
color:#006400

h2 
font-family:'Raleway',sans-serif

input 
width:100%;
margin-bottom:20px;
padding:5px;
height:30px;
box-shadow:1px 1px 12px gray;
border-radius:3px;
border:none

textarea 
width:100%;
height:80px;
margin-top:10px;
padding:5px;
box-shadow:1px 1px 12px gray;
border-radius:3px

#send 
width:103%;
height:45px;
margin-top:40px;
border-radius:3px;
background-color:#cd853f;
border:1px solid #fff;
color:#fff;
font-family:'Raleway',sans-serif;
font-size:18px

div#feedback 
text-align:center;
height:520px;
width:330px;
padding:20px 25px 20px 15px;
background-color:#f3f3f3;
border-radius:3px;
border:1px solid #cd853f;
font-family:'Raleway',sans-serif;
float:left

.container 
width:960px;
margin:40px auto

【讨论】:

在 HTML 中,

这行是什么意思 secure_email_code.php 是否只是您为之前在此问题中的答案提供的 PHP 文件的名称? include "secure_email_code.php" 表示 php 被包含并且这个 php 启动。我在一个名为 secure_email_code.php 的单独文件中完成的 PHP 部分【参考方案2】:

尝试使用 PHPMailer 发送它是简单的解决方案

https://github.com/PHPMailer/PHPMailer/wiki/Tutorial

适用于 TLS/SSL smtp 连接(gmail 需要 TLS 连接)

【讨论】:

以上是关于如何使用带有 XAMPP 的 PHP 从本地主机发送电子邮件?的主要内容,如果未能解决你的问题,请参考以下文章

来自本地主机的 XAMPP 和 PHP 邮件

无法使用汞 XAMPP 从本地主机发送 Drupal 通知邮件

如何在带有 XAMPP 的 Mac 上使用 PHP 运行 ffmpeg

如何在Mac上的PHP中从Xampp本地主机发送邮件?

如何使用php从xampp发送具有匿名名称的电子邮件

使用xampp从本地主机向特定的电子邮件ID发送电子邮件[重复]