PhpMailer 无法使用 html

PhpMailer not working with html

我正在使用 PhpMailer class 发送包含 html 的电子邮件,我注意到如果电子邮件的正文包含 img 标记电子邮件未收到并且没有错误显示。

有什么建议吗?

到目前为止我的代码:

            $mail = new PHPMailer();
            $mail->IsSMTP();
            $mail->SMTPAuth = true;
            $mail->SMTPSecure = 'ssl';
            $mail->Host = "smtp.gmail.com";
            $mail->Port = 465;

            $mail->Username = "myusername";
            $mail->Password = "mypassword";


                $mail->setFrom($from);
                $mail->addAddress($to);

            $mail->Subject = $subject;
            $mail->Body =$body;
            $mail->IsHTML(true); 

            if ($mail->send()) {
                return 1;
            } else {

                return 0;
            }

如果您尝试从本地主机发送它并在 gmail 中阅读,它将无法工作,因为 gmail 经常创建代理图像链接。您需要发送指向互联网可访问位置的图像链接。大概就是这样。 如果您要发送带有互联网访问位置链接的电子邮件,请将它们附加到问题中,我也会更新答案。

EIDT:与提问者聊天后,确定电子邮件 HTML 缺少正常的 HTML 标记:<html><body>ACTUALCONTENT</body></html>,添加这些后,图像正确显示。

您可以使用 AddEmbeddedImage 方法将图像附加到您的 body。所以你的代码应该是这样的。

$mail->AddEmbeddedImage($_REQUEST['image_name'], 'ImageName');

然后在您的 $body 中您可以使用这张图片

$body.= "<img src='cid:ImageName' />";