1<?php 2/* Copyright (C) 2007-2017 Laurent Destailleur <eldy@users.sourceforge.net> 3 * Copyright (C) 2009-2012 Regis Houssin <regis.houssin@inodbox.com> 4 * Copyright (C) 2013 Juanjo Menent <jmenent@2byte.es> 5 * Copyright (C) 2016 Jonathan TISSEAU <jonathan.tisseau@86dev.fr> 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation; either version 3 of the License, or 10 * (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program. If not, see <https://www.gnu.org/licenses/>. 19 */ 20 21/** 22 * \file htdocs/admin/mails.php 23 * \brief Page to setup emails sending 24 */ 25 26require '../main.inc.php'; 27require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; 28require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; 29 30// Load translation files required by the page 31$langs->loadLangs(array('companies', 'products', 'admin', 'mails', 'other', 'errors')); 32 33$action = GETPOST('action', 'aZ09'); 34 35if (!$user->admin) accessforbidden(); 36 37$usersignature = $user->signature; 38// For action = test or send, we ensure that content is not html, even for signature, because this we want a test with NO html. 39if ($action == 'test' || $action == 'send') 40{ 41 $usersignature = dol_string_nohtmltag($usersignature); 42} 43 44$substitutionarrayfortest = array( 45'__LOGIN__' => $user->login, 46'__ID__' => 'TESTIdRecord', 47'__EMAIL__' => 'TESTEMail', 48'__LASTNAME__' => 'TESTLastname', 49'__FIRSTNAME__' => 'TESTFirstname', 50'__USER_SIGNATURE__' => (($user->signature && empty($conf->global->MAIN_MAIL_DO_NOT_USE_SIGN)) ? $usersignature : ''), 51//'__PERSONALIZED__' => 'TESTPersonalized' // Hiden because not used yet 52); 53complete_substitutions_array($substitutionarrayfortest, $langs); 54 55 56 57/* 58 * Actions 59 */ 60 61if ($action == 'update' && empty($_POST["cancel"])) 62{ 63 // Send mode parameters 64 dolibarr_set_const($db, "MAIN_MAIL_SENDMODE_EMAILING", GETPOST("MAIN_MAIL_SENDMODE_EMAILING"), 'chaine', 0, '', $conf->entity); 65 dolibarr_set_const($db, "MAIN_MAIL_SMTP_PORT_EMAILING", GETPOST("MAIN_MAIL_SMTP_PORT_EMAILING"), 'chaine', 0, '', $conf->entity); 66 dolibarr_set_const($db, "MAIN_MAIL_SMTP_SERVER_EMAILING", GETPOST("MAIN_MAIL_SMTP_SERVER_EMAILING"), 'chaine', 0, '', $conf->entity); 67 dolibarr_set_const($db, "MAIN_MAIL_SMTPS_ID_EMAILING", GETPOST("MAIN_MAIL_SMTPS_ID_EMAILING"), 'chaine', 0, '', $conf->entity); 68 dolibarr_set_const($db, "MAIN_MAIL_SMTPS_PW_EMAILING", GETPOST("MAIN_MAIL_SMTPS_PW_EMAILING"), 'chaine', 0, '', $conf->entity); 69 dolibarr_set_const($db, "MAIN_MAIL_EMAIL_TLS_EMAILING", GETPOST("MAIN_MAIL_EMAIL_TLS_EMAILING"), 'chaine', 0, '', $conf->entity); 70 dolibarr_set_const($db, "MAIN_MAIL_EMAIL_STARTTLS_EMAILING", GETPOST("MAIN_MAIL_EMAIL_STARTTLS_EMAILING"), 'chaine', 0, '', $conf->entity); 71 dolibarr_set_const($db, "MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED_EMAILING", GETPOST("MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED_EMAILING"), 'chaine', 0, '', $conf->entity); 72 73 header("Location: ".$_SERVER["PHP_SELF"]."?mainmenu=home&leftmenu=setup"); 74 exit; 75} 76 77 78// Actions to send emails 79$id = 0; 80$actiontypecode = ''; // Not an event for agenda 81$triggersendname = ''; // Disable triggers 82$paramname = 'id'; 83$mode = 'emailfortest'; 84$trackid = (($action == 'testhtml') ? "testhtml" : "test"); 85$sendcontext = 'emailing'; // Force to use dedicated context of setup for emailing 86include DOL_DOCUMENT_ROOT.'/core/actions_sendmails.inc.php'; 87 88if ($action == 'presend' && GETPOST('trackid') == 'test') $action = 'test'; 89if ($action == 'presend' && GETPOST('trackid') == 'testhtml') $action = 'testhtml'; 90 91 92 93 94/* 95 * View 96 */ 97 98$form = new Form($db); 99 100$linuxlike = 1; 101if (preg_match('/^win/i', PHP_OS)) $linuxlike = 0; 102if (preg_match('/^mac/i', PHP_OS)) $linuxlike = 0; 103 104if (empty($conf->global->MAIN_MAIL_SENDMODE_EMAILING)) $conf->global->MAIN_MAIL_SENDMODE_EMAILING = 'default'; 105$port = !empty($conf->global->MAIN_MAIL_SMTP_PORT_EMAILING) ? $conf->global->MAIN_MAIL_SMTP_PORT_EMAILING : ini_get('smtp_port'); 106if (!$port) $port = 25; 107$server = !empty($conf->global->MAIN_MAIL_SMTP_SERVER_EMAILING) ? $conf->global->MAIN_MAIL_SMTP_SERVER_EMAILING : ini_get('SMTP'); 108if (!$server) $server = '127.0.0.1'; 109 110 111$wikihelp = 'EN:Setup_EMails|FR:Paramétrage_EMails|ES:Configuración_EMails'; 112llxHeader('', $langs->trans("Setup"), $wikihelp); 113 114print load_fiche_titre($langs->trans("EMailsSetup"), '', 'title_setup'); 115 116$head = email_admin_prepare_head(); 117 118// List of sending methods 119$listofmethods = array(); 120$listofmethods['default'] = $langs->trans('DefaultOutgoingEmailSetup'); 121$listofmethods['mail'] = 'PHP mail function'; 122//$listofmethods['simplemail']='Simplemail class'; 123$listofmethods['smtps'] = 'SMTP/SMTPS socket library'; 124if (version_compare(phpversion(), '7.0', '>=')) $listofmethods['swiftmailer'] = 'Swift Mailer socket library'; 125 126 127if ($action == 'edit') 128{ 129 if ($conf->use_javascript_ajax) 130 { 131 print "\n".'<script type="text/javascript" language="javascript">'; 132 print 'jQuery(document).ready(function () { 133 function initfields() 134 { 135 if (jQuery("#MAIN_MAIL_SENDMODE_EMAILING").val()==\'default\') 136 { 137 jQuery(".hideifdefault").hide(); 138 } 139 else 140 { 141 jQuery(".hideifdefault").show(); 142 } 143 144 if (jQuery("#MAIN_MAIL_SENDMODE_EMAILING").val()==\'mail\') 145 { 146 jQuery(".drag").hide(); 147 jQuery("#MAIN_MAIL_EMAIL_TLS_EMAILING").val(0); 148 jQuery("#MAIN_MAIL_EMAIL_TLS_EMAILING").prop("disabled", true); 149 jQuery("#MAIN_MAIL_EMAIL_STARTTLS_EMAILING").val(0); 150 jQuery("#MAIN_MAIL_EMAIL_STARTTLS_EMAILING").prop("disabled", true); 151 jQuery("#MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED_EMAILING").val(0); 152 jQuery("#MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED_EMAILING").prop("disabled", true); 153 '; 154 if ($linuxlike) 155 { 156 print ' 157 jQuery("#MAIN_MAIL_SMTP_SERVER_EMAILING").hide(); 158 jQuery("#MAIN_MAIL_SMTP_PORT_EMAILING").hide(); 159 jQuery("#smtp_server_mess").show(); 160 jQuery("#smtp_port_mess").show(); 161 '; 162 } else { 163 print ' 164 jQuery("#MAIN_MAIL_SMTP_SERVER_EMAILING").prop("disabled", true); 165 jQuery("#MAIN_MAIL_SMTP_PORT_EMAILING").prop("disabled", true); 166 jQuery("#smtp_server_mess").hide(); 167 jQuery("#smtp_port_mess").hide(); 168 '; 169 } 170 print ' 171 } 172 if (jQuery("#MAIN_MAIL_SENDMODE_EMAILING").val()==\'smtps\') 173 { 174 jQuery(".drag").show(); 175 jQuery("#MAIN_MAIL_EMAIL_TLS_EMAILING").val('.$conf->global->MAIN_MAIL_EMAIL_TLS_EMAILING.'); 176 jQuery("#MAIN_MAIL_EMAIL_TLS_EMAILING").removeAttr("disabled"); 177 jQuery("#MAIN_MAIL_EMAIL_STARTTLS_EMAILING").val('.$conf->global->MAIN_MAIL_EMAIL_STARTTLS_EMAILING.'); 178 jQuery("#MAIN_MAIL_EMAIL_STARTTLS_EMAILING").removeAttr("disabled"); 179 jQuery("#MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED_EMAILING").val('.$conf->global->MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED_EMAILING.'); 180 jQuery("#MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED_EMAILING").removeAttr("disabled"); 181 jQuery("#MAIN_MAIL_SMTP_SERVER_EMAILING").removeAttr("disabled"); 182 jQuery("#MAIN_MAIL_SMTP_PORT_EMAILING").removeAttr("disabled"); 183 jQuery("#MAIN_MAIL_SMTP_SERVER_EMAILING").show(); 184 jQuery("#MAIN_MAIL_SMTP_PORT_EMAILING").show(); 185 jQuery("#smtp_server_mess").hide(); 186 jQuery("#smtp_port_mess").hide(); 187 } 188 if (jQuery("#MAIN_MAIL_SENDMODE_EMAILING").val()==\'swiftmailer\') 189 { 190 jQuery(".drag").show(); 191 jQuery("#MAIN_MAIL_EMAIL_TLS_EMAILING").val('.$conf->global->MAIN_MAIL_EMAIL_TLS_EMAILING.'); 192 jQuery("#MAIN_MAIL_EMAIL_TLS_EMAILING").removeAttr("disabled"); 193 jQuery("#MAIN_MAIL_EMAIL_STARTTLS_EMAILING").val('.$conf->global->MAIN_MAIL_EMAIL_STARTTLS_EMAILING.'); 194 jQuery("#MAIN_MAIL_EMAIL_STARTTLS_EMAILING").removeAttr("disabled"); 195 jQuery("#MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED_EMAILING").val('.$conf->global->MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED_EMAILING.'); 196 jQuery("#MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED_EMAILING").removeAttr("disabled"); 197 jQuery("#MAIN_MAIL_SMTP_SERVER_EMAILING").removeAttr("disabled"); 198 jQuery("#MAIN_MAIL_SMTP_PORT_EMAILING").removeAttr("disabled"); 199 jQuery("#MAIN_MAIL_SMTP_SERVER_EMAILING").show(); 200 jQuery("#MAIN_MAIL_SMTP_PORT_EMAILING").show(); 201 jQuery("#smtp_server_mess").hide(); 202 jQuery("#smtp_port_mess").hide(); 203 } 204 } 205 initfields(); 206 jQuery("#MAIN_MAIL_SENDMODE_EMAILING").change(function() { 207 initfields(); 208 }); 209 jQuery("#MAIN_MAIL_EMAIL_TLS_EMAILING").change(function() { 210 if (jQuery("#MAIN_MAIL_EMAIL_TLS_EMAILING").val() == 1) 211 jQuery("#MAIN_MAIL_EMAIL_STARTTLS_EMAILING").val(0); 212 else 213 jQuery("#MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED_EMAILING").val(0); 214 }); 215 jQuery("#MAIN_MAIL_EMAIL_STARTTLS_EMAILING").change(function() { 216 if (jQuery("#MAIN_MAIL_EMAIL_STARTTLS_EMAILING").val() == 1) 217 jQuery("#MAIN_MAIL_EMAIL_TLS_EMAILING").val(0); 218 else 219 jQuery("#MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED_EMAILING").val(0); 220 }); 221 })'; 222 print '</script>'."\n"; 223 } 224 225 print '<form method="post" action="'.$_SERVER["PHP_SELF"].'">'; 226 print '<input type="hidden" name="token" value="'.newToken().'">'; 227 print '<input type="hidden" name="action" value="update">'; 228 229 print dol_get_fiche_head($head, 'common_emailing', '', -1); 230 231 print '<span class="opacitymedium">'.$langs->trans("EMailsDesc")."</span><br>\n"; 232 print "<br>\n"; 233 234 235 clearstatcache(); 236 237 print '<table class="noborder centpercent">'; 238 print '<tr class="liste_titre"><td class="titlefieldmiddle">'.$langs->trans("Parameter").'</td><td>'.$langs->trans("Value").'</td></tr>'; 239 240 // Method 241 242 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_SENDMODE").'</td><td>'; 243 244 // SuperAdministrator access only 245 if ((empty($conf->global->MAIN_MODULE_MULTICOMPANY)) || ($user->admin && !$user->entity)) 246 { 247 print $form->selectarray('MAIN_MAIL_SENDMODE_EMAILING', $listofmethods, $conf->global->MAIN_MAIL_SENDMODE_EMAILING); 248 } else { 249 $text = $listofmethods[$conf->global->MAIN_MAIL_SENDMODE_EMAILING]; 250 if (empty($text)) $text = $langs->trans("Undefined"); 251 $htmltext = $langs->trans("ContactSuperAdminForChange"); 252 print $form->textwithpicto($text, $htmltext, 1, 'superadmin'); 253 print '<input type="hidden" name="MAIN_MAIL_SENDMODE_EMAILING" value="'.$conf->global->MAIN_MAIL_SENDMODE_EMAILING.'">'; 254 } 255 print '</td></tr>'; 256 257 // Host server 258 259 print '<tr class="oddeven hideifdefault"><td>'; 260 if (!$conf->use_javascript_ajax && $linuxlike && $conf->global->MAIN_MAIL_SENDMODE_EMAILING == 'mail') 261 { 262 print $langs->trans("MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike"); 263 print '</td><td>'; 264 print $langs->trans("SeeLocalSendMailSetup"); 265 } else { 266 $mainserver = (!empty($conf->global->MAIN_MAIL_SMTP_SERVER_EMAILING) ? $conf->global->MAIN_MAIL_SMTP_SERVER_EMAILING : ''); 267 $smtpserver = ini_get('SMTP') ?ini_get('SMTP') : $langs->transnoentities("Undefined"); 268 if ($linuxlike) print $langs->trans("MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike"); 269 else print $langs->trans("MAIN_MAIL_SMTP_SERVER", $smtpserver); 270 print '</td><td>'; 271 // SuperAdministrator access only 272 if (empty($conf->multicompany->enabled) || ($user->admin && !$user->entity)) 273 { 274 print '<input class="flat" id="MAIN_MAIL_SMTP_SERVER_EMAILING" name="MAIN_MAIL_SMTP_SERVER_EMAILING" size="18" value="'.$mainserver.'">'; 275 print '<input type="hidden" id="MAIN_MAIL_SMTP_SERVER_EMAILING_sav" name="MAIN_MAIL_SMTP_SERVER_EMAILING_sav" value="'.$mainserver.'">'; 276 print '<span id="smtp_server_mess">'.$langs->trans("SeeLocalSendMailSetup").'</span>'; 277 } else { 278 $text = !empty($mainserver) ? $mainserver : $smtpserver; 279 $htmltext = $langs->trans("ContactSuperAdminForChange"); 280 print $form->textwithpicto($text, $htmltext, 1, 'superadmin'); 281 print '<input type="hidden" id="MAIN_MAIL_SMTP_SERVER_EMAILING" name="MAIN_MAIL_SMTP_SERVER_EMAILING" value="'.$mainserver.'">'; 282 } 283 } 284 print '</td></tr>'; 285 286 // Port 287 288 print '<tr class="oddeven hideifdefault"><td>'; 289 if (!$conf->use_javascript_ajax && $linuxlike && $conf->global->MAIN_MAIL_SENDMODE_EMAILING == 'mail') 290 { 291 print $langs->trans("MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike"); 292 print '</td><td>'; 293 print $langs->trans("SeeLocalSendMailSetup"); 294 } else { 295 $mainport = (!empty($conf->global->MAIN_MAIL_SMTP_PORT_EMAILING) ? $conf->global->MAIN_MAIL_SMTP_PORT_EMAILING : ''); 296 $smtpport = ini_get('smtp_port') ?ini_get('smtp_port') : $langs->transnoentities("Undefined"); 297 if ($linuxlike) print $langs->trans("MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike"); 298 else print $langs->trans("MAIN_MAIL_SMTP_PORT", $smtpport); 299 print '</td><td>'; 300 // SuperAdministrator access only 301 if (empty($conf->multicompany->enabled) || ($user->admin && !$user->entity)) 302 { 303 print '<input class="flat" id="MAIN_MAIL_SMTP_PORT_EMAILING" name="MAIN_MAIL_SMTP_PORT_EMAILING" size="3" value="'.$mainport.'">'; 304 print '<input type="hidden" id="MAIN_MAIL_SMTP_PORT_EMAILING_sav" name="MAIN_MAIL_SMTP_PORT_EMAILING_sav" value="'.$mainport.'">'; 305 print '<span id="smtp_port_mess">'.$langs->trans("SeeLocalSendMailSetup").'</span>'; 306 } else { 307 $text = (!empty($mainport) ? $mainport : $smtpport); 308 $htmltext = $langs->trans("ContactSuperAdminForChange"); 309 print $form->textwithpicto($text, $htmltext, 1, 'superadmin'); 310 print '<input type="hidden" id="MAIN_MAIL_SMTP_PORT_EMAILING" name="MAIN_MAIL_SMTP_PORT_EMAILING" value="'.$mainport.'">'; 311 } 312 } 313 print '</td></tr>'; 314 315 // ID 316 if (!empty($conf->use_javascript_ajax) || (isset($conf->global->MAIN_MAIL_SENDMODE_EMAILING) && in_array($conf->global->MAIN_MAIL_SENDMODE_EMAILING, array('smtps', 'swiftmailer')))) 317 { 318 $mainstmpid = (!empty($conf->global->MAIN_MAIL_SMTPS_ID_EMAILING) ? $conf->global->MAIN_MAIL_SMTPS_ID_EMAILING : ''); 319 print '<tr class="drag drop oddeven hideifdefault"><td>'.$langs->trans("MAIN_MAIL_SMTPS_ID").'</td><td>'; 320 // SuperAdministrator access only 321 if (empty($conf->multicompany->enabled) || ($user->admin && !$user->entity)) 322 { 323 print '<input class="flat" name="MAIN_MAIL_SMTPS_ID_EMAILING" size="32" value="'.$mainstmpid.'">'; 324 } else { 325 $htmltext = $langs->trans("ContactSuperAdminForChange"); 326 print $form->textwithpicto($conf->global->MAIN_MAIL_SMTPS_ID_EMAILING, $htmltext, 1, 'superadmin'); 327 print '<input type="hidden" name="MAIN_MAIL_SMTPS_ID_EMAILING" value="'.$mainstmpid.'">'; 328 } 329 print '</td></tr>'; 330 } 331 332 // PW 333 if (!empty($conf->use_javascript_ajax) || (isset($conf->global->MAIN_MAIL_SENDMODE_EMAILING) && in_array($conf->global->MAIN_MAIL_SENDMODE_EMAILING, array('smtps', 'swiftmailer')))) 334 { 335 $mainsmtppw = (!empty($conf->global->MAIN_MAIL_SMTPS_PW_EMAILING) ? $conf->global->MAIN_MAIL_SMTPS_PW_EMAILING : ''); 336 print '<tr class="drag drop oddeven hideifdefault"><td>'.$langs->trans("MAIN_MAIL_SMTPS_PW").'</td><td>'; 337 // SuperAdministrator access only 338 if (empty($conf->multicompany->enabled) || ($user->admin && !$user->entity)) 339 { 340 print '<input class="flat" type="password" name="MAIN_MAIL_SMTPS_PW_EMAILING" size="32" value="'.$mainsmtppw.'">'; 341 } else { 342 $htmltext = $langs->trans("ContactSuperAdminForChange"); 343 print $form->textwithpicto($conf->global->MAIN_MAIL_SMTPS_PW_EMAILING, $htmltext, 1, 'superadmin'); 344 print '<input type="hidden" name="MAIN_MAIL_SMTPS_PW_EMAILING" value="'.$mainsmtppw.'">'; 345 } 346 print '</td></tr>'; 347 } 348 349 // TLS 350 351 print '<tr class="oddeven hideifdefault"><td>'.$langs->trans("MAIN_MAIL_EMAIL_TLS").'</td><td>'; 352 if (!empty($conf->use_javascript_ajax) || (isset($conf->global->MAIN_MAIL_SENDMODE_EMAILING) && in_array($conf->global->MAIN_MAIL_SENDMODE_EMAILING, array('smtps', 'swiftmailer')))) 353 { 354 if (function_exists('openssl_open')) 355 { 356 print $form->selectyesno('MAIN_MAIL_EMAIL_TLS_EMAILING', (!empty($conf->global->MAIN_MAIL_EMAIL_TLS_EMAILING) ? $conf->global->MAIN_MAIL_EMAIL_TLS_EMAILING : 0), 1); 357 } else print yn(0).' ('.$langs->trans("YourPHPDoesNotHaveSSLSupport").')'; 358 } else print yn(0).' ('.$langs->trans("NotSupported").')'; 359 print '</td></tr>'; 360 361 // STARTTLS 362 363 print '<tr class="oddeven hideifdefault"><td>'.$langs->trans("MAIN_MAIL_EMAIL_STARTTLS").'</td><td>'; 364 if (!empty($conf->use_javascript_ajax) || (isset($conf->global->MAIN_MAIL_SENDMODE_EMAILING) && in_array($conf->global->MAIN_MAIL_SENDMODE_EMAILING, array('smtps', 'swiftmailer')))) 365 { 366 if (function_exists('openssl_open')) 367 { 368 print $form->selectyesno('MAIN_MAIL_EMAIL_STARTTLS_EMAILING', (!empty($conf->global->MAIN_MAIL_EMAIL_STARTTLS_EMAILING) ? $conf->global->MAIN_MAIL_EMAIL_STARTTLS_EMAILING : 0), 1); 369 } else print yn(0).' ('.$langs->trans("YourPHPDoesNotHaveSSLSupport").')'; 370 } else print yn(0).' ('.$langs->trans("NotSupported").')'; 371 print '</td></tr>'; 372 373 // SMTP_ALLOW_SELF_SIGNED_EMAILING 374 375 print '<tr class="oddeven hideifdefault"><td>'.$langs->trans("MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED").'</td><td>'; 376 if (!empty($conf->use_javascript_ajax) || (isset($conf->global->MAIN_MAIL_SENDMODE_EMAILING) && in_array($conf->global->MAIN_MAIL_SENDMODE_EMAILING, array('smtps', 'swiftmailer')))) 377 { 378 if (function_exists('openssl_open')) 379 { 380 print $form->selectyesno('MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED_EMAILING', (!empty($conf->global->MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED_EMAILING) ? $conf->global->MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED_EMAILING : 0), 1); 381 } else print yn(0).' ('.$langs->trans("YourPHPDoesNotHaveSSLSupport").')'; 382 } else print yn(0).' ('.$langs->trans("NotSupported").')'; 383 print '</td></tr>'; 384 385 print '</table>'; 386 387 print dol_get_fiche_end(); 388 389 print '<br><div class="center">'; 390 print '<input class="button button-save" type="submit" name="save" value="'.$langs->trans("Save").'">'; 391 print ' '; 392 print '<input class="button button-cancel" type="submit" name="cancel" value="'.$langs->trans("Cancel").'">'; 393 print '</div>'; 394 395 print '</form>'; 396} else { 397 print dol_get_fiche_head($head, 'common_emailing', '', -1); 398 399 print '<span class="opacitymedium">'.$langs->trans("EMailsDesc")."</span><br>\n"; 400 print "<br>\n"; 401 402 print '<table class="noborder centpercent">'; 403 print '<tr class="liste_titre"><td class="titlefieldmiddle">'.$langs->trans("Parameter").'</td><td>'.$langs->trans("Value").'</td></tr>'; 404 405 // Method 406 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_SENDMODE").'</td><td>'; 407 $text = $listofmethods[$conf->global->MAIN_MAIL_SENDMODE_EMAILING]; 408 if (empty($text)) $text = $langs->trans("Undefined").img_warning(); 409 print $text; 410 print '</td></tr>'; 411 412 if (!empty($conf->global->MAIN_MAIL_SENDMODE_EMAILING) && $conf->global->MAIN_MAIL_SENDMODE_EMAILING != 'default') 413 { 414 // Host server 415 if ($linuxlike && (isset($conf->global->MAIN_MAIL_SENDMODE_EMAILING) && $conf->global->MAIN_MAIL_SENDMODE_EMAILING == 'mail')) 416 { 417 print '<tr class="oddeven hideifdefault"><td>'.$langs->trans("MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike").'</td><td>'.$langs->trans("SeeLocalSendMailSetup").'</td></tr>'; 418 } else { 419 print '<tr class="oddeven hideifdefault"><td>'.$langs->trans("MAIN_MAIL_SMTP_SERVER", ini_get('SMTP') ?ini_get('SMTP') : $langs->transnoentities("Undefined")).'</td><td>'.(!empty($conf->global->MAIN_MAIL_SMTP_SERVER_EMAILING) ? $conf->global->MAIN_MAIL_SMTP_SERVER_EMAILING : '').'</td></tr>'; 420 } 421 422 // Port 423 if ($linuxlike && (isset($conf->global->MAIN_MAIL_SENDMODE_EMAILING) && $conf->global->MAIN_MAIL_SENDMODE_EMAILING == 'mail')) 424 { 425 print '<tr class="oddeven hideifdefault"><td>'.$langs->trans("MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike").'</td><td>'.$langs->trans("SeeLocalSendMailSetup").'</td></tr>'; 426 } else { 427 print '<tr class="oddeven hideifdefault"><td>'.$langs->trans("MAIN_MAIL_SMTP_PORT", ini_get('smtp_port') ?ini_get('smtp_port') : $langs->transnoentities("Undefined")).'</td><td>'.(!empty($conf->global->MAIN_MAIL_SMTP_PORT_EMAILING) ? $conf->global->MAIN_MAIL_SMTP_PORT_EMAILING : '').'</td></tr>'; 428 } 429 430 // SMTPS ID 431 if (isset($conf->global->MAIN_MAIL_SENDMODE_EMAILING) && in_array($conf->global->MAIN_MAIL_SENDMODE_EMAILING, array('smtps', 'swiftmailer'))) 432 { 433 print '<tr class="oddeven hideifdefault"><td>'.$langs->trans("MAIN_MAIL_SMTPS_ID").'</td><td>'.$conf->global->MAIN_MAIL_SMTPS_ID_EMAILING.'</td></tr>'; 434 } 435 436 // SMTPS PW 437 if (isset($conf->global->MAIN_MAIL_SENDMODE_EMAILING) && in_array($conf->global->MAIN_MAIL_SENDMODE_EMAILING, array('smtps', 'swiftmailer'))) 438 { 439 print '<tr class="oddeven hideifdefault"><td>'.$langs->trans("MAIN_MAIL_SMTPS_PW").'</td><td>'.preg_replace('/./', '*', $conf->global->MAIN_MAIL_SMTPS_PW_EMAILING).'</td></tr>'; 440 } 441 442 // TLS 443 print '<tr class="oddeven hideifdefault"><td>'.$langs->trans("MAIN_MAIL_EMAIL_TLS").'</td><td>'; 444 if (isset($conf->global->MAIN_MAIL_SENDMODE_EMAILING) && in_array($conf->global->MAIN_MAIL_SENDMODE_EMAILING, array('smtps', 'swiftmailer'))) 445 { 446 if (function_exists('openssl_open')) 447 { 448 print yn($conf->global->MAIN_MAIL_EMAIL_TLS_EMAILING); 449 } else print yn(0).' ('.$langs->trans("YourPHPDoesNotHaveSSLSupport").')'; 450 } else print yn(0).' ('.$langs->trans("NotSupported").')'; 451 print '</td></tr>'; 452 453 // STARTTLS 454 print '<tr class="oddeven hideifdefault"><td>'.$langs->trans("MAIN_MAIL_EMAIL_STARTTLS").'</td><td>'; 455 if (isset($conf->global->MAIN_MAIL_SENDMODE_EMAILING) && in_array($conf->global->MAIN_MAIL_SENDMODE_EMAILING, array('smtps', 'swiftmailer'))) 456 { 457 if (function_exists('openssl_open')) 458 { 459 print yn($conf->global->MAIN_MAIL_EMAIL_STARTTLS_EMAILING); 460 } else print yn(0).' ('.$langs->trans("YourPHPDoesNotHaveSSLSupport").')'; 461 } else print yn(0).' ('.$langs->trans("NotSupported").')'; 462 print '</td></tr>'; 463 464 // SMTP_ALLOW_SELF_SIGNED_EMAILING 465 print '<tr class="oddeven hideifdefault"><td>'.$langs->trans("MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED").'</td><td>'; 466 if (isset($conf->global->MAIN_MAIL_SENDMODE_EMAILING) && in_array($conf->global->MAIN_MAIL_SENDMODE_EMAILING, array('smtps', 'swiftmailer'))) 467 { 468 if (function_exists('openssl_open')) 469 { 470 print yn($conf->global->MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED_EMAILING); 471 } else print yn(0).' ('.$langs->trans("YourPHPDoesNotHaveSSLSupport").')'; 472 } else print yn(0).' ('.$langs->trans("NotSupported").')'; 473 print '</td></tr>'; 474 } 475 476 print '</table>'; 477 478 print dol_get_fiche_end(); 479 480 481 if ($conf->global->MAIN_MAIL_SENDMODE_EMAILING == 'mail' && empty($conf->global->MAIN_FIX_FOR_BUGGED_MTA)) 482 { 483 print '<br>'; 484 /* 485 // Warning 1 486 if ($linuxlike) 487 { 488 $sendmailoption=ini_get('mail.force_extra_parameters'); 489 if (empty($sendmailoption) || ! preg_match('/ba/',$sendmailoption)) 490 { 491 print info_admin($langs->trans("SendmailOptionNotComplete")); 492 } 493 }*/ 494 // Warning 2 495 print info_admin($langs->trans("SendmailOptionMayHurtBuggedMTA")); 496 } 497 498 499 // Buttons for actions 500 501 print '<div class="tabsAction">'; 502 503 print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=edit">'.$langs->trans("Modify").'</a>'; 504 505 if (!empty($conf->global->MAIN_MAIL_SENDMODE_EMAILING) && $conf->global->MAIN_MAIL_SENDMODE_EMAILING != 'default') 506 { 507 if ($conf->global->MAIN_MAIL_SENDMODE_EMAILING != 'mail' || !$linuxlike) 508 { 509 if (function_exists('fsockopen') && $port && $server) 510 { 511 print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=testconnect">'.$langs->trans("DoTestServerAvailability").'</a>'; 512 } 513 } else { 514 print '<a class="butActionRefused classfortooltip" href="#" title="'.$langs->trans("FeatureNotAvailableOnLinux").'">'.$langs->trans("DoTestServerAvailability").'</a>'; 515 } 516 517 print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=test&mode=init">'.$langs->trans("DoTestSend").'</a>'; 518 519 if (!empty($conf->fckeditor->enabled)) 520 { 521 print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=testhtml&mode=init">'.$langs->trans("DoTestSendHTML").'</a>'; 522 } 523 } 524 525 print '</div>'; 526 527 528 if ($conf->global->MAIN_MAIL_SENDMODE_EMAILING == 'mail' && !in_array($action, array('testconnect', 'test', 'testhtml'))) 529 { 530 $text = $langs->trans("WarningPHPMail"); 531 print info_admin($text); 532 } 533 534 // Run the test to connect 535 if ($action == 'testconnect') 536 { 537 print load_fiche_titre($langs->trans("DoTestServerAvailability")); 538 539 include_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php'; 540 $mail = new CMailFile('', '', '', '', array(), array(), array(), '', '', 0, '', '', '', '', $trackid, $sendcontext); 541 542 $result = $mail->check_server_port($server, $port); 543 if ($result) print '<div class="ok">'.$langs->trans("ServerAvailableOnIPOrPort", $server, $port).'</div>'; 544 else { 545 $errormsg = $langs->trans("ServerNotAvailableOnIPOrPort", $server, $port); 546 547 if ($mail->error) { 548 $errormsg .= ' - '.$mail->error; 549 } 550 551 setEventMessages($errormsg, null, 'errors'); 552 } 553 print '<br>'; 554 } 555 556 // Show email send test form 557 if ($action == 'test' || $action == 'testhtml') 558 { 559 print '<div id="formmailbeforetitle" name="formmailbeforetitle"></div>'; 560 print load_fiche_titre($action == 'testhtml' ? $langs->trans("DoTestSendHTML") : $langs->trans("DoTestSend")); 561 562 print dol_get_fiche_head(''); 563 564 // Cree l'objet formulaire mail 565 include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php'; 566 $formmail = new FormMail($db); 567 $formmail->fromname = (GETPOSTISSET('fromname') ? GETPOST('fromname', 'restricthtml') : $conf->global->MAIN_MAIL_EMAIL_FROM); 568 $formmail->frommail = (GETPOSTISSET('frommail') ? GETPOST('frommail', 'restricthtml') : $conf->global->MAIN_MAIL_EMAIL_FROM); 569 $formmail->trackid = (($action == 'testhtml') ? "testhtml" : "test"); 570 $formmail->withfromreadonly = 0; 571 $formmail->withsubstit = 0; 572 $formmail->withfrom = 1; 573 $formmail->witherrorsto = 1; 574 $formmail->withto = (!GETPOST('sendto') ? GETPOST('sendto', 'restricthtml') : ($user->email ? $user->email : 1)); 575 $formmail->withtocc = (!GETPOST(['sendtocc']) ? GETPOST('sendtocc', 'restricthtml') : 1); // ! empty to keep field if empty 576 $formmail->withtoccc = (!GETPOST(['sendtoccc']) ? GETPOST('sendtoccc', 'restricthtml') : 1); // ! empty to keep field if empty 577 $formmail->withtopic = (GETPOSTISSET('subject') ? GETPOST('subject') : $langs->trans("Test")); 578 $formmail->withtopicreadonly = 0; 579 $formmail->withfile = 2; 580 $formmail->withbody = (GETPOSTISSET('message') ? GETPOST('message', 'restricthtml') : ($action == 'testhtml' ? $langs->transnoentities("PredefinedMailTestHtml") : $langs->transnoentities("PredefinedMailTest"))); 581 $formmail->withbodyreadonly = 0; 582 $formmail->withcancel = 1; 583 $formmail->withdeliveryreceipt = 1; 584 $formmail->withfckeditor = ($action == 'testhtml' ? 1 : 0); 585 $formmail->ckeditortoolbar = 'dolibarr_mailings'; 586 // Tableau des substitutions 587 $formmail->substit = $substitutionarrayfortest; 588 // Tableau des parametres complementaires du post 589 $formmail->param["action"] = "send"; 590 $formmail->param["models"] = "body"; 591 $formmail->param["mailid"] = 0; 592 $formmail->param["returnurl"] = $_SERVER["PHP_SELF"]; 593 594 // Init list of files 595 if (GETPOST("mode") == 'init') 596 { 597 $formmail->clear_attached_files(); 598 } 599 600 print $formmail->get_form('addfile', 'removefile'); 601 602 print dol_get_fiche_end(); 603 } 604} 605 606// End of page 607llxFooter(); 608$db->close(); 609