1
0
Fork 0

Sending mail as multipart/alternative (html and plain text) (very basic by now)

This commit is contained in:
Michael 2012-02-24 08:50:42 +01:00
parent f6320f3319
commit 0ba45eb745
3 changed files with 51 additions and 27 deletions

View file

@ -438,14 +438,14 @@ function delivery_run($argv, $argc){
$file = tempnam("/tmp/friendica/", "mail-out-"); $file = tempnam("/tmp/friendica/", "mail-out-");
file_put_contents($file, json_encode($it)); file_put_contents($file, json_encode($it));
$headers .= 'Message-Id: <' . cleanupmessageid($it['uri']). '>' . "\n"; $headers .= 'Message-Id: <' . email_cleanupmessageid($it['uri']). '>' . "\n";
//logger("Mail: uri: ".$it['uri']." parent-uri ".$it['parent-uri'], LOGGER_DEBUG); //logger("Mail: uri: ".$it['uri']." parent-uri ".$it['parent-uri'], LOGGER_DEBUG);
//logger("Mail: Data: ".print_r($it, true), LOGGER_DEBUG); //logger("Mail: Data: ".print_r($it, true), LOGGER_DEBUG);
//logger("Mail: Data: ".print_r($it, true), LOGGER_DATA); //logger("Mail: Data: ".print_r($it, true), LOGGER_DATA);
if($it['uri'] !== $it['parent-uri']) { if($it['uri'] !== $it['parent-uri']) {
$headers .= 'References: <' . cleanupmessageid($it['parent-uri']) . '>' . "\n"; $headers .= 'References: <' . email_cleanupmessageid($it['parent-uri']) . '>' . "\n";
if(! strlen($it['title'])) { if(! strlen($it['title'])) {
$r = q("SELECT `title` FROM `item` WHERE `parent-uri` = '%s' LIMIT 1", $r = q("SELECT `title` FROM `item` WHERE `parent-uri` = '%s' LIMIT 1",
dbesc($it['parent-uri']) dbesc($it['parent-uri'])
@ -461,7 +461,7 @@ function delivery_run($argv, $argc){
} }
} }
} }
$headers .= 'MIME-Version: 1.0' . "\n"; /*$headers .= 'MIME-Version: 1.0' . "\n";
//$headers .= 'Content-Type: text/html; charset=UTF-8' . "\n"; //$headers .= 'Content-Type: text/html; charset=UTF-8' . "\n";
$headers .= 'Content-Type: text/plain; charset=UTF-8' . "\n"; $headers .= 'Content-Type: text/plain; charset=UTF-8' . "\n";
$headers .= 'Content-Transfer-Encoding: 8bit' . "\n\n"; $headers .= 'Content-Transfer-Encoding: 8bit' . "\n\n";
@ -469,7 +469,8 @@ function delivery_run($argv, $argc){
//$message = '<html><body>' . $html . '</body></html>'; //$message = '<html><body>' . $html . '</body></html>';
$message = html2plain($html); $message = html2plain($html);
logger('notifier: email delivery to ' . $addr); logger('notifier: email delivery to ' . $addr);
mail($addr, $subject, $message, $headers); mail($addr, $subject, $message, $headers);*/
email_send($addr, $subject, $headers, $it);
} }
break; break;
@ -527,14 +528,6 @@ function delivery_run($argv, $argc){
return; return;
} }
function cleanupmessageid($messageid) {
global $a;
if (!strpos($messageid, '@'))
$messageid = str_replace(":", ".", $messageid).'@'.$a->get_hostname();
return($messageid);
}
if (array_search(__file__,get_included_files())===0){ if (array_search(__file__,get_included_files())===0){
delivery_run($argv,$argc); delivery_run($argv,$argc);
killme(); killme();

View file

@ -1,4 +1,5 @@
<?php <?php
require_once('include/html2plain.php');
function email_connect($mailbox,$username,$password) { function email_connect($mailbox,$username,$password) {
if(! function_exists('imap_open')) if(! function_exists('imap_open'))
@ -224,6 +225,44 @@ function email_header_encode($in_str, $charset) {
$out_str = $start . $out_str . $end; $out_str = $start . $out_str . $end;
} }
return $out_str; return $out_str;
} }
function email_send($addr, $subject, $headers, $item) {
//$headers .= 'MIME-Version: 1.0' . "\n";
//$headers .= 'Content-Type: text/html; charset=UTF-8' . "\n";
//$headers .= 'Content-Type: text/plain; charset=UTF-8' . "\n";
//$headers .= 'Content-Transfer-Encoding: 8bit' . "\n\n";
$html = prepare_body($item);
$headers .= "Mime-Version: 1.0\n";
$headers .= 'Content-Type: multipart/alternative; boundary="=_1f5dbdf8dbd0a060ea5bc3050bb14c6a"'."\n\n";
$body = "--=_1f5dbdf8dbd0a060ea5bc3050bb14c6a\n";
$body .= "Content-Transfer-Encoding: quoted-printable\n";
$body .= "Content-Type: text/plain; charset=utf-8; format=flowed\n\n";
$body .= html2plain($html)."\n";
$body .= "--=_1f5dbdf8dbd0a060ea5bc3050bb14c6a\n";
$body .= "Content-Transfer-Encoding: quoted-printable\n";
$body .= "Content-Type: text/html; charset=utf-8\n\n";
$body .= $html."\n\n";
$body .= "--=_1f5dbdf8dbd0a060ea5bc3050bb14c6a--\n";
//$message = '<html><body>' . $html . '</body></html>';
//$message = html2plain($html);
logger('notifier: email delivery to ' . $addr);
mail($addr, $subject, $body, $headers);
}
function email_cleanupmessageid($messageid) {
global $a;
if (!strpos($messageid, '@'))
$messageid = str_replace(":", ".", $messageid).'@'.$a->get_hostname();
return($messageid);
}

View file

@ -651,10 +651,10 @@ function notifier_run($argv, $argc){
$file = tempnam("/tmp/friendica/", "mail-out2-"); $file = tempnam("/tmp/friendica/", "mail-out2-");
file_put_contents($file, json_encode($it)); file_put_contents($file, json_encode($it));
$headers .= 'Message-Id: <' . cleanupmessageid($it['uri']) . '>' . "\n"; $headers .= 'Message-Id: <' . email_cleanupmessageid($it['uri']) . '>' . "\n";
if($it['uri'] !== $it['parent-uri']) { if($it['uri'] !== $it['parent-uri']) {
$headers .= 'References: <' . cleanupmessageid($it['parent-uri']) . '>' . "\n"; $headers .= 'References: <' . email_cleanupmessageid($it['parent-uri']) . '>' . "\n";
if(! strlen($it['title'])) { if(! strlen($it['title'])) {
$r = q("SELECT `title` FROM `item` WHERE `parent-uri` = '%s' LIMIT 1", $r = q("SELECT `title` FROM `item` WHERE `parent-uri` = '%s' LIMIT 1",
dbesc($it['parent-uri']) dbesc($it['parent-uri'])
@ -671,7 +671,7 @@ function notifier_run($argv, $argc){
} }
} }
$headers .= 'MIME-Version: 1.0' . "\n"; /*$headers .= 'MIME-Version: 1.0' . "\n";
//$headers .= 'Content-Type: text/html; charset=UTF-8' . "\n"; //$headers .= 'Content-Type: text/html; charset=UTF-8' . "\n";
$headers .= 'Content-Type: text/plain; charset=UTF-8' . "\n"; $headers .= 'Content-Type: text/plain; charset=UTF-8' . "\n";
$headers .= 'Content-Transfer-Encoding: 8bit' . "\n\n"; $headers .= 'Content-Transfer-Encoding: 8bit' . "\n\n";
@ -679,7 +679,8 @@ function notifier_run($argv, $argc){
//$message = '<html><body>' . $html . '</body></html>'; //$message = '<html><body>' . $html . '</body></html>';
$message = html2plain($html); $message = html2plain($html);
logger('notifier: email delivery to ' . $addr); logger('notifier: email delivery to ' . $addr);
mail($addr, $subject, $message, $headers); mail($addr, $subject, $message, $headers);*/
email_send($addr, $subject, $headers, $it);
} }
break; break;
case NETWORK_DIASPORA: case NETWORK_DIASPORA:
@ -726,7 +727,7 @@ function notifier_run($argv, $argc){
// we are the relay - send comments, likes and unlikes to our conversants // we are the relay - send comments, likes and unlikes to our conversants
diaspora_send_relay($target_item,$owner,$contact); diaspora_send_relay($target_item,$owner,$contact);
break; break;
} }
elseif(($top_level) && (! $walltowall)) { elseif(($top_level) && (! $walltowall)) {
// currently no workable solution for sending walltowall // currently no workable solution for sending walltowall
diaspora_send_status($target_item,$owner,$contact); diaspora_send_status($target_item,$owner,$contact);
@ -841,15 +842,6 @@ function notifier_run($argv, $argc){
return; return;
} }
function cleanupmessageid($messageid) {
global $a;
if (!strpos($messageid, '@'))
$messageid = str_replace(":", ".", $messageid).'@'.$a->get_hostname();
return($messageid);
}
if (array_search(__file__,get_included_files())===0){ if (array_search(__file__,get_included_files())===0){
notifier_run($argv,$argc); notifier_run($argv,$argc);
killme(); killme();