使用php发送邮件如果($服务器[“请求”方法]==“发布”)
我有一个php邮件脚本,使用php发送邮件如果($服务器[“请求”方法]==“发布”),php,pdo,Php,Pdo,我有一个php邮件脚本,sendmail.php,当我使用一个简单的html脚本和if(isset($\u POST['btn\u send'])命令运行它时,它就可以工作了 但是我想将这个脚本集成到一个php表单脚本中,solliciteerform.php。 表单首先验证用户输入,当没有错误时,通过准备好的语句PDO将用户输入发送到my mysql db 我用的就是这个 if (($_SERVER["REQUEST_METHOD"] == "POST") && $geslac
sendmail.php
,当我使用一个简单的html脚本和if(isset($\u POST['btn\u send'])
命令运行它时,它就可以工作了
但是我想将这个脚本集成到一个php表单脚本中,solliciteerform.php
。
表单首先验证用户输入,当没有错误时,通过准备好的语句PDO将用户输入发送到my mysql db
我用的就是这个
if (($_SERVER["REQUEST_METHOD"] == "POST") && $geslachtErr== "" && $voornaamErr== "" && $familienaamErr== "" && $emailErr== "" && $telErr== "" && $afileErr== "") {
$servername = "xxxxx.eu.mysql";
$username = "xxxxxx";
$password = "xxxxx";
try {
$conn = new PDO("mysql:host=$servername;dbname=xxxxxx", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
/***
irrelevant code
***/
if(move_uploaded_file($file_loc,$folder.$final_file))
{
// prepare sql and bind parameters
$stmt = $conn->prepare("INSERT INTO sollicitatie_form (geslacht, voornaam, familienaam, email, tel, afile, type)
VALUES (:geslacht, :voornaam, :familienaam, :email, :tel, :final_file, :file_type)");
$stmt->bindParam(':geslacht', $geslacht);
$stmt->bindParam(':voornaam', $voornaam);
$stmt->bindParam(':familienaam', $familienaam);
$stmt->bindParam(':email', $email);
$stmt->bindParam(':tel',$tel);
$stmt->bindParam(':final_file', $final_file);
$stmt->bindParam(':file_type', $file_type);
$stmt->execute();
?>
<script>
alert('successfully uploaded');
window.location.href='thank.php';
</script>
<?php
exit();
}
}
catch(PDOException $e)
{
echo "Error: " . $e->getMessage();
}
$conn->null;
}
但在数据发送到我的数据库之前
我尝试了两种解决方案,但都不奏效
解决方案1: 在我的
solliciteerform.php
的顶部添加include('Send-HTML-mail-In-php/mailer/sendmail.php');
而不是在我的sendmail.php中
I替换if(isset($\u POST['btn\u send'])
与:
结果是,solliciteerform.php
按预期运行,但我没有收到电子邮件
解决方案2: 在我的
solliciteerform.php
的顶部,我添加了:
include ('Send-HTML-mail-in-PHP/mailer/class.phpmailer.php');
然后在:
if (($_SERVER["REQUEST_METHOD"] == "POST") && $geslachtErr== "" && $voornaamErr== "" && $familienaamErr== "" && $emailErr== "" && $telErr== "" && $afileErr== ""){
我补充说:
$mail = new PHPMailer(true);
那之后呢
if (($_SERVER["REQUEST_METHOD"] == "POST") && $geslachtErr== "" && $voornaamErr== "" && $familienaamErr== "" && $emailErr== "" && $telErr== "" && $afileErr== ""){
我已经粘贴了sendmail.php
中的所有代码
当我这样做时,我的
solliciteerform.php
甚至没有运行。获取一个错误页面
对于我想要实现的目标,最好的解决方案是什么
在你的IF条件下,试着一次删除一个条件,看看是否可以修复它
if (($_SERVER["REQUEST_METHOD"] == "POST") && $geslachtErr== "" && $voornaamErr== "" && $familienaamErr== "" && $emailErr== "" && $telErr== ""){
然后
然后
等等
最后,如果您已经在sendmail.php中创建了一个PHPMailer实例,那么就不需要重新创建它了……因为您已经在solliciteerform.php中包含了sendmail.php文件
因此,我将删除以下内容:
$mail = new PHPMailer(true);
希望这有帮助
-Rush您遇到了哪些错误?@B.Desai,无法加载页面打开php错误报告。添加
错误报告(-1)
到脚本的开头。另外,您应该将邮件部分放在函数中,然后您可以在页面的开头包含包含函数的文件。并在需要时使用所需的变量调用它。不,您遇到了哪些PHP错误?也许您需要提高错误记录级别,但应该有一些错误记录错误消息的数量(可能在日志中)
if (($_SERVER["REQUEST_METHOD"] == "POST") && $geslachtErr== "" && $voornaamErr== "" && $familienaamErr== "" && $emailErr== "" && $telErr== ""){
if (($_SERVER["REQUEST_METHOD"] == "POST") && $geslachtErr== "" && $voornaamErr== "" && $familienaamErr== "" && $emailErr== ""){
if (($_SERVER["REQUEST_METHOD"] == "POST") && $geslachtErr== "" && $voornaamErr== "" && $familienaamErr== ""){
$mail = new PHPMailer(true);