如何在 phpmailer 中嵌入图像 - 我做不到,为啥?
Posted
技术标签:
【中文标题】如何在 phpmailer 中嵌入图像 - 我做不到,为啥?【英文标题】:How to embed image in phpmailer - I can't do it, why?如何在 phpmailer 中嵌入图像 - 我做不到,为什么? 【发布时间】:2016-03-29 17:49:08 【问题描述】:我正在尝试在 phpmailer 中将图像包含在我的消息中。以下是我的代码,正在发送邮件但没有嵌入图像,而是似乎附加到电子邮件中。 不知道我的代码有什么问题,请帮忙?
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<?php
require_once('class.phpmailer.php');
require_once('class.smtp.php');
$mail = new PHPMailer();
$mail->CharSet = "UTF-8";
$mail->From = "xxxxx";
$mail->FromName = "Jan Nowak";
$mail->AddReplyTo('xxxx');
$mail->Host = "xxxxxx";
$mail->Mailer = "smtp";
$mail->SMTPAuth = true;
$mail->Username = "xxxxx";
$mail->Password = "xxxxxx";
$mail->Port = xxx; usługi poczty
$mail->Subject = "temat";
$mail->Body = 'treść maila';
$mail->IsHTML(true);
$mail->AddEmbeddedImage('images/Kartka.png', 'Kartka');
$mail->Body = "<h1>Test 1 of PHPMailer html</h1><p>This is a test</p>";
"<p>This is a test picture: <img src=\"images/Kartka.png\" /></p>";
//$mail->addAttachment ('images/Kartka.jpg');
$mail->AddAddress ("xxxxx");
if($mail->Send())
echo 'E-mail został wysłany';
else
echo 'E-mail nie mógł zostać wysłany';
?>
</html>
</head>
【问题讨论】:
Send email with PHPMailer - embed image in body的可能重复 另外看看msgHTML()
方法。
【参考方案1】:
在<img>
标签上添加src='cid:Kartka'
$mail->AddEmbeddedImage('images/Kartka.png', 'Kartka');
$mail->Body = "<h1>Test 1 of PHPMailer html</h1><p>This is a test</p>";
"<p>This is a test picture: <img src=\"cid:Kartka\" /></p>";
你为什么用这么多\??你也可以这样做:
<img src="cid:Kartka"/>
【讨论】:
$mail->AddEmbeddedImage('images/Kartka.png', 'Kartka'); $mail->Body = "PHPMailer html 测试 1
这是一个测试
"; "这是一张测试图:
"; - 但它仍然不起作用.... 所以现在我喜欢这个,因为如果我喜欢这个 - 它说 Parse error: syntax error, unexpected T_STRING in /home/ln168827/public_html/第 27 行的 phpmail/index.php - 我完全理解了您在 标记上添加 src='cid:Kartka' 的意思 不要使用斜线:/ - 我可以在聊天中进一步帮助您吗?【参考方案2】:在您希望图像出现在正文中的位置添加此标记
$mail->Body = "... <img src='cid:logo.png> ..";
$mail->AddEmbeddedImage($_SERVER['DOCUMENT_ROOT']."[path_to_image] logo.png",'logo.png','logo.png');
适用于 Outlook 和所有其他电子邮件客户端软件
【讨论】:
【参考方案3】:这不起作用的原因是您没有将包含图像 html 的字符串分配给电子邮件正文中使用的变量。问题在于第二行的分号以及第三行字符串中引用图像的方式。
$mail->AddEmbeddedImage('images/Kartka.png', 'Kartka');
$mail->Body = "<h1>Test 1 of PHPMailer html</h1><p>This is a test</p>";
"<p>This is a test picture: <img src=\"images/Kartka.png\" /></p>";
应该是
$mail->AddEmbeddedImage('images/Kartka.png', 'Kartka');
$mail->Body = "<h1>Test 1 of PHPMailer html</h1><p>This is a test</p>".
"<p>This is a test picture: <img src=\"cid:Kartka\" /></p>";
或者
$mail->AddEmbeddedImage('images/Kartka.png', 'Kartka');
$mail->Body = "<h1>Test 1 of PHPMailer html</h1><p>This is a test</p><p>This is a test picture: <img src=\"cid:Kartka\" /></p>";
【讨论】:
以上是关于如何在 phpmailer 中嵌入图像 - 我做不到,为啥?的主要内容,如果未能解决你的问题,请参考以下文章