我正在设置php邮件程序,当有人用信息填写我的表单时给我发送电子邮件。 目前它是文件" index.php"
上的单页网站这是我的php:
<?php
include("includes/class.phpmailer.php");
$mail = new PHPMailer;
$mail->setFrom($email, $name);
$mail->addAddress("myemail@gmail.com"); // Add a recipient
$mail->addReplyTo($email, $name);
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'Message From ' . $name;
$mail->Body = "
<h2>Message Details</h2>
<p>Name: {$name} </p>
<p>Email: {$email} </p>
<p>Phone: {$phone} </p>
";
?>
请注意我删除了我的电子邮件以保护隐私。
以下是我在同一&#34; index.php&#34;文件
<form id="contact" method="post" action="index.php">
<ul>
<h2>Contact</h2>
<li><input type="text" id="name" name="name" placeholder="Your Name" value="<?php echo $name; ?>"></li>
<li><input type="email" id="email" name="email" placeholder="Email Address" value="<?php echo $email; ?>"></li>
<li><input type="phone" id="phone" name="phone" placeholder="Phone Number" value="<?php echo $phone; ?>"></li>
<li><textarea name="message" id="message" placeholder="Your Message"> </textarea></li>
<li><input type="submit" id="submit" name="submit"></li>
</ul>
</form>
对于我的生活,我无法弄清楚为什么这不起作用,并希望得到任何帮助。谢谢
答案 0 :(得分:1)
您需要解析POST
请求,这是执行此操作的一种方法:
if(!empty($_POST['name'] && !empty($_POST['email'] && !empty($_POST['phone']){
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
include("includes/class.phpmailer.php");
//the rest of you code ...
//and finally $mail->Send()
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
}
注意:
答案 1 :(得分:1)
要使此表单生效,您需要添加
$mail->send()
如果您使用简单的谷歌,可以使用许多表单模板,或者使用这些论坛提供大量关于表单等的simalar问题。
解析字段的最简单方法是,你可以在这里阅读$ _POST http://php.net/manual/en/reserved.variables.post.php
$name = $_POST['name'];
您可能会发现此主题对于通读也很有用,可以让您更清楚地通过phpmailer发送表单数据。
答案 2 :(得分:0)
在index.php
中,仅在您拥有有效的POST值时才执行电子邮件。此外,我没有看到您实际通过$mail->send()
方法发送电子邮件。
它应该是这样的:
if (count($_POST) > 0 && isset($_POST['submit'])) {
include("includes/class.phpmailer.php");
$mail = new PHPMailer;
$mail->setFrom($email, $name);
$mail->addAddress("myemail@gmail.com"); // Add a recipient
$mail->addReplyTo($email, $name);
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'Message From ' . $name;
$mail->Body = "
<h2>Message Details</h2>
<p>Name: {$name} </p>
<p>Email: {$email} </p>
<p>Phone: {$phone} </p>
";
}
答案 3 :(得分:0)
要实际发送消息,请在拥有Subject,Body,addAddress等后调用Send()函数:
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
答案 4 :(得分:0)
我没看到
$mail->send()
但我看不到php脚本的结束。但是你忘记了吗?
如果你有,那么将$SMTPDebug
设置为大于0并查找phpmailer日志以查找错误
答案 5 :(得分:0)
如果您仍然无法发送电子邮件,则需要在服务器上查看托管公司的电子邮件设置。很多时候,如果您使用的是受欢迎的smtp
,则需要检查gmail smtp
设置。
您可能需要致电他们并获得一些支持,说明您无法发送电子邮件的原因。这是一个常见问题。
以下是使用phpmailer进行gmail SMTP
设置的示例。
$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host = "mail.yourdomain.com"; // SMTP server
$mail->SMTPDebug = 2; // enables SMTP debug information (for testing)
// 1 = errors and messages
// 2 = messages only
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->SMTPSecure = "tls"; // sets the prefix to the servier
$mail->Host = "smtp.gmail.com"; // sets GMAIL as the SMTP server
$mail->Port = 587; // set the SMTP port for the GMAIL server
$mail->Username = "yourusername@gmail.com"; // GMAIL username
$mail->Password = "yourpassword"; // GMAIL password