我想通过PHPMAiler发送简报。新闻通讯确实有效,但我想知道是否有更好的选择。
我拥有的是什么。
现在我的代码如下所示
$mail = new PHPMailer();
//Adding the body
$body = file_get_contents('template/index.htm');
$mail->Subject = "PHPMailer Test Subject via mail(), basic";
$mail->AltBody = "To view this message, please use an HTML compatible email viewer!";
$mail->SetFrom('xxxxxxx', 'xxxxxxxxxx');
$address = ".......@gmail.com";
$mail->AddAddress($address, "xxxxxxx");
$mail->AddEmbeddedImage("template/images/bullet_point.gif","1");
$mail->AddEmbeddedImage("template/images/template_1_01.gif","2");
$mail->AddEmbeddedImage("template/images/template_1_03.gif","3");
$mail->MsgHTML($body);
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
我使用file_get_contents来获取html页面,使用AddEmbeddedImage来嵌入图像,现在有没有办法只将HTML页面传递给PHPMailer,PHP Mailer会自动嵌入这些图像?
答案 0 :(得分:1)
我不认为你想要做的是(自动添加所需图像)与PHPMailer“从头开始”。
也许您可以解析HTML以获取它链接到的图像列表?至少有两种方法可以做到这一点:
file_get_contents
的输出)使用DOMDocument::loadHTML
,并使用DOMDocument
的方法(和,为什么不,DOMXPath
?)要获取图片,我认为您的电子邮件中包含<img>
个标记,其中包含src
个属性;目标是找到那些值; - )
获得图像列表路径后,迭代它们,并在每个图像路径上调用$mail->AddEmbeddedImage
。
我想这样可以正常工作(虽然没试过,但我不明白为什么不会这样做)。
作为旁注,另一种方法是将图像保存在服务器上几天/几周/几个月,而不是将它们包含在邮件中;它会使邮件变小,这意味着:
为了确保在几周/月之前不会在服务器上删除/替换图像,您可以为每个新闻稿创建一个新目录,包含它的图像 - 并且偶尔会删除目录早于X
天。