PhpMailer无法使用html

时间:2018-08-16 12:59:49

标签: php email phpmailer

我正在使用PhpMailer类发送包含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;
            }

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

您可以使用AddEmbeddedImage方法将图像附加到您的身体上。因此您的代码应如下所示。

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

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

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