Browse Source

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

pull/50/head
Michael 9 years ago
parent
commit
0ba45eb745
3 changed files with 51 additions and 27 deletions
  1. +5
    -12
      include/delivery.php
  2. +40
    -1
      include/email.php
  3. +6
    -14
      include/notifier.php

+ 5
- 12
include/delivery.php View File

@ -438,14 +438,14 @@ function delivery_run($argv, $argc){
$file = tempnam("/tmp/friendica/", "mail-out-");
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: Data: ".print_r($it, true), LOGGER_DEBUG);
//logger("Mail: Data: ".print_r($it, true), LOGGER_DATA);
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'])) {
$r = q("SELECT `title` FROM `item` WHERE `parent-uri` = '%s' LIMIT 1",
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/plain; charset=UTF-8' . "\n";
$headers .= 'Content-Transfer-Encoding: 8bit' . "\n\n";
@ -469,7 +469,8 @@ function delivery_run($argv, $argc){
//$message = '<html><body>' . $html . '</body></html>';
$message = html2plain($html);
logger('notifier: email delivery to ' . $addr);
mail($addr, $subject, $message, $headers);
mail($addr, $subject, $message, $headers);*/
email_send($addr, $subject, $headers, $it);
}
break;
@ -527,14 +528,6 @@ function delivery_run($argv, $argc){
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){
delivery_run($argv,$argc);
killme();


+ 40
- 1
include/email.php View File

@ -1,4 +1,5 @@
<?php
require_once('include/html2plain.php');
function email_connect($mailbox,$username,$password) {
if(! function_exists('imap_open'))
@ -224,6 +225,44 @@ function email_header_encode($in_str, $charset) {
$out_str = $start . $out_str . $end;
}
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);
}

+ 6
- 14
include/notifier.php View File

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


Loading…
Cancel
Save