我的代码遇到了一个障碍。我正在跟随一些教程,我设法单独创建一个qr码生成器与QRCode.js(它需要从服务器的PersonID,转发它作为生成器的数据)。然而,由于我打算通过PHPMailer库将生成的qr码发送给接收者,我不知道如何将创建的qr码图像传输到PHPMailer的body或addatattachment。也许有人有什么主意可以帮我?
这是从服务器获取PersonID的代码
$select = "SELECT PersonID FROM Users WHERE FirstName='$FirstName' AND LastName='$LastName' AND Email='$Email'";
$query = mysqli_query($db, $select);
if(mysqli_num_rows($query) > 0){
$row = mysqli_fetch_assoc($query);
$personID = $row['PersonID'];
}
这是JS代码qr生成器
<script>
var personID = <?php echo $personID; ?>;
var QRImage = document.getElementById("QRImage");
var NewImage = new QRCode(QRImage, {
width: 200,
height: 200
});
function generateAndSubmit() {
var data = personID.value;
// Generate the QR code
NewImage.makeCode(data);
// Store the QR code value in the hidden input field
var qrCodeValueInput = document.getElementById("qrCodeValue");
qrCodeValueInput.value = QRImage.toDataURL();
}
</script>
这是PHPMailer的邮件表单
$mail->Subject = "Registration confrirmation";
$mail->Body = '<p>Thank you for registering!</p>
<li>First Name: '.$FirstName.'</li>
<li>Last Name: '.$LastName.'</li>
<li>Email: '.$Email.'</li>
<li>Age: '.$Age.'</li>
<li>Education: '.$Education.'</li>';
$mail->addAttachment($qrCodeValueInput);
我尝试了所有的方法,但是由于我有限的知识和对ChatGPT的普遍厌恶(我只是不认为它是最好的工具,可以为我做所有的事情,如果我没有正确地理解每件事是如何工作的),我没有结果-电子邮件甚至没有发送到收件人。在错误日志中指出addAttachment功能有问题。
你需要渲染它
<li>Education: '.$Education.'</li>
<li>QR: <img src="'.$qrCodeValueInput.'" /></li>';
如果你在画布元素中生成QR码,你可以使用.toDataURL('image/png')
来获得画布作为PNG。
https://github.com/cheprasov/js-qrcode
Stackoverflow:捕获HTML画布为GIF/JPG/PNG/PDF?