我正在尝试为自定义联系人表单设置SMTP。
我已将最新的PHPMailer文件夹放置在我的主题文件夹中。
我为联系人表单创建了一个页面模板,并在其中添加了联系人表单的代码,下面添加了SMTP代码,如下所示,
<?php
require("PHPMailer/class.PHPMailer.php");
require \'PHPMailer/PHPMailerAutoload.php\';
$mail = new PHPMailer;
//$mail->SMTPDebug = 3; // Enable verbose debug output
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = \'localhost\'; // Specify main and backup SMTP servers
$mail->SMTPAuth = false; // Enable SMTP authentication
//$mail->Username = \'\'; // SMTP username
//$mail->Password = \'\'; // SMTP password
//$mail->SMTPSecure = \'tls\'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 25; // TCP port to connect to
$mail->setFrom($email, $sendername);
$mail->addAddress(\'[email protected]\', \'Joe User\'); // Add a recipient
//$mail->addAddress(\'[email protected]\'); // Name is optional
$mail->addReplyTo($email, $sendername);
$mail->addCC(\'[email protected]\');
//$mail->addBCC(\'[email protected]\');
//$mail->addAttachment(\'/var/tmp/file.tar.gz\'); // Add attachments
//$mail->addAttachment(\'/tmp/image.jpg\', \'new.jpg\'); // Optional name
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = \'Test Mail\';
$comment = $comment . "\\r\\n<br/>" . "<br/>\\r\\nIP Address: " . $id . "<br/>\\r\\nUser Agent: " . $browser . "<br/>\\r\\nUser Agent: " . "<br/>\\r\\nReferrer: " . $referrer . "<br/>\\r\\nCity: " . $city . "<br/>\\r\\nRegion: " . $region . "<br/>\\r\\nCountry: " . $country . "<br/>\\r\\nLatitude: " . $latitude . "<br/>\\r\\nLongitude: " . $longitude;
$mail->Body = $comment;
$mail->AltBody = $comment;
if($sendernameErrFlag == 0 && $emailErrFlag == 0 && $subjectErrFlag == 0 && $commentErrFlag == 0) {
$mail->send();
echo "hi";
$pagelink = the_permalink();
echo \'<div id="popup1" class="overlay">
<div class="popup">
<a class="close" href="\' . $pagelink . \'">×</a>
<div class="content">
Message sent successfully!!!
</div>
</div>
</div>\';
//echo \'<script>alert("Message sent successfully!!!");</script>\';
} else {
$sendernameErrFlag = $emailErrFlag = $subjectErrFlag = $commentErrFlag = 2;
}
?>
但当我提交联系人表单时,wordpress在到达写有require()的行时停止执行代码。任何和所有写在下面的代码都不会执行。
如果我将require()放在表单上方,那么表单也不会显示在页面中。如果我把它放在标题中,整个页面都不会显示。
这里有什么问题?为什么WordPress不接受并执行require()?
最合适的回答,由SO网友:IAmMilinPatel 整理而成
我注意到了require(), require_once(), include() and include_once()
这些方法不知何故不起作用。使用这些方法调用的文件没有被调用,代码从此点开始停止向前执行。
经过大量的谷歌搜索和R&;D我没有找到任何使上述方法起作用的解决方案。
所以我决定研究tweentysixteen
并发现WordPress有一个内置函数,用于包含其他PHP文件。
所以我想尝试一下class.PHPMailer.php and PHPMailerAutoload.php
文件。如果更改了线路
require("PHPMailer/class.PHPMailer.php");
require \'PHPMailer/PHPMailerAutoload.php\';
在我的代码中,
get_template_part(\'PHPMailer/class.PHPMailer\');
get_template_part(\'PPHPMailer/PHPMailerAutoload\');
最后,我解决了这个问题,联系人表单开始工作。