Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>I'm using this function that find all images in my letter and attaches it to the message.</p> <p><strong>Parameters:</strong> Takes your HTML (which you want to send);<br> <strong>Return:</strong> The necessary HTML and headers, which you can use in <code>mail()</code>;</p> <p><strong>Example usage:</strong> </p> <pre><code>define("DEFCALLBACKMAIL", "yourmail@yourdomain.com"); // WIll be shown as "from". $final_msg = preparehtmlmail($html); // give a function your html* mail('your@mail.com', 'your subject', $final_msg['multipart'], $final_msg['headers']); // send email with all images from html attached to letter function preparehtmlmail($html) { preg_match_all('~&lt;img.*?src=.([\/.a-z0-9:_-]+).*?&gt;~si',$html,$matches); $i = 0; $paths = array(); foreach ($matches[1] as $img) { $img_old = $img; if(strpos($img, "http://") == false) { $uri = parse_url($img); $paths[$i]['path'] = $_SERVER['DOCUMENT_ROOT'].$uri['path']; $content_id = md5($img); $html = str_replace($img_old,'cid:'.$content_id,$html); $paths[$i++]['cid'] = $content_id; } } $boundary = "--".md5(uniqid(time())); $headers .= "MIME-Version: 1.0\n"; $headers .="Content-Type: multipart/mixed; boundary=\"$boundary\"\n"; $headers .= "From: ".DEFCALLBACKMAIL."\r\n"; $multipart = ''; $multipart .= "--$boundary\n"; $kod = 'utf-8'; $multipart .= "Content-Type: text/html; charset=$kod\n"; $multipart .= "Content-Transfer-Encoding: Quot-Printed\n\n"; $multipart .= "$html\n\n"; foreach ($paths as $path) { if(file_exists($path['path'])) $fp = fopen($path['path'],"r"); if (!$fp) { return false; } $imagetype = substr(strrchr($path['path'], '.' ),1); $file = fread($fp, filesize($path['path'])); fclose($fp); $message_part = ""; switch ($imagetype) { case 'png': case 'PNG': $message_part .= "Content-Type: image/png"; break; case 'jpg': case 'jpeg': case 'JPG': case 'JPEG': $message_part .= "Content-Type: image/jpeg"; break; case 'gif': case 'GIF': $message_part .= "Content-Type: image/gif"; break; } $message_part .= "; file_name = \"$path\"\n"; $message_part .= 'Content-ID: &lt;'.$path['cid']."&gt;\n"; $message_part .= "Content-Transfer-Encoding: base64\n"; $message_part .= "Content-Disposition: inline; filename = \"".basename($path['path'])."\"\n\n"; $message_part .= chunk_split(base64_encode($file))."\n"; $multipart .= "--$boundary\n".$message_part."\n"; } $multipart .= "--$boundary--\n"; return array('multipart' =&gt; $multipart, 'headers' =&gt; $headers); } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload