我想在 href标签中使用它的参数调用sendEmail($ email)函数,当我点击链接时我得到一个页面写在其中FORBIDDEN"你没有权限访问此服务器上的根文件夹"
<?php
require 'PHPMailer-master/PHPMailerAutoload.php';
function sendEmail($email) {
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'zebalaGP@gmail.com'; // SMTP username
$mail->Password = '******'; // SMTP password
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->From = 'zebalaGP@gmail.com';
$mail->FromName = 'ana grin emoticon';
$mail->addAddress($email); // Add a recipient
$mail->isHTML(true);
$mail->Subject = 'blabla !';
$mail->Body = 'Salam,, <br> <b> thanks for your participation grin emoticon you are especial for us grin emoticon ';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
if (!$mail->send()) {
echo 'no';
return false;
} else {
echo 'sent grin emoticon';
return true;
}
}
$email='ayaradwan_93@yahoo.com';
//sendEmail($email);
$r=' <a href= ".<?php sendEmail($email); ?>." > Send Email </a> ';
echo $r;
?>
答案 0 :(得分:1)
您正在混合服务器端代码和客户端代码。他们在完全不同的上下文中完全不同的时间运行 (通常)完全不同的计算机。
目前还不清楚您的代码究竟会做什么,但是在请求页面时,您可能会立即执行sendEmail()
函数 。然后,由于您没有回显任何结果,a
标记如下所示:
<a href="">Send Email</a>
两件事:
href
将尝试加载当前页面或某些默认目录列表或其他内容。肯定不会调用服务器端代码。你想要做的事情比你想象的要多一些。到目前为止,最简单的方法是将所有电子邮件功能移动到另一个页面。像sendMail.php
这样的东西。然后,您在这里的页面将链接到另一个页面:
<a href="sendMail.php">Send Email</a>
当用户点击该链接时,他们会调用第二个页面,该页面本身会在内部调用sendEmail()
,然后向用户显示结果。类似的东西:
<?php
// define sendEmail here like you already do
sendEmail();
?>
<p>The email has been sent. Thank you!</p>
因此发送电子邮件的请求来自一个页面,实际发送的操作是另一个页面。
您可以通过各种方式使功能越来越丰富:
sendEmail.php
的表单,而不是链接,以便在撰写电子邮件时使用这些值。sendEmail.php
创建一个AJAX请求,以便在不离开当前页面的情况下发送邮件。但基本思想是您的服务器端代码和客户端代码无法直接交互。它们由HTTP请求分隔。如果客户端代码想要调用某些服务器端功能,则需要向服务器端资源(在本例中为“页面”)发出HTTP请求,该资源执行该操作。
答案 1 :(得分:0)
您可以做的是GET
指向带有<?php
require 'PHPMailer-master/PHPMailerAutoload.php';
function sendEmail($email) {
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'zebalaGP@gmail.com'; // SMTP username
$mail->Password = '******'; // SMTP password
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->From = 'zebalaGP@gmail.com';
$mail->FromName = 'ana grin emoticon';
$mail->addAddress($email); // Add a recipient
$mail->isHTML(true);
$mail->Subject = 'blabla !';
$mail->Body = 'Salam,, <br> <b> thanks for your participation grin emoticon you are especial for us grin emoticon ';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
if (!$mail->send()) {
echo 'no';
return false;
} else {
echo 'sent grin emoticon';
return true;
}
}
$email='ayaradwan_93@yahoo.com';
$r=' <a href= "your_page_file_name.php?mail='.$email.'" > Send Email </a> ';
//sendEmail($email);
if(isset($_GET['mail'])){
sendEmail($_GET['mail']);
}else{
echo $r;
}
?>
参数的php页面的链接。然后,在您的php页面中,如果设置了GET参数,则使用它们发送电子邮件。
如果你希望它是同一页面,它可能是这样的。
{{1}}
这可能是您实现所需内容的最简单方法,但我强烈建议最好的方法是提交表单或通过AJAX。