*
* $x= new Pman_Core_Mailer($opts)
*
- * $opts[
+ * $x= Pman_Core_Mailer(array(
page =>
contents
template
+ html_locale => 'en' == always use the 'english translated verison'
replaceImages => true|false,
locale => 'en' .... or zh_hk....
rcpts => array() // override recipients..
),
......
- ]
+ )
*
* recipents is gathered from the resulting template
* -- eg.
* if the file '
*
*
- * $x->asData(); // returns data needed for notify?? - notify should really
+ * $x->toData(); // returns data needed for notify?? - notify should really
* // just use this to pass around later..
*
* $x->send();
// for the html body, we may want to convert the attachments to images.
// var_dump($htmlbody);exit;
- $htmlbody = $this->htmlbodytoCID($htmlbody);
+ if ($this->replaceImages) {
+ $htmlbody = $this->htmlbodytoCID($htmlbody);
+ }
}
//exit;
}
- $isMine = false;
+ $isMime = false;
require_once 'Mail/mime.php';
$mime = new Mail_mime(array(
$cdata['contentid']
);
}
- $isMine = true;
-
-
+ $isMime = true;
}
- if($this->attachments){
+ if(!empty($this->attachments)){
//if got a attachments
- print_r($mime->headers($parts[1]));
+ $header = $mime->headers($parts[1]);
+
if (isset($parts[1]['Content-Type'])) {
unset($parts[1]['Content-Type']);
}
- $header = $mime->headers($parts[1]);
-// $mime->setTXTBody($parts[2]);
- if(preg_match('/text\/html/', $header['Content-Type'])){
- $mime->setHTMLBody($parts[2]);
- print_r('in html?');
+
+ if (!$isMime) {
+
+ if(preg_match('/text\/html/', $header['Content-Type'])){
+ $mime->setHTMLBody($parts[2]);
+ $mime->setTXTBody('This message is in HTML only');
+ }else{
+ $mime->setTXTBody($parts[2]);
+ $mime->setHTMLBody('<PRE>'.htmlspecialchars($parts[2]).'</PRE>');
+ }
}
-// print_r($mime->headers($parts[1]));
-// $mime->setHTMLBody($parts[2]);
foreach($this->attachments as $attch){
$mime->addAttachment(
$attch['file'],
$attch['mimetype'],
- $attch['name'],
- false
+ (!empty($attch['name'])) ? $attch['name'] : '',
+ true
);
}
-// print_r($mime);
- $isMine = true;
+ $isMime = true;
}
- if($isMine){
+ if($isMime){
$parts[2] = $mime->get();
$parts[1] = $mime->headers($parts[1]);
}
- echo '<PRE>';
- print_r('parts');
- print_r($parts[2]);
- exit;
+// echo '<PRE>';
+// print_r('parts');
+// print_r($parts[2]);
+// exit;
// list($recipents,$headers,$body) = $parts;
return array(
'recipents' => $parts[0],
'body' => $parts[2]
);
}
- function send()
+ function send($email = false)
{
- $email = $this->toData();
+ $pg = HTML_FlexyFramework::get()->page;
+
+
+ $email = is_array($email) ? $email : $this->toData();
if (is_a($email, 'PEAR_Error')) {
+ $pg->addEvent("COREMAILER-FAIL", false, "email toData failed");
+
+
return $email;
}
if ($this->debug) {
$mailOptions = PEAR::getStaticProperty('Mail','options');
//print_R($mailOptions);exit;
$mail = Mail::factory("SMTP",$mailOptions);
- $headers['Date'] = date('r');
+ $email['headers']['Date'] = date('r');
if (PEAR::isError($mail)) {
+ $pg->addEvent("COREMAILER-FAIL", false, "mail factory failed");
+
+
return $mail;
}
$rcpts = $this->rcpts == false ? $email['recipents'] : $this->rcpts;
$oe = error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT);
$ret = $mail->send($rcpts,$email['headers'],$email['body']);
error_reporting($oe);
+ if ($ret === true) {
+ $pg->addEvent("COREMAILER-SENT", false,
+ 'To: ' . ( is_array($rcpts) ? implode(', ', $rcpts) : $rcpts ) .
+ 'Subject: ' . @$email['headers']['Subject']
+ );
+ }
return $ret;
}
foreach ($imgs as $i=>$img) {
$url = $img->getAttribute('src');
+ if (preg_match('#^cid:#', $url)) {
+ continue;
+ }
$conv = $this->fetchImage($url);
$this->images[$conv['contentid']] = $conv;
$cache = ini_get('session.save_path')."/Pman_Core_Mailer-{$user}/" . md5($url);
if (file_exists($cache) and filemtime($cache) > strtotime('NOW - 1 WEEK')) {
- $ret = json_decode($cache);
+ $ret = json_decode(file_get_contents($cache), true);
$ret['file'] = $cache . '.data';
return $ret;
}