add text-only email option

add a checkbok to notification settings. if checked, html body is not added to email.
This commit is contained in:
fabrixxm 2015-01-20 19:19:58 +01:00
parent c86d459b1d
commit b2527039b7
5 changed files with 39 additions and 16 deletions

View File

@ -20,6 +20,11 @@ class Emailer {
call_hooks('emailer_send_prepare', $params); call_hooks('emailer_send_prepare', $params);
$email_textonly = False;
if (x($params,"uid")) {
$email_textonly = get_pconfig($params['uid'], "system", "email_textonly");
}
$fromName = email_header_encode(html_entity_decode($params['fromName'],ENT_QUOTES,'UTF-8'),'UTF-8'); $fromName = email_header_encode(html_entity_decode($params['fromName'],ENT_QUOTES,'UTF-8'),'UTF-8');
$messageSubject = email_header_encode(html_entity_decode($params['messageSubject'],ENT_QUOTES,'UTF-8'),'UTF-8'); $messageSubject = email_header_encode(html_entity_decode($params['messageSubject'],ENT_QUOTES,'UTF-8'),'UTF-8');
@ -44,11 +49,16 @@ class Emailer {
"--" . $mimeBoundary . "\n" . // plain text section "--" . $mimeBoundary . "\n" . // plain text section
"Content-Type: text/plain; charset=UTF-8\n" . "Content-Type: text/plain; charset=UTF-8\n" .
"Content-Transfer-Encoding: base64\n\n" . "Content-Transfer-Encoding: base64\n\n" .
$textBody . "\n" . $textBody . "\n";
"--" . $mimeBoundary . "\n" . // text/html section
"Content-Type: text/html; charset=UTF-8\n" . if (!$email_textonly && !is_null($htmlBody)){
"Content-Transfer-Encoding: base64\n\n" . $multipartMessageBody .=
$htmlBody . "\n" . "--" . $mimeBoundary . "\n" . // text/html section
"Content-Type: text/html; charset=UTF-8\n" .
"Content-Transfer-Encoding: base64\n\n" .
$htmlBody . "\n";
}
$multipartMessageBody .=
"--" . $mimeBoundary . "--\n"; // message ending "--" . $mimeBoundary . "--\n"; // message ending
// send the message // send the message
@ -58,6 +68,7 @@ class Emailer {
'body' => $multipartMessageBody, 'body' => $multipartMessageBody,
'headers' => $messageHeader 'headers' => $messageHeader
); );
echo "<pre>"; var_dump($hookdata); killme();
call_hooks("emailer_send", $hookdata); call_hooks("emailer_send", $hookdata);
$res = mail( $res = mail(
$hookdata['to'], // send to address $hookdata['to'], // send to address

View File

@ -395,6 +395,8 @@ function settings_post(&$a) {
$post_joingroup = (($_POST['post_joingroup'] == 1) ? 1: 0); $post_joingroup = (($_POST['post_joingroup'] == 1) ? 1: 0);
$post_profilechange = (($_POST['post_profilechange'] == 1) ? 1: 0); $post_profilechange = (($_POST['post_profilechange'] == 1) ? 1: 0);
$email_textonly = (($_POST['email_textonly'] == 1) ? 1 : 0);
$notify = 0; $notify = 0;
if(x($_POST,'notify1')) if(x($_POST,'notify1'))
@ -495,6 +497,7 @@ function settings_post(&$a) {
set_pconfig(local_user(),'system','post_joingroup', $post_joingroup); set_pconfig(local_user(),'system','post_joingroup', $post_joingroup);
set_pconfig(local_user(),'system','post_profilechange', $post_profilechange); set_pconfig(local_user(),'system','post_profilechange', $post_profilechange);
set_pconfig(local_user(),'system','email_textonly', $email_textonly);
if($page_flags == PAGE_PRVGROUP) { if($page_flags == PAGE_PRVGROUP) {
$hidewall = 1; $hidewall = 1;
@ -505,7 +508,7 @@ function settings_post(&$a) {
} }
else { else {
notice( t('Private forum has no privacy permissions and no default privacy group.') . EOL); notice( t('Private forum has no privacy permissions and no default privacy group.') . EOL);
} }
} }
} }
@ -656,7 +659,7 @@ function settings_content(&$a) {
} }
$r = q("SELECT clients.*, tokens.id as oauth_token, (clients.uid=%d) AS my $r = q("SELECT clients.*, tokens.id as oauth_token, (clients.uid=%d) AS my
FROM clients FROM clients
LEFT JOIN tokens ON clients.client_id=tokens.client_id LEFT JOIN tokens ON clients.client_id=tokens.client_id
WHERE clients.uid IN (%d,0)", WHERE clients.uid IN (%d,0)",
@ -830,7 +833,7 @@ function settings_content(&$a) {
$is_experimental = file_exists('view/theme/' . $th . '/experimental'); $is_experimental = file_exists('view/theme/' . $th . '/experimental');
$unsupported = file_exists('view/theme/' . $th . '/unsupported'); $unsupported = file_exists('view/theme/' . $th . '/unsupported');
$is_mobile = file_exists('view/theme/' . $th . '/mobile'); $is_mobile = file_exists('view/theme/' . $th . '/mobile');
if (!$is_experimental or ($is_experimental && (get_config('experimentals','exp_themes')==1 or get_config('experimentals','exp_themes')===false))){ if (!$is_experimental or ($is_experimental && (get_config('experimentals','exp_themes')==1 or get_config('experimentals','exp_themes')===false))){
$theme_name = (($is_experimental) ? sprintf("%s - \x28Experimental\x29", $f) : $f); $theme_name = (($is_experimental) ? sprintf("%s - \x28Experimental\x29", $f) : $f);
if($is_mobile) { if($is_mobile) {
$mobile_themes[$f]=$theme_name; $mobile_themes[$f]=$theme_name;
@ -1078,8 +1081,8 @@ function settings_content(&$a) {
'items' => array('expire_items', t("Expire posts:"), $expire_items, '', array(t('No'),t('Yes'))), 'items' => array('expire_items', t("Expire posts:"), $expire_items, '', array(t('No'),t('Yes'))),
'notes' => array('expire_notes', t("Expire personal notes:"), $expire_notes, '', array(t('No'),t('Yes'))), 'notes' => array('expire_notes', t("Expire personal notes:"), $expire_notes, '', array(t('No'),t('Yes'))),
'starred' => array('expire_starred', t("Expire starred posts:"), $expire_starred, '', array(t('No'),t('Yes'))), 'starred' => array('expire_starred', t("Expire starred posts:"), $expire_starred, '', array(t('No'),t('Yes'))),
'photos' => array('expire_photos', t("Expire photos:"), $expire_photos, '', array(t('No'),t('Yes'))), 'photos' => array('expire_photos', t("Expire photos:"), $expire_photos, '', array(t('No'),t('Yes'))),
'network_only' => array('expire_network_only', t("Only expire posts by others:"), $expire_network_only, '', array(t('No'),t('Yes'))), 'network_only' => array('expire_network_only', t("Only expire posts by others:"), $expire_network_only, '', array(t('No'),t('Yes'))),
); );
require_once('include/group.php'); require_once('include/group.php');
@ -1175,10 +1178,13 @@ function settings_content(&$a) {
'$notify3' => array('notify3', t('Someone writes on your profile wall'), ($notify & NOTIFY_WALL), NOTIFY_WALL, ''), '$notify3' => array('notify3', t('Someone writes on your profile wall'), ($notify & NOTIFY_WALL), NOTIFY_WALL, ''),
'$notify4' => array('notify4', t('Someone writes a followup comment'), ($notify & NOTIFY_COMMENT), NOTIFY_COMMENT, ''), '$notify4' => array('notify4', t('Someone writes a followup comment'), ($notify & NOTIFY_COMMENT), NOTIFY_COMMENT, ''),
'$notify5' => array('notify5', t('You receive a private message'), ($notify & NOTIFY_MAIL), NOTIFY_MAIL, ''), '$notify5' => array('notify5', t('You receive a private message'), ($notify & NOTIFY_MAIL), NOTIFY_MAIL, ''),
'$notify6' => array('notify6', t('You receive a friend suggestion'), ($notify & NOTIFY_SUGGEST), NOTIFY_SUGGEST, ''), '$notify6' => array('notify6', t('You receive a friend suggestion'), ($notify & NOTIFY_SUGGEST), NOTIFY_SUGGEST, ''),
'$notify7' => array('notify7', t('You are tagged in a post'), ($notify & NOTIFY_TAGSELF), NOTIFY_TAGSELF, ''), '$notify7' => array('notify7', t('You are tagged in a post'), ($notify & NOTIFY_TAGSELF), NOTIFY_TAGSELF, ''),
'$notify8' => array('notify8', t('You are poked/prodded/etc. in a post'), ($notify & NOTIFY_POKE), NOTIFY_POKE, ''), '$notify8' => array('notify8', t('You are poked/prodded/etc. in a post'), ($notify & NOTIFY_POKE), NOTIFY_POKE, ''),
'$email_textonly' => array('email_textonly', t('Text-only notification emails'),
get_pconfig(local_user(),'system','email_textonly'),
t('Send only text notification emails body, without the html part')),
'$h_advn' => t('Advanced Account/Page Type Settings'), '$h_advn' => t('Advanced Account/Page Type Settings'),
'$h_descadvn' => t('Change the behaviour of this account for special situations'), '$h_descadvn' => t('Change the behaviour of this account for special situations'),

View File

@ -86,7 +86,7 @@
<div id="settings-default-perms-menu-end"></div> <div id="settings-default-perms-menu-end"></div>
<div id="settings-default-perms-select" style="display: none; margin-bottom: 20px" > <div id="settings-default-perms-select" style="display: none; margin-bottom: 20px" >
<div style="display: none;"> <div style="display: none;">
<div id="profile-jot-acl-wrapper" style="width:auto;height:auto;overflow:auto;"> <div id="profile-jot-acl-wrapper" style="width:auto;height:auto;overflow:auto;">
{{$aclselect}} {{$aclselect}}
@ -133,6 +133,8 @@
{{include file="field_intcheckbox.tpl" field=$notify8}} {{include file="field_intcheckbox.tpl" field=$notify8}}
</div> </div>
{{include file="field_checkbox.tpl" field=$email_textonly}}
</div> </div>
<div class="settings-submit-wrapper" > <div class="settings-submit-wrapper" >

View File

@ -87,7 +87,7 @@
<div id="settings-default-perms-menu-end"></div> <div id="settings-default-perms-menu-end"></div>
<div id="settings-default-perms-select" style="display: none; margin-bottom: 20px" > <div id="settings-default-perms-select" style="display: none; margin-bottom: 20px" >
<div style="display: none;">-->*}} <div style="display: none;">-->*}}
<div id="settings-jot-acl-wrapper" style="width:auto;height:auto;overflow:auto;margin-bottom: 20px"> <div id="settings-jot-acl-wrapper" style="width:auto;height:auto;overflow:auto;margin-bottom: 20px">
{{*<!--{{$aclselect}}-->*}} {{*<!--{{$aclselect}}-->*}}
@ -133,6 +133,8 @@
{{include file="field_intcheckbox.tpl" field=$notify8}} {{include file="field_intcheckbox.tpl" field=$notify8}}
</div> </div>
{{include file="field_checkbox.tpl" field=$email_textonly}}
</div> </div>
<div class="settings-submit-wrapper" > <div class="settings-submit-wrapper" >

View File

@ -85,7 +85,7 @@
<div id="settings-default-perms-menu-end"></div> <div id="settings-default-perms-menu-end"></div>
{{*<!-- <div id="settings-default-perms-select" style="display: none; margin-bottom: 20px" >-->*}} {{*<!-- <div id="settings-default-perms-select" style="display: none; margin-bottom: 20px" >-->*}}
<div style="display: none;"> <div style="display: none;">
<div id="settings-jot-acl-wrapper" style="width:auto;height:auto;overflow:auto;margin-bottom: 20px"> <div id="settings-jot-acl-wrapper" style="width:auto;height:auto;overflow:auto;margin-bottom: 20px">
{{$aclselect}} {{$aclselect}}
@ -129,6 +129,8 @@
{{include file="field_intcheckbox.tpl" field=$notify8}} {{include file="field_intcheckbox.tpl" field=$notify8}}
</div> </div>
{{include file="field_checkbox.tpl" field=$email_textonly}}
</div> </div>
<div class="settings-submit-wrapper" > <div class="settings-submit-wrapper" >