【发布时间】:2018-04-25 05:04:51
【问题描述】:
我想使用phpqrcode 库生成一个二维码,并将其作为嵌入在电子邮件正文中的图像发送(不附加到电子邮件中)。我正在使用PHPMailer 库来创建和发送电子邮件。
我使用的代码如下
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php';
include ('../phpqrcode/qrlib.php');
ob_start();
QRcode::png('TextToGenerateTheQRCodeFrom');
$imageString = base64_encode( ob_get_contents() );
ob_end_clean();
$mail = new PHPMailer;
$mail->setFrom( 'testqrsend@testqrsend.sdf', 'Test QR sender');
$mail->addAddress('xxxxxxxxxxx', 'John Doe');
$mail->Subject = 'QR code';
$mail->isHTML(true);
$mail->addStringEmbeddedImage($imageString,'qrcode');
$mail->Body = "<p> Your QR code </p><img src=\"cid:qrcode\" />";
if(!$mail->send()) {
echo 'Message was not sent.';
echo 'Mailer error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent.';
}
?>
这是我收到的电子邮件。
.
如您所见,图像并未嵌入电子邮件正文中。不过附上一个文件。该文件是一个文本文件,包含图像的 base64 值。
我做错了什么,我能做些什么来解决它?
【问题讨论】:
-
我相信 addStringEmbeddedImage 需要原始图像而不是 base64 编码版本。试试这个,看看它是否有效。
-
@Chris,我将原始图像作为 addStringEmbeddedImage 的第一个参数传递并检查。但是,图像仍然没有显示在电子邮件正文中
-
@Chris,当您说将原始图像传递给 addStringEmbeddedImage 函数时,我所做的是将 QRcode::png() 返回的值分配给变量 $img = QRcode::png ('TextToGenerateTheQRCodeFrom');然后将 $img 作为 addStringEmbeddedImage() 的第一个参数传递。这是你的意思吗?我现在问这个是因为当我再次阅读您的评论时,我觉得我做得不对
标签: php phpmailer html-email