如何使用带有 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】:
<!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 从本地主机发送 Drupal 通知邮件