dolibarr 20.0.2
mails.php
Go to the documentation of this file.
1<?php
2/* Copyright (C) 2007-2020 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 * Copyright (C) 2023 Anthony Berton <anthony.berton@bb2a.fr>
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 3 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program. If not, see <https://www.gnu.org/licenses/>.
20 */
21
27// Load Dolibarr environment
28require '../main.inc.php';
29require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
30require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
31require_once DOL_DOCUMENT_ROOT.'/core/lib/geturl.lib.php';
32
33// Load translation files required by the page
34$langs->loadLangs(array("companies", "products", "admin", "mails", "other", "errors"));
35
36$action = GETPOST('action', 'aZ09');
37$cancel = GETPOST('cancel', 'aZ09');
38
39$trackid = GETPOST('trackid');
40
41if (!$user->admin) {
43}
44
45$usersignature = $user->signature;
46// For action = test or send, we ensure that content is not html, even for signature, because for this we want a test with NO html.
47if ($action == 'test' || ($action == 'send' && $trackid == 'test')) {
48 $usersignature = dol_string_nohtmltag($usersignature, 2);
49}
50
51$substitutionarrayfortest = array(
52 '__USER_LOGIN__' => $user->login,
53 '__USER_EMAIL__' => $user->email,
54 '__USER_FIRSTNAME__' => $user->firstname,
55 '__USER_LASTNAME__' => $user->lastname,
56 '__USER_SIGNATURE__' => (($user->signature && !getDolGlobalString('MAIN_MAIL_DO_NOT_USE_SIGN')) ? $usersignature : ''), // Done into actions_sendmails
57 '__SENDEREMAIL_SIGNATURE__' => (($user->signature && !getDolGlobalString('MAIN_MAIL_DO_NOT_USE_SIGN')) ? $usersignature : ''), // Done into actions_sendmails
58 //'__ID__' => 'RecipientID',
59 //'__EMAIL__' => 'RecipientEMail', // Done into actions_sendmails
60 '__LASTNAME__' => $langs->trans("Lastname").' ('.$langs->trans("Recipient").')',
61 '__FIRSTNAME__' => $langs->trans("Firstname").' ('.$langs->trans("Recipient").')',
62 //'__ADDRESS__'=> $langs->trans("Address").' ('.$langs->trans("Recipient").')',
63 //'__ZIP__'=> $langs->trans("Zip").' ('.$langs->trans("Recipient").')',
64 //'__TOWN_'=> $langs->trans("Town").' ('.$langs->trans("Recipient").')',
65 //'__COUNTRY__'=> $langs->trans("Country").' ('.$langs->trans("Recipient").')',
66 '__DOL_MAIN_URL_ROOT__'=>DOL_MAIN_URL_ROOT,
67 '__CHECK_READ__' => '<img src="'.DOL_MAIN_URL_ROOT.'/public/emailing/mailing-read.php?tag=undefinedtag&securitykey='.dol_hash(getDolGlobalString('MAILING_EMAIL_UNSUBSCRIBE_KEY')."-undefinedtag", 'md5').'" width="1" height="1" style="width:1px;height:1px" border="0" />',
68);
69complete_substitutions_array($substitutionarrayfortest, $langs);
70
71
72
73/*
74 * Actions
75 */
76
77if ($action == 'update' && !$cancel) {
78 if (!$error && !GETPOST("MAIN_MAIL_EMAIL_FROM", 'alphanohtml')) {
79 $error++;
80 setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("MAIN_MAIL_EMAIL_FROM")), null, 'errors');
81 $action = 'edit';
82 }
83 if (!$error && !isValidEmail(GETPOST("MAIN_MAIL_EMAIL_FROM", 'alphanohtml'))) {
84 $error++;
85 setEventMessages($langs->trans("ErrorBadEMail", GETPOST("MAIN_MAIL_EMAIL_FROM", 'alphanohtml')), null, 'errors');
86 $action = 'edit';
87 }
88
89 if (!$error) {
90 dolibarr_set_const($db, "MAIN_DISABLE_ALL_MAILS", GETPOSTINT("MAIN_DISABLE_ALL_MAILS"), 'chaine', 0, '', $conf->entity);
91 dolibarr_set_const($db, "MAIN_MAIL_FORCE_SENDTO", GETPOST("MAIN_MAIL_FORCE_SENDTO", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
92 dolibarr_set_const($db, "MAIN_MAIL_ENABLED_USER_DEST_SELECT", GETPOSTINT("MAIN_MAIL_ENABLED_USER_DEST_SELECT"), 'chaine', 0, '', $conf->entity);
93 dolibarr_set_const($db, 'MAIN_MAIL_NO_WITH_TO_SELECTED', GETPOSTINT('MAIN_MAIL_NO_WITH_TO_SELECTED'), 'chaine', 0, '', $conf->entity);
94 // Send mode parameters
95 dolibarr_set_const($db, "MAIN_MAIL_SENDMODE", GETPOST("MAIN_MAIL_SENDMODE", 'aZ09'), 'chaine', 0, '', $conf->entity);
96 dolibarr_set_const($db, "MAIN_MAIL_SMTP_PORT", GETPOSTINT("MAIN_MAIL_SMTP_PORT"), 'chaine', 0, '', $conf->entity);
97 dolibarr_set_const($db, "MAIN_MAIL_SMTP_SERVER", GETPOST("MAIN_MAIL_SMTP_SERVER", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
98 dolibarr_set_const($db, "MAIN_MAIL_SMTPS_ID", GETPOST("MAIN_MAIL_SMTPS_ID", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
99 if (GETPOSTISSET("MAIN_MAIL_SMTPS_PW")) {
100 dolibarr_set_const($db, "MAIN_MAIL_SMTPS_PW", GETPOST("MAIN_MAIL_SMTPS_PW", 'none'), 'chaine', 0, '', $conf->entity);
101 }
102 if (GETPOSTISSET("MAIN_MAIL_SMTPS_AUTH_TYPE")) {
103 dolibarr_set_const($db, "MAIN_MAIL_SMTPS_AUTH_TYPE", GETPOST("MAIN_MAIL_SMTPS_AUTH_TYPE", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
104 }
105 if (GETPOSTISSET("MAIN_MAIL_SMTPS_OAUTH_SERVICE")) {
106 dolibarr_set_const($db, "MAIN_MAIL_SMTPS_OAUTH_SERVICE", GETPOST("MAIN_MAIL_SMTPS_OAUTH_SERVICE", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
107 }
108 dolibarr_set_const($db, "MAIN_MAIL_EMAIL_TLS", GETPOSTINT("MAIN_MAIL_EMAIL_TLS"), 'chaine', 0, '', $conf->entity);
109 dolibarr_set_const($db, "MAIN_MAIL_EMAIL_STARTTLS", GETPOSTINT("MAIN_MAIL_EMAIL_STARTTLS"), 'chaine', 0, '', $conf->entity);
110 dolibarr_set_const($db, "MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED", GETPOSTINT("MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED"), 'chaine', 0, '', $conf->entity);
111
112 dolibarr_set_const($db, "MAIN_MAIL_EMAIL_DKIM_ENABLED", GETPOSTINT("MAIN_MAIL_EMAIL_DKIM_ENABLED"), 'chaine', 0, '', $conf->entity);
113 dolibarr_set_const($db, "MAIN_MAIL_EMAIL_DKIM_DOMAIN", GETPOST("MAIN_MAIL_EMAIL_DKIM_DOMAIN", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
114 dolibarr_set_const($db, "MAIN_MAIL_EMAIL_DKIM_SELECTOR", GETPOST("MAIN_MAIL_EMAIL_DKIM_SELECTOR", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
115 dolibarr_set_const($db, "MAIN_MAIL_EMAIL_DKIM_PRIVATE_KEY", GETPOST("MAIN_MAIL_EMAIL_DKIM_PRIVATE_KEY", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
116 // Content parameters
117 dolibarr_set_const($db, "MAIN_MAIL_EMAIL_FROM", GETPOST("MAIN_MAIL_EMAIL_FROM", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
118 dolibarr_set_const($db, "MAIN_MAIL_ERRORS_TO", GETPOST("MAIN_MAIL_ERRORS_TO", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
119 dolibarr_set_const($db, "MAIN_MAIL_AUTOCOPY_TO", GETPOST("MAIN_MAIL_AUTOCOPY_TO", 'alphanohtml'), 'chaine', 0, '', $conf->entity);
120 dolibarr_set_const($db, 'MAIN_MAIL_DEFAULT_FROMTYPE', GETPOST('MAIN_MAIL_DEFAULT_FROMTYPE', 'alphanohtml'), 'chaine', 0, '', $conf->entity);
121
122
123 header("Location: ".$_SERVER["PHP_SELF"]."?mainmenu=home&leftmenu=setup");
124 exit;
125 }
126}
127
128if ($action == 'disablephpmailwarning' && !$cancel) {
129 dolibarr_set_const($db, 'MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP', 1, 'chaine', 1, 0, $conf->entity);
130
131 setEventMessages($langs->trans("WarningDisabled"), null, 'mesgs');
132}
133
134// Actions to send emails
135$id = 0;
136$actiontypecode = ''; // Not an event for agenda
137$triggersendname = ''; // Disable triggers
138$paramname = 'id';
139$mode = 'emailfortest';
140$trackid = ($action == 'send' ? GETPOST('trackid', 'aZ09') : $action);
141$sendcontext = '';
142include DOL_DOCUMENT_ROOT.'/core/actions_sendmails.inc.php';
143
144if ($action == 'presend' && GETPOST('trackid', 'alphanohtml') == 'test') {
145 $action = 'test';
146}
147if ($action == 'presend' && GETPOST('trackid', 'alphanohtml') == 'testhtml') {
148 $action = 'testhtml';
149}
150
151
152/*
153 * View
154 */
155
156$form = new Form($db);
157
158$linuxlike = 1;
159if (preg_match('/^win/i', PHP_OS)) {
160 $linuxlike = 0;
161}
162if (preg_match('/^mac/i', PHP_OS)) {
163 $linuxlike = 0;
164}
165
166if (!getDolGlobalString('MAIN_MAIL_SENDMODE')) {
167 $conf->global->MAIN_MAIL_SENDMODE = 'mail';
168}
169$port = getDolGlobalString('MAIN_MAIL_SMTP_PORT') ? $conf->global->MAIN_MAIL_SMTP_PORT : ini_get('smtp_port');
170if (!$port) {
171 $port = 25;
172}
173$server = getDolGlobalString('MAIN_MAIL_SMTP_SERVER') ? $conf->global->MAIN_MAIL_SMTP_SERVER : ini_get('SMTP');
174if (!$server) {
175 $server = '127.0.0.1';
176}
177
178
179$wikihelp = 'EN:Setup_EMails|FR:Paramétrage_EMails|ES:Configuración_EMails';
180llxHeader('', $langs->trans("Setup"), $wikihelp, '', 0, 0, '', '', '', 'mod-admin page-mails');
181
182print load_fiche_titre($langs->trans("EMailsSetup"), '', 'title_setup');
183
185
186// List of sending methods
187$listofmethods = array();
188$listofmethods['mail'] = 'PHP mail function';
189$listofmethods['smtps'] = 'SMTP/SMTPS socket library';
190if (version_compare(phpversion(), '7.0', '>=')) {
191 $listofmethods['swiftmailer'] = 'Swift Mailer socket library';
192}
193
194// List of oauth services
195$oauthservices = array();
196
197foreach ($conf->global as $key => $val) {
198 if (!empty($val) && preg_match('/^OAUTH_.*_ID$/', $key)) {
199 $key = preg_replace('/^OAUTH_/', '', $key);
200 $key = preg_replace('/_ID$/', '', $key);
201 if (preg_match('/^.*-/', $key)) {
202 $name = preg_replace('/^.*-/', '', $key);
203 } else {
204 $name = $langs->trans("NoName");
205 }
206 $provider = preg_replace('/-.*$/', '', $key);
207 $provider = ucfirst(strtolower($provider));
208
209 $oauthservices[$key] = $name." (".$provider.")";
210 }
211}
212
213if ($action == 'edit') {
214 if ($conf->use_javascript_ajax) {
215 print "\n".'<script type="text/javascript">';
216 print 'jQuery(document).ready(function () {
217 function initfields()
218 {
219 if (jQuery("#MAIN_MAIL_SENDMODE").val()==\'mail\')
220 {
221 console.log("I choose php mail mode");
222 jQuery(".drag").hide();
223 jQuery("#MAIN_MAIL_EMAIL_TLS").val(0);
224 jQuery("#MAIN_MAIL_EMAIL_TLS").prop("disabled", true);
225 jQuery("#MAIN_MAIL_EMAIL_STARTTLS").val(0);
226 jQuery("#MAIN_MAIL_EMAIL_STARTTLS").prop("disabled", true);
227 jQuery("#MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED").val(0);
228 jQuery("#MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED").prop("disabled", true);
229 jQuery("#MAIN_MAIL_EMAIL_DKIM_ENABLED").val(0);
230 jQuery("#MAIN_MAIL_EMAIL_DKIM_ENABLED").prop("disabled", true);
231 jQuery("#MAIN_MAIL_EMAIL_DKIM_DOMAIN").prop("disabled", true);
232 jQuery("#MAIN_MAIL_EMAIL_DKIM_SELECTOR").prop("disabled", true);
233 jQuery("#MAIN_MAIL_EMAIL_DKIM_PRIVATE_KEY").prop("disabled", true);
234 jQuery(".smtp_method").hide();
235 jQuery(".dkim").hide();
236 jQuery(".smtp_auth_method").hide();
237 ';
238 if ($linuxlike) {
239 print '
240 jQuery("#MAIN_MAIL_SMTP_SERVER").hide();
241 jQuery("#MAIN_MAIL_SMTP_PORT").hide();
242 jQuery("#smtp_server_mess").show();
243 jQuery("#smtp_port_mess").show();';
244 } else {
245 print '
246 jQuery("#MAIN_MAIL_SMTP_SERVER").prop("disabled", true);
247 jQuery("#MAIN_MAIL_SMTP_PORT").prop("disabled", true);
248 jQuery("#smtp_server_mess").hide();
249 jQuery("#smtp_port_mess").hide();';
250 }
251 print '
252 }
253 if (jQuery("#MAIN_MAIL_SENDMODE").val()==\'smtps\')
254 {
255 console.log("I choose smtps mode");
256 jQuery(".drag").show();
257 jQuery("#MAIN_MAIL_EMAIL_TLS").val(' . getDolGlobalString('MAIN_MAIL_EMAIL_TLS').');
258 jQuery("#MAIN_MAIL_EMAIL_TLS").removeAttr("disabled");
259 jQuery("#MAIN_MAIL_EMAIL_STARTTLS").val(' . getDolGlobalString('MAIN_MAIL_EMAIL_STARTTLS').');
260 jQuery("#MAIN_MAIL_EMAIL_STARTTLS").removeAttr("disabled");
261 jQuery("#MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED").val(' . getDolGlobalString('MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED').');
262 jQuery("#MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED").removeAttr("disabled");
263 jQuery("#MAIN_MAIL_EMAIL_DKIM_ENABLED").val(0);
264 jQuery("#MAIN_MAIL_EMAIL_DKIM_ENABLED").prop("disabled", true);
265 jQuery("#MAIN_MAIL_EMAIL_DKIM_DOMAIN").prop("disabled", true);
266 jQuery("#MAIN_MAIL_EMAIL_DKIM_SELECTOR").prop("disabled", true);
267 jQuery("#MAIN_MAIL_EMAIL_DKIM_PRIVATE_KEY").prop("disabled", true);
268 jQuery("#MAIN_MAIL_EMAIL_DKIM_DOMAIN").hide();
269 jQuery("#MAIN_MAIL_EMAIL_DKIM_SELECTOR").hide();
270 jQuery("#MAIN_MAIL_EMAIL_DKIM_PRIVATE_KEY").hide();
271 jQuery("#MAIN_MAIL_SMTP_SERVER").removeAttr("disabled");
272 jQuery("#MAIN_MAIL_SMTP_PORT").removeAttr("disabled");
273 jQuery("#MAIN_MAIL_SMTP_SERVER").show();
274 jQuery("#MAIN_MAIL_SMTP_PORT").show();
275 jQuery("#smtp_server_mess").hide();
276 jQuery("#smtp_port_mess").hide();
277 jQuery(".smtp_method").show();
278 jQuery(".dkim").hide();
279 jQuery(".smtp_auth_method").show();
280 }
281 if (jQuery("#MAIN_MAIL_SENDMODE").val()==\'swiftmailer\')
282 {
283 console.log("I choose swiftmailer mode");
284 jQuery(".drag").show();
285 jQuery("#MAIN_MAIL_EMAIL_TLS").val(' . getDolGlobalString('MAIN_MAIL_EMAIL_TLS').');
286 jQuery("#MAIN_MAIL_EMAIL_TLS").removeAttr("disabled");
287 jQuery("#MAIN_MAIL_EMAIL_STARTTLS").val(' . getDolGlobalString('MAIN_MAIL_EMAIL_STARTTLS').');
288 jQuery("#MAIN_MAIL_EMAIL_STARTTLS").removeAttr("disabled");
289 jQuery("#MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED").val(' . getDolGlobalString('MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED').');
290 jQuery("#MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED").removeAttr("disabled");
291 jQuery("#MAIN_MAIL_EMAIL_DKIM_ENABLED").val(' . getDolGlobalString('MAIN_MAIL_EMAIL_DKIM_ENABLED').');
292 jQuery("#MAIN_MAIL_EMAIL_DKIM_ENABLED").removeAttr("disabled");
293 jQuery("#MAIN_MAIL_EMAIL_DKIM_DOMAIN").removeAttr("disabled");
294 jQuery("#MAIN_MAIL_EMAIL_DKIM_SELECTOR").removeAttr("disabled");
295 jQuery("#MAIN_MAIL_EMAIL_DKIM_PRIVATE_KEY").removeAttr("disabled");
296 jQuery("#MAIN_MAIL_EMAIL_DKIM_DOMAIN").show();
297 jQuery("#MAIN_MAIL_EMAIL_DKIM_SELECTOR").show();
298 jQuery("#MAIN_MAIL_EMAIL_DKIM_PRIVATE_KEY").show();
299 jQuery("#MAIN_MAIL_SMTP_SERVER").removeAttr("disabled");
300 jQuery("#MAIN_MAIL_SMTP_PORT").removeAttr("disabled");
301 jQuery("#MAIN_MAIL_SMTP_SERVER").show();
302 jQuery("#MAIN_MAIL_SMTP_PORT").show();
303 jQuery("#smtp_server_mess").hide();
304 jQuery("#smtp_port_mess").hide();
305 jQuery(".smtp_method").show();
306 jQuery(".dkim").show();
307 jQuery(".smtp_auth_method").show();
308 }
309 }
310 function change_smtp_auth_method() {
311 console.log("Call smtp auth method");
312 if (jQuery("#MAIN_MAIL_SENDMODE").val()==\'smtps\' && jQuery("#radio_oauth").prop("checked")) {
313 jQuery(".smtp_pw").hide();
314 jQuery(".smtp_oauth_service").show();
315 } else if (jQuery("#MAIN_MAIL_SENDMODE").val()==\'swiftmailer\' && jQuery("#radio_oauth").prop("checked")) {
316 jQuery(".smtp_pw").hide();
317 jQuery(".smtp_oauth_service").show();
318 } else if(jQuery("#MAIN_MAIL_SENDMODE").val()==\'mail\'){
319 jQuery(".smtp_pw").hide();
320 jQuery(".smtp_oauth_service").hide();
321 } else {
322 jQuery(".smtp_pw").show();
323 jQuery(".smtp_oauth_service").hide();
324 }
325 }
326 initfields();
327 change_smtp_auth_method();
328 jQuery("#MAIN_MAIL_SENDMODE").change(function() {
329 initfields();
330 change_smtp_auth_method();
331 });
332 jQuery("#radio_pw, #radio_plain, #radio_oauth").change(function() {
333 change_smtp_auth_method();
334 });
335 jQuery("#MAIN_MAIL_EMAIL_TLS").change(function() {
336 if (jQuery("#MAIN_MAIL_EMAIL_TLS").val() == 1)
337 jQuery("#MAIN_MAIL_EMAIL_STARTTLS").val(0);
338 else
339 jQuery("#MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED").val(0);
340 });
341 jQuery("#MAIN_MAIL_EMAIL_STARTTLS").change(function() {
342 if (jQuery("#MAIN_MAIL_EMAIL_STARTTLS").val() == 1)
343 jQuery("#MAIN_MAIL_EMAIL_TLS").val(0);
344 else
345 jQuery("#MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED").val(0);
346 });
347 })';
348 print '</script>'."\n";
349 }
350
351 print '<form method="post" action="'.$_SERVER["PHP_SELF"].'">';
352 print '<input type="hidden" name="token" value="'.newToken().'">';
353 print '<input type="hidden" name="action" value="update">';
354
355 print dol_get_fiche_head($head, 'common', '', -1);
356
357 print '<span class="opacitymedium">'.$langs->trans("EMailsDesc")."</span><br>\n";
358 print "<br><br>\n";
359
360
361 clearstatcache();
362
363
364 print '<table class="noborder centpercent">';
365 print '<tr class="liste_titre"><td class="titlefieldmiddle">'.$langs->trans("Parameters").'</td><td></td></tr>';
366
367 // Method
368 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_SENDMODE").'</td><td>';
369
370 // SuperAdministrator access only
371 if (!isModEnabled('multicompany') || ($user->admin && !$user->entity)) {
372 print $form->selectarray('MAIN_MAIL_SENDMODE', $listofmethods, getDolGlobalString('MAIN_MAIL_SENDMODE', 'mail'));
373 } else {
374 $text = $listofmethods[getDolGlobalString('MAIN_MAIL_SENDMODE')];
375 if (empty($text)) {
376 $text = $langs->trans("Undefined");
377 }
378 $htmltext = $langs->trans("ContactSuperAdminForChange");
379 print $form->textwithpicto($text, $htmltext, 1, 'superadmin');
380 print '<input type="hidden" name="MAIN_MAIL_SENDMODE" value="'.getDolGlobalString('MAIN_MAIL_SENDMODE', 'mail').'">';
381 }
382 print '</td></tr>';
383
384 // Host server
385 print '<tr class="oddeven hideonmodemail">';
386 if (!$conf->use_javascript_ajax && $linuxlike && getDolGlobalString('MAIN_MAIL_SENDMODE', 'mail') == 'mail') {
387 print '<td>';
388 print $langs->trans("MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike");
389 print '</td><td>';
390 print '<span class="opacitymedium">'.$langs->trans("SeeLocalSendMailSetup").'</span>';
391 print '</td>';
392 } else {
393 print '<td>';
394 $mainserver = (getDolGlobalString('MAIN_MAIL_SMTP_SERVER') ? $conf->global->MAIN_MAIL_SMTP_SERVER : '');
395 $smtpserver = ini_get('SMTP') ? ini_get('SMTP') : $langs->transnoentities("Undefined");
396 if ($linuxlike) {
397 print $langs->trans("MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike");
398 } else {
399 print $langs->trans("MAIN_MAIL_SMTP_SERVER", $smtpserver);
400 }
401 print '</td><td>';
402 // SuperAdministrator access only
403 if (!isModEnabled('multicompany') || ($user->admin && !$user->entity)) {
404 print '<input class="flat minwidth300" id="MAIN_MAIL_SMTP_SERVER" name="MAIN_MAIL_SMTP_SERVER" value="'.$mainserver.'" autocomplete="off">';
405 print '<input type="hidden" id="MAIN_MAIL_SMTP_SERVER_sav" name="MAIN_MAIL_SMTP_SERVER_sav" value="'.$mainserver.'">';
406 print '<span id="smtp_server_mess" class="opacitymedium">'.$langs->trans("SeeLocalSendMailSetup").'</span>';
407 print ' <span class="opacitymedium smtp_method">'.$langs->trans("SeeLinkToOnlineDocumentation").'</span>';
408 } else {
409 $text = !empty($mainserver) ? $mainserver : $smtpserver;
410 $htmltext = $langs->trans("ContactSuperAdminForChange");
411 print $form->textwithpicto($text, $htmltext, 1, 'superadmin');
412 print '<input type="hidden" id="MAIN_MAIL_SMTP_SERVER" name="MAIN_MAIL_SMTP_SERVER" value="'.$mainserver.'">';
413 }
414 print '</td>';
415 }
416 print '</tr>';
417
418 // Port
419 print '<tr class="oddeven hideonmodemail"><td>';
420 if (!$conf->use_javascript_ajax && $linuxlike && getDolGlobalString('MAIN_MAIL_SENDMODE', 'mail') == 'mail') {
421 print $langs->trans("MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike");
422 print '</td><td>';
423 print '<span class="opacitymedium">'.$langs->trans("SeeLocalSendMailSetup").'</span>';
424 } else {
425 $mainport = (getDolGlobalString('MAIN_MAIL_SMTP_PORT') ? $conf->global->MAIN_MAIL_SMTP_PORT : '');
426 $smtpport = ini_get('smtp_port') ? ini_get('smtp_port') : $langs->transnoentities("Undefined");
427 if ($linuxlike) {
428 print $langs->trans("MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike");
429 } else {
430 print $langs->trans("MAIN_MAIL_SMTP_PORT", $smtpport);
431 }
432 print '</td><td>';
433 // SuperAdministrator access only
434 if (!isModEnabled('multicompany') || ($user->admin && !$user->entity)) {
435 print '<input class="flat" id="MAIN_MAIL_SMTP_PORT" name="MAIN_MAIL_SMTP_PORT" size="3" value="'.$mainport.'">';
436 print '<input type="hidden" id="MAIN_MAIL_SMTP_PORT_sav" name="MAIN_MAIL_SMTP_PORT_sav" value="'.$mainport.'">';
437 print '<span id="smtp_port_mess" class="opacitymedium">'.$langs->trans("SeeLocalSendMailSetup").'</span>';
438 } else {
439 $text = (!empty($mainport) ? $mainport : $smtpport);
440 $htmltext = $langs->trans("ContactSuperAdminForChange");
441 print $form->textwithpicto($text, $htmltext, 1, 'superadmin');
442 print '<input type="hidden" id="MAIN_MAIL_SMTP_PORT" name="MAIN_MAIL_SMTP_PORT" value="'.$mainport.'">';
443 }
444 }
445 print '</td></tr>';
446
447 // Auth mode
448 if (!empty($conf->use_javascript_ajax) || (in_array(getDolGlobalString('MAIN_MAIL_SENDMODE', 'mail'), array('smtps', 'swiftmailer')))) {
449 print '<tr class="oddeven smtp_auth_method"><td>'.$langs->trans("MAIN_MAIL_SMTPS_AUTH_TYPE").'</td><td>';
450 $vartosmtpstype = 'MAIN_MAIL_SMTPS_AUTH_TYPE';
451 if (!isModEnabled('multicompany') || ($user->admin && !$user->entity)) {
452 // Note: Default value for MAIN_MAIL_SMTPS_AUTH_TYPE if not defined is 'LOGIN' (but login/pass may be empty and they won't be provided in such a case)
453 print '<input type="radio" id="radio_pw" name="'.$vartosmtpstype.'" value="LOGIN"'.(getDolGlobalString($vartosmtpstype, 'LOGIN') == 'LOGIN' ? ' checked' : '').'> ';
454 print '<label for="radio_pw" >'.$langs->trans("UseAUTHLOGIN").'</label>';
455 print '<br>';
456 print '<input type="radio" id="radio_plain" name="'.$vartosmtpstype.'" value="PLAIN"'.(getDolGlobalString($vartosmtpstype, 'PLAIN') == 'PLAIN' ? ' checked' : '').'> ';
457 print '<label for="radio_plain" >'.$langs->trans("UseAUTHPLAIN").'</label>';
458 print '<br>';
459 print '<input type="radio" id="radio_oauth" name="'.$vartosmtpstype.'" value="XOAUTH2"'.(getDolGlobalString($vartosmtpstype) == 'XOAUTH2' ? ' checked' : '').(isModEnabled('oauth') ? '' : ' disabled').'> ';
460 print '<label for="radio_oauth" >'.$form->textwithpicto($langs->trans("UseOauth"), $langs->trans("OauthNotAvailableForAllAndHadToBeCreatedBefore")).'</label>';
461 if (!isModEnabled('oauth')) {
462 print ' &nbsp; <a href="'.DOL_URL_ROOT.'/admin/modules.php?search_keyword=oauth">'.$langs->trans("EnableModuleX", "OAuth").'</a>';
463 } else {
464 print ' &nbsp; <a href="'.DOL_URL_ROOT.'/admin/oauth.php">'.$langs->trans("SetupModuleX", " OAuth").'</a>';
465 }
466 } else {
467 $value = getDolGlobalString($vartosmtpstype, 'LOGIN');
468 $htmltext = $langs->trans("ContactSuperAdminForChange");
469 print $form->textwithpicto($langs->trans("MAIN_MAIL_SMTPS_AUTH_TYPE"), $htmltext, 1, 'superadmin');
470 print '<input type="hidden" id="MAIN_MAIL_SMTPS_AUTH_TYPE" name="MAIN_MAIL_SMTPS_AUTH_TYPE" value="'.$value.'">';
471 }
472 print '</td></tr>';
473 }
474
475 // ID
476 if (!empty($conf->use_javascript_ajax) || (in_array(getDolGlobalString('MAIN_MAIL_SENDMODE', 'mail'), array('smtps', 'swiftmailer')))) {
477 $mainstmpid = (getDolGlobalString('MAIN_MAIL_SMTPS_ID') ? $conf->global->MAIN_MAIL_SMTPS_ID : '');
478 print '<tr class="drag drop oddeven"><td>'.$langs->trans("MAIN_MAIL_SMTPS_ID").'</td><td>';
479 // SuperAdministrator access only
480 if (!isModEnabled('multicompany') || ($user->admin && !$user->entity)) {
481 print '<input class="flat" name="MAIN_MAIL_SMTPS_ID" size="32" value="'.$mainstmpid.'">';
482 } else {
483 $htmltext = $langs->trans("ContactSuperAdminForChange");
484 print $form->textwithpicto($conf->global->MAIN_MAIL_SMTPS_ID, $htmltext, 1, 'superadmin');
485 print '<input type="hidden" name="MAIN_MAIL_SMTPS_ID" value="'.$mainstmpid.'">';
486 }
487 print '</td></tr>';
488 }
489
490
491 // PW
492 if (!empty($conf->use_javascript_ajax) || (in_array(getDolGlobalString('MAIN_MAIL_SENDMODE', 'mail'), array('smtps', 'swiftmailer')))) {
493 $mainsmtppw = (getDolGlobalString('MAIN_MAIL_SMTPS_PW') ? $conf->global->MAIN_MAIL_SMTPS_PW : '');
494 print '<tr class="drag drop oddeven smtp_pw"><td>';
495 print $form->textwithpicto($langs->trans("MAIN_MAIL_SMTPS_PW"), $langs->trans("WithGMailYouCanCreateADedicatedPassword"));
496 print '</td><td>';
497 // SuperAdministrator access only
498 if (!isModEnabled('multicompany') || ($user->admin && !$user->entity)) {
499 print '<input class="flat" type="password" name="MAIN_MAIL_SMTPS_PW" size="32" value="' . htmlspecialchars($mainsmtppw, ENT_COMPAT, 'UTF-8') . '" autocomplete="off">';
500 } else {
501 $htmltext = $langs->trans("ContactSuperAdminForChange");
502 print $form->textwithpicto($conf->global->MAIN_MAIL_SMTPS_PW, $htmltext, 1, 'superadmin');
503 print '<input type="hidden" name="MAIN_MAIL_SMTPS_PW" value="' . htmlspecialchars($mainsmtppw, ENT_COMPAT, 'UTF-8') . '">';
504 }
505 print '</td></tr>';
506 }
507
508 // OAUTH service provider
509 if (!empty($conf->use_javascript_ajax) || (in_array(getDolGlobalString('MAIN_MAIL_SENDMODE', 'mail'), array('smtps', 'swiftmailer')))) {
510 print '<tr class="oddeven smtp_oauth_service"><td>'.$langs->trans("MAIN_MAIL_SMTPS_OAUTH_SERVICE").'</td><td>';
511
512 // SuperAdministrator access only
513 if (!isModEnabled('multicompany') || ($user->admin && !$user->entity)) {
514 print $form->selectarray('MAIN_MAIL_SMTPS_OAUTH_SERVICE', $oauthservices, getDolGlobalString('MAIN_MAIL_SMTPS_OAUTH_SERVICE'));
515 } else {
516 $text = $oauthservices[getDolGlobalString('MAIN_MAIL_SMTPS_OAUTH_SERVICE')];
517 if (empty($text)) {
518 $text = $langs->trans("Undefined");
519 }
520 $htmltext = $langs->trans("ContactSuperAdminForChange");
521 print $form->textwithpicto($text, $htmltext, 1, 'superadmin');
522 print '<input type="hidden" name="MAIN_MAIL_SMTPS_OAUTH_SERVICE" value="' . getDolGlobalString('MAIN_MAIL_SMTPS_OAUTH_SERVICE').'">';
523 }
524 print '</td></tr>';
525 }
526
527 // TLS
528 print '<tr class="oddeven hideonmodemail"><td>'.$langs->trans("MAIN_MAIL_EMAIL_TLS").'</td><td>';
529 if (!empty($conf->use_javascript_ajax) || (in_array(getDolGlobalString('MAIN_MAIL_SENDMODE', 'mail'), array('smtps', 'swiftmailer')))) {
530 if (function_exists('openssl_open')) {
531 print $form->selectyesno('MAIN_MAIL_EMAIL_TLS', (getDolGlobalString('MAIN_MAIL_EMAIL_TLS') ? $conf->global->MAIN_MAIL_EMAIL_TLS : 0), 1);
532 } else {
533 print yn(0).' ('.$langs->trans("YourPHPDoesNotHaveSSLSupport").')';
534 }
535 } else {
536 print yn(0).' ('.$langs->trans("NotSupported").')';
537 }
538 print '</td></tr>';
539
540 // STARTTLS
541 print '<tr class="oddeven hideonmodemail"><td>'.$langs->trans("MAIN_MAIL_EMAIL_STARTTLS").'</td><td>';
542 if (!empty($conf->use_javascript_ajax) || (in_array(getDolGlobalString('MAIN_MAIL_SENDMODE', 'mail'), array('smtps', 'swiftmailer')))) {
543 if (function_exists('openssl_open')) {
544 print $form->selectyesno('MAIN_MAIL_EMAIL_STARTTLS', (getDolGlobalString('MAIN_MAIL_EMAIL_STARTTLS') ? $conf->global->MAIN_MAIL_EMAIL_STARTTLS : 0), 1);
545 } else {
546 print yn(0).' ('.$langs->trans("YourPHPDoesNotHaveSSLSupport").')';
547 }
548 } else {
549 print yn(0).' ('.$langs->trans("NotSupported").')';
550 }
551 print '</td></tr>';
552
553 // SMTP_ALLOW_SELF_SIGNED
554 print '<tr class="oddeven hideonmodemail"><td>'.$langs->trans("MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED").'</td><td>';
555 if (!empty($conf->use_javascript_ajax) || (in_array(getDolGlobalString('MAIN_MAIL_SENDMODE', 'mail'), array('smtps', 'swiftmailer')))) {
556 if (function_exists('openssl_open')) {
557 print $form->selectyesno('MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED', (getDolGlobalString('MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED') ? $conf->global->MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED : 0), 1);
558 } else {
559 print yn(0).' ('.$langs->trans("YourPHPDoesNotHaveSSLSupport").')';
560 }
561 } else {
562 print yn(0).' ('.$langs->trans("NotSupported").')';
563 }
564 print '</td></tr>';
565
566 // DKIM
567 print '<tr class="oddeven dkim"><td>'.$langs->trans("MAIN_MAIL_EMAIL_DKIM_ENABLED").'</td><td>';
568 if (!empty($conf->use_javascript_ajax) || (in_array(getDolGlobalString('MAIN_MAIL_SENDMODE', 'mail'), array('swiftmailer')))) {
569 if (function_exists('openssl_open')) {
570 print $form->selectyesno('MAIN_MAIL_EMAIL_DKIM_ENABLED', (getDolGlobalString('MAIN_MAIL_EMAIL_DKIM_ENABLED') ? $conf->global->MAIN_MAIL_EMAIL_DKIM_ENABLED : 0), 1);
571 } else {
572 print yn(0).' ('.$langs->trans("YourPHPDoesNotHaveSSLSupport").')';
573 }
574 } else {
575 print yn(0).' ('.$langs->trans("NotSupported").')';
576 }
577 print '</td></tr>';
578
579 // DKIM Domain
580 print '<tr class="oddeven dkim"><td>'.$langs->trans("MAIN_MAIL_EMAIL_DKIM_DOMAIN").'</td>';
581 print '<td><input class="flat" id="MAIN_MAIL_EMAIL_DKIM_DOMAIN" name="MAIN_MAIL_EMAIL_DKIM_DOMAIN" size="32" value="'.(getDolGlobalString('MAIN_MAIL_EMAIL_DKIM_DOMAIN') ? $conf->global->MAIN_MAIL_EMAIL_DKIM_DOMAIN : '');
582 print '"></td></tr>';
583
584 // DKIM Selector
585 print '<tr class="oddeven dkim"><td>'.$langs->trans("MAIN_MAIL_EMAIL_DKIM_SELECTOR").'</td>';
586 print '<td><input class="flat" id="MAIN_MAIL_EMAIL_DKIM_SELECTOR" name="MAIN_MAIL_EMAIL_DKIM_SELECTOR" size="32" value="'.(getDolGlobalString('MAIN_MAIL_EMAIL_DKIM_SELECTOR') ? $conf->global->MAIN_MAIL_EMAIL_DKIM_SELECTOR : '');
587 print '"></td></tr>';
588
589 // DKIM PRIVATE KEY
590 print '<tr class="oddeven dkim"><td>'.$langs->trans("MAIN_MAIL_EMAIL_DKIM_PRIVATE_KEY").'</td>';
591 print '<td><textarea id="MAIN_MAIL_EMAIL_DKIM_PRIVATE_KEY" name="MAIN_MAIL_EMAIL_DKIM_PRIVATE_KEY" rows="15" cols="100">'.(getDolGlobalString('MAIN_MAIL_EMAIL_DKIM_PRIVATE_KEY') ? $conf->global->MAIN_MAIL_EMAIL_DKIM_PRIVATE_KEY : '').'</textarea>';
592 print '</td></tr>';
593
594 print '</table>';
595
596
597 print '<br>';
598
599
600 print '<table class="noborder centpercent">';
601 print '<tr class="liste_titre"><td class="titlefieldmiddle">'.$langs->trans("ParametersForTestEnvironment").'</td><td>'.$langs->trans("Value").'</td></tr>';
602
603 // Disable
604 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_DISABLE_ALL_MAILS").'</td><td>';
605 print $form->selectyesno('MAIN_DISABLE_ALL_MAILS', getDolGlobalString('MAIN_DISABLE_ALL_MAILS'), 1);
606 print '</td></tr>';
607
608 // Force e-mail recipient
609 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_FORCE_SENDTO").'</td><td>';
610 print '<input class="flat" name="MAIN_MAIL_FORCE_SENDTO" size="32" value="'.(getDolGlobalString('MAIN_MAIL_FORCE_SENDTO') ? $conf->global->MAIN_MAIL_FORCE_SENDTO : '').'" />';
611 print '</td></tr>';
612
613 print '</table>';
614
615
616 print '<br>';
617
618
619 print '<table class="noborder centpercent">';
620 print '<tr class="liste_titre"><td class="titlefieldmiddle">'.$langs->trans("OtherOptions").'</td><td></td></tr>';
621
622 // From
623 $help = $form->textwithpicto('', $langs->trans("EMailHelpMsgSPFDKIM"));
624 print '<tr class="oddeven"><td class="fieldrequired">';
625 print $langs->trans("MAIN_MAIL_EMAIL_FROM", ini_get('sendmail_from') ? ini_get('sendmail_from') : $langs->transnoentities("Undefined"));
626 print ' '.$help;
627 print '</td>';
628 print '<td><input class="flat minwidth300" name="MAIN_MAIL_EMAIL_FROM" value="'.(getDolGlobalString('MAIN_MAIL_EMAIL_FROM') ? $conf->global->MAIN_MAIL_EMAIL_FROM : '');
629 print '"></td></tr>';
630
631 // Default from type
632 $liste = array();
633 $liste['user'] = $langs->trans('UserEmail');
634 $liste['company'] = $langs->trans('CompanyEmail').' ('.(!getDolGlobalString('MAIN_INFO_SOCIETE_MAIL') ? $langs->trans("NotDefined") : $conf->global->MAIN_INFO_SOCIETE_MAIL).')';
635
636 print '<tr class="oddeven"><td>'.$langs->trans('MAIN_MAIL_DEFAULT_FROMTYPE').'</td><td>';
637 print $form->selectarray('MAIN_MAIL_DEFAULT_FROMTYPE', $liste, getDolGlobalString('MAIN_MAIL_DEFAULT_FROMTYPE'), 0);
638 print '</td></tr>';
639
640 // From
641 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_ERRORS_TO").'</td>';
642 print '<td><input class="flat width300" name="MAIN_MAIL_ERRORS_TO" value="'.getDolGlobalString('MAIN_MAIL_ERRORS_TO').'">';
643 print '</td></tr>';
644
645 // Autocopy to
646 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_AUTOCOPY_TO").'</td>';
647 print '<td><input class="flat width300" name="MAIN_MAIL_AUTOCOPY_TO" value="'.getDolGlobalString('MAIN_MAIL_AUTOCOPY_TO').'">';
648 print '</td></tr>';
649
650 // Add user to select destinaries list
651 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_ENABLED_USER_DEST_SELECT").'</td><td>';
652 print $form->selectyesno('MAIN_MAIL_ENABLED_USER_DEST_SELECT', getDolGlobalString('MAIN_MAIL_ENABLED_USER_DEST_SELECT'), 1);
653 print '</td></tr>';
654 // Disable autoselect to
655 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_NO_WITH_TO_SELECTED").'</td><td>';
656 print $form->selectyesno('MAIN_MAIL_NO_WITH_TO_SELECTED', getDolGlobalString('MAIN_MAIL_NO_WITH_TO_SELECTED'), 1);
657 print '</td></tr>';
658
659 print '</table>';
660
661 print dol_get_fiche_end();
662
663 print $form->buttonsSaveCancel();
664
665 print '</form>';
666} else {
667 print dol_get_fiche_head($head, 'common', '', -1);
668
669 print '<span class="opacitymedium">'.$langs->trans("EMailsDesc")."</span><br>\n";
670 print "<br><br>\n";
671
672
673 if (!getDolGlobalString('MAIN_DISABLE_ALL_MAILS')) {
674 print '<div class="div-table-responsive-no-min">'; // You can use div-table-responsive-no-min if you don't need reserved height for your table
675 print '<table class="noborder centpercent">';
676 print '<tr class="liste_titre"><td class="titlefieldmiddle">'.$langs->trans("Parameters").'</td><td></td></tr>';
677
678 // Method
679 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_SENDMODE").'</td><td>';
680 $text = $listofmethods[getDolGlobalString('MAIN_MAIL_SENDMODE', 'mail')];
681 if (empty($text)) {
682 $text = $langs->trans("Undefined").img_warning();
683 }
684 print $text;
685
686 // Note MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP is set to 1 by default if not set
687 if (getDolGlobalString('MAIN_MAIL_SENDMODE', 'mail') == 'mail' && getDolGlobalString('MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP')) {
688 $textwarning = $langs->trans("WarningPHPMail", $listofmethods['mail'], $listofmethods['smtps']).'<br>'.$langs->trans("WarningPHPMailA").'<br>'.$langs->trans("WarningPHPMailB").'<br>'.$langs->trans("WarningPHPMailC").'<br><br>'.$langs->trans("WarningPHPMailD");
689 print $form->textwithpicto('', '<span class="small">'.$textwarning.'</span>', 1, 'help', 'nomargintop');
690 }
691
692 print '</td></tr>';
693
694 // Host server
695 if ($linuxlike && (getDolGlobalString('MAIN_MAIL_SENDMODE', 'mail') == 'mail')) {
696 //print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike").'</td><td><span class="opacitymedium">'.$langs->trans("SeeLocalSendMailSetup").'</span></td></tr>';
697 } else {
698 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_SMTP_SERVER", ini_get('SMTP') ? ini_get('SMTP') : $langs->transnoentities("Undefined")).'</td><td>'.(getDolGlobalString('MAIN_MAIL_SMTP_SERVER') ? $conf->global->MAIN_MAIL_SMTP_SERVER : '').'</td></tr>';
699 }
700
701
702 // Port
703 if ($linuxlike && (getDolGlobalString('MAIN_MAIL_SENDMODE', 'mail') == 'mail')) {
704 //print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike").'</td><td><span class="opacitymedium">'.$langs->trans("SeeLocalSendMailSetup").'</span></td></tr>';
705 } else {
706 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_SMTP_PORT", ini_get('smtp_port') ? ini_get('smtp_port') : $langs->transnoentities("Undefined")).'</td><td>'.(getDolGlobalString('MAIN_MAIL_SMTP_PORT') ? $conf->global->MAIN_MAIL_SMTP_PORT : '').'</td></tr>';
707 }
708
709 // AUTH method
710 if (in_array(getDolGlobalString('MAIN_MAIL_SENDMODE', 'mail'), array('smtps', 'swiftmailer'))) {
711 $authtype = getDolGlobalString('MAIN_MAIL_SMTPS_AUTH_TYPE', 'LOGIN');
712 $text = '';
713 if ($authtype === "LOGIN") {
714 $text = $langs->trans("UseAUTHLOGIN");
715 } elseif ($authtype === "PLAIN") {
716 $text = $langs->trans("UseAUTHPLAIN");
717 } elseif ($authtype === "XOAUTH2") {
718 $text = $langs->trans("UseOauth");
719 }
720 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_SMTPS_AUTH_TYPE").'</td><td>'.$text.'</td></tr>';
721 }
722
723 // SMTPS ID
724 if (in_array(getDolGlobalString('MAIN_MAIL_SENDMODE', 'mail'), array('smtps', 'swiftmailer'))) {
725 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_SMTPS_ID").'</td><td>' . getDolGlobalString('MAIN_MAIL_SMTPS_ID').'</td></tr>';
726 }
727
728 // SMTPS PW
729 if (in_array(getDolGlobalString('MAIN_MAIL_SENDMODE', 'mail'), array('smtps', 'swiftmailer')) && getDolGlobalString('MAIN_MAIL_SMTPS_AUTH_TYPE') != "XOAUTH2") {
730 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_SMTPS_PW").'</td><td>'.preg_replace('/./', '*', getDolGlobalString('MAIN_MAIL_SMTPS_PW')).'</td></tr>';
731 }
732
733 // SMTPS oauth service
734 if (in_array(getDolGlobalString('MAIN_MAIL_SENDMODE', 'mail'), array('smtps', 'swiftmailer')) && getDolGlobalString('MAIN_MAIL_SMTPS_AUTH_TYPE') === "XOAUTH2") {
735 $text = $oauthservices[getDolGlobalString('MAIN_MAIL_SMTPS_OAUTH_SERVICE')];
736 if (empty($text)) {
737 $text = $langs->trans("Undefined").img_warning();
738 }
739 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_SMTPS_OAUTH_SERVICE").'</td><td>'.$text.'</td></tr>';
740 }
741
742 // TLS
743 if ($linuxlike && (getDolGlobalString('MAIN_MAIL_SENDMODE', 'mail') == 'mail')) {
744 // Nothing
745 } else {
746 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_EMAIL_TLS").'</td><td>';
747 if (in_array(getDolGlobalString('MAIN_MAIL_SENDMODE', 'mail'), array('smtps', 'swiftmailer'))) {
748 if (function_exists('openssl_open')) {
749 print yn(getDolGlobalString('MAIN_MAIL_EMAIL_TLS'));
750 } else {
751 print yn(0).' ('.$langs->trans("YourPHPDoesNotHaveSSLSupport").')';
752 }
753 } else {
754 print '<span class="opacitymedium">'.yn(0).' ('.$langs->trans("NotSupported").')</span>';
755 }
756 print '</td></tr>';
757 }
758
759 // STARTTLS
760 if ($linuxlike && (getDolGlobalString('MAIN_MAIL_SENDMODE', 'mail') == 'mail')) {
761 // Nothing
762 } else {
763 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_EMAIL_STARTTLS").'</td><td>';
764 if (in_array(getDolGlobalString('MAIN_MAIL_SENDMODE', 'mail'), array('smtps', 'swiftmailer'))) {
765 if (function_exists('openssl_open')) {
766 print yn(getDolGlobalString('MAIN_MAIL_EMAIL_STARTTLS'));
767 } else {
768 print yn(0).' ('.$langs->trans("YourPHPDoesNotHaveSSLSupport").')';
769 }
770 } else {
771 //print '<span class="opacitymedium">'.yn(0).' ('.$langs->trans("NotSupported").')</span>';
772 }
773 print '</td></tr>';
774 }
775
776 // SMTP_ALLOW_SELF_SIGNED
777 if ($linuxlike && (getDolGlobalString('MAIN_MAIL_SENDMODE', 'mail') == 'mail')) {
778 // Nothing
779 } else {
780 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED").'</td><td>';
781 if (in_array(getDolGlobalString('MAIN_MAIL_SENDMODE', 'mail'), array('smtps', 'swiftmailer'))) {
782 if (function_exists('openssl_open')) {
783 print yn(getDolGlobalString('MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED'));
784 } else {
785 print yn(0).' ('.$langs->trans("YourPHPDoesNotHaveSSLSupport").')';
786 }
787 } else {
788 print '<span class="opacitymedium">'.yn(0).' ('.$langs->trans("NotSupported").')</span>';
789 }
790 print '</td></tr>';
791 }
792
793 if (getDolGlobalString('MAIN_MAIL_SENDMODE') == 'swiftmailer') {
794 // DKIM
795 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_EMAIL_DKIM_ENABLED").'</td><td>';
796 if (in_array(getDolGlobalString('MAIN_MAIL_SENDMODE', 'mail'), array('swiftmailer'))) {
797 if (function_exists('openssl_open')) {
798 print yn(getDolGlobalInt('MAIN_MAIL_EMAIL_DKIM_ENABLED'));
799 } else {
800 print yn(0).' ('.$langs->trans("YourPHPDoesNotHaveSSLSupport").')';
801 }
802 } else {
803 print yn(0).' ('.$langs->trans("NotSupported").')';
804 }
805 print '</td></tr>';
806
807 // Domain
808 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_EMAIL_DKIM_DOMAIN").'</td>';
809 print '<td>'.getDolGlobalString('MAIN_MAIL_EMAIL_DKIM_DOMAIN');
810 print '</td></tr>';
811
812 // Selector
813 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_EMAIL_DKIM_SELECTOR").'</td>';
814 print '<td>'.getDolGlobalString('MAIN_MAIL_EMAIL_DKIM_SELECTOR');
815 print '</td></tr>';
816
817 // PRIVATE KEY
818 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_EMAIL_DKIM_PRIVATE_KEY").'</td>';
819 print '<td>'.getDolGlobalString('MAIN_MAIL_EMAIL_DKIM_PRIVATE_KEY');
820 print '</td></tr>';
821 }
822
823 print '</table>';
824 print '</div>';
825
826 if (getDolGlobalString('MAIN_MAIL_SENDMODE', 'mail') == 'mail' && !getDolGlobalString('MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP')) {
827 $messagetoshow = $langs->trans("WarningPHPMail", $listofmethods['mail'], $listofmethods['smtps']).'<br>'.$langs->trans("WarningPHPMailA").'<br>'.$langs->trans("WarningPHPMailB").'<br>'.$langs->trans("WarningPHPMailC").'<br><br>'.$langs->trans("WarningPHPMailD");
828 $messagetoshow .= ' '.$langs->trans("WarningPHPMailDbis", '{s1}', '{s2}');
829 $linktosetvar1 = '<a class="reposition" href="'.$_SERVER["PHP_SELF"].'?action=disablephpmailwarning&token='.newToken().'">';
830 $linktosetvar2 = '</a>';
831 $messagetoshow = str_replace('{s1}', $linktosetvar1, $messagetoshow);
832 $messagetoshow = str_replace('{s2}', $linktosetvar2, $messagetoshow);
833 //print $messagetoshow;
834 print info_admin($messagetoshow, 0, 0, 'warning', 'nomargintop', '', 'warning');
835 }
836
837 print '<br>';
838 }
839
840
841 print '<div class="div-table-responsive-no-min">'; // You can use div-table-responsive-no-min if you don't need reserved height for your table
842 print '<table class="noborder centpercent">';
843 print '<tr class="liste_titre"><td class="titlefieldmiddle">'.$langs->trans("ParametersForTestEnvironment").'</td><td>'.$langs->trans("Value").'</td></tr>';
844
845 // Disable
846 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_DISABLE_ALL_MAILS").'</td><td>';
847 if (!empty($conf->use_javascript_ajax)) {
848 print ajax_constantonoff('MAIN_DISABLE_ALL_MAILS', array(), null, 0, 0, 1, 2, 0, 0, '_red').'</a>';
849 } else {
850 print yn(getDolGlobalString('MAIN_DISABLE_ALL_MAILS'));
851 if (getDolGlobalString('MAIN_DISABLE_ALL_MAILS')) {
852 print img_warning($langs->trans("Disabled"));
853 }
854 }
855 print '</td></tr>';
856
857 if (!getDolGlobalString('MAIN_DISABLE_ALL_MAILS')) {
858 // Force e-mail recipient
859 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_FORCE_SENDTO").'</td><td>'.getDolGlobalString('MAIN_MAIL_FORCE_SENDTO');
860 if (getDolGlobalString('MAIN_MAIL_FORCE_SENDTO')) {
861 if (!isValidEmail(getDolGlobalString('MAIN_MAIL_FORCE_SENDTO'))) {
862 print img_warning($langs->trans("ErrorBadEMail"));
863 } else {
864 print img_warning($langs->trans("RecipientEmailsWillBeReplacedWithThisValue"));
865 }
866 }
867 print '</td></tr>';
868 }
869
870 print '</table>';
871 print '</div>';
872
873
874 print '<br>';
875
876
877 print '<div class="div-table-responsive-no-min">'; // You can use div-table-responsive-no-min if you don't need reserved height for your table
878 print '<table class="noborder centpercent">';
879 print '<tr class="liste_titre"><td class="titlefieldmiddle">'.$langs->trans("OtherOptions").'</td><td></td></tr>';
880
881 // From
882 $help = $form->textwithpicto('', $langs->trans("EMailHelpMsgSPFDKIM"));
883 print '<tr class="oddeven"><td>';
884 print $langs->trans("MAIN_MAIL_EMAIL_FROM", ini_get('sendmail_from') ? ini_get('sendmail_from') : $langs->transnoentities("Undefined"));
885 print ' '.$help;
886 print '</td>';
887 print '<td>' . getDolGlobalString('MAIN_MAIL_EMAIL_FROM');
888 if (!getDolGlobalString('MAIN_MAIL_EMAIL_FROM')) {
889 print img_warning($langs->trans("Mandatory"));
890 } elseif (!isValidEmail($conf->global->MAIN_MAIL_EMAIL_FROM)) {
891 print img_warning($langs->trans("ErrorBadEMail"));
892 }
893 print '</td></tr>';
894
895 // Default from type
896 $liste = array();
897 $liste['user'] = $langs->trans('UserEmail');
898 $liste['company'] = $langs->trans('CompanyEmail').' ('.getDolGlobalString('MAIN_INFO_SOCIETE_MAIL', $langs->trans("NotDefined")).')';
899 $sql = 'SELECT rowid, label, email FROM '.MAIN_DB_PREFIX.'c_email_senderprofile';
900 $sql .= ' WHERE active = 1 AND (private = 0 OR private = '.((int) $user->id).')';
901 $resql = $db->query($sql);
902 if ($resql) {
903 $num = $db->num_rows($resql);
904 $i = 0;
905 while ($i < $num) {
906 $obj = $db->fetch_object($resql);
907 if ($obj) {
908 $liste['senderprofile_'.$obj->rowid] = $obj->label.' <'.$obj->email.'>';
909 }
910 $i++;
911 }
912 } else {
913 dol_print_error($db);
914 }
915
916 print '<tr class="oddeven"><td>'.$langs->trans('MAIN_MAIL_DEFAULT_FROMTYPE').'</td>';
917 print '<td>';
918 if (getDolGlobalString('MAIN_MAIL_DEFAULT_FROMTYPE') === 'robot') {
919 print $langs->trans('RobotEmail');
920 } elseif (getDolGlobalString('MAIN_MAIL_DEFAULT_FROMTYPE') === 'user') {
921 print $langs->trans('UserEmail');
922 } elseif (getDolGlobalString('MAIN_MAIL_DEFAULT_FROMTYPE') === 'company') {
923 print $langs->trans('CompanyEmail').' '.dol_escape_htmltag('<'.$mysoc->email.'>');
924 } else {
925 $id = preg_replace('/senderprofile_/', '', getDolGlobalString('MAIN_MAIL_DEFAULT_FROMTYPE'));
926 if ($id > 0) {
927 include_once DOL_DOCUMENT_ROOT.'/core/class/emailsenderprofile.class.php';
928 $emailsenderprofile = new EmailSenderProfile($db);
929 $emailsenderprofile->fetch($id);
930 print $emailsenderprofile->label.' '.dol_escape_htmltag('<'.$emailsenderprofile->email.'>');
931 }
932 }
933 print '</td></tr>';
934
935 // Errors To
936 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_ERRORS_TO").'</td>';
937 print '<td>'.(getDolGlobalString('MAIN_MAIL_ERRORS_TO'));
938 if (getDolGlobalString('MAIN_MAIL_ERRORS_TO') && !isValidEmail($conf->global->MAIN_MAIL_ERRORS_TO)) {
939 print img_warning($langs->trans("ErrorBadEMail"));
940 }
941 print '</td></tr>';
942
943 // Autocopy to
944 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_AUTOCOPY_TO").'</td>';
945 print '<td>';
946 if (getDolGlobalString('MAIN_MAIL_AUTOCOPY_TO')) {
947 $listofemail = explode(',', getDolGlobalString('MAIN_MAIL_AUTOCOPY_TO'));
948 $i = 0;
949 foreach ($listofemail as $key => $val) {
950 if ($i) {
951 print ', ';
952 }
953 $val = trim($val);
954 print $val;
955 if (!isValidEmail($val, 0, 1)) {
956 print img_warning($langs->trans("ErrorBadEMail", $val));
957 }
958 $i++;
959 }
960 } else {
961 print '&nbsp;';
962 }
963 print '</td></tr>';
964
965 //Add user to select destinaries list
966 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_ENABLED_USER_DEST_SELECT").'</td><td>'.yn(getDolGlobalString('MAIN_MAIL_ENABLED_USER_DEST_SELECT')).'</td></tr>';
967 //Disable autoselect to
968 print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_NO_WITH_TO_SELECTED").'</td><td>'.yn(getDolGlobalString('MAIN_MAIL_NO_WITH_TO_SELECTED')).'</td></tr>';
969
970 print '</table>';
971 print '</div>';
972
973
974 print dol_get_fiche_end();
975
976
977 // Actions button
978 print '<div class="tabsAction">';
979
980 print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=edit&token='.newToken().'">'.$langs->trans("Modify").'</a>';
981
982 if (!getDolGlobalString('MAIN_DISABLE_ALL_MAILS')) {
983 if (getDolGlobalString('MAIN_MAIL_SENDMODE', 'mail') != 'mail' || !$linuxlike) {
984 if (function_exists('fsockopen') && $port && $server) {
985 print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=testconnect&date='.dol_now().'#formmailaftertstconnect">'.$langs->trans("DoTestServerAvailability").'</a>';
986 }
987 } else {
988 //print '<a class="butActionRefused classfortooltip" href="#" title="'.$langs->trans("FeatureNotAvailableOnLinux").'">'.$langs->trans("DoTestServerAvailability").'</a>';
989 }
990
991 print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=test&mode=init#formmailbeforetitle">'.$langs->trans("DoTestSend").'</a>';
992
993 if (isModEnabled('fckeditor')) {
994 print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=testhtml&mode=init#formmailbeforetitle">'.$langs->trans("DoTestSendHTML").'</a>';
995 }
996 }
997
998 print '</div>';
999
1000
1001 if (getDolGlobalString('MAIN_MAIL_SENDMODE', 'mail') == 'mail' && !getDolGlobalString('MAIN_FIX_FOR_BUGGED_MTA')) {
1002 /*
1003 // Warning 1
1004 if ($linuxlike)
1005 {
1006 $sendmailoption=ini_get('mail.force_extra_parameters');
1007 if (empty($sendmailoption) || ! preg_match('/ba/',$sendmailoption))
1008 {
1009 print info_admin($langs->trans("SendmailOptionNotComplete"));
1010 }
1011 }*/
1012 // Warning 2
1013 print info_admin($langs->trans("SendmailOptionMayHurtBuggedMTA"));
1014 }
1015
1016 if (!in_array($action, array('testconnect', 'test', 'testhtml'))) {
1017 $text = '';
1018 if (getDolGlobalString('MAIN_MAIL_SENDMODE', 'mail') == 'mail') {
1019 //$text .= $langs->trans("WarningPHPMail", $listofmethods['mail'], $listofmethods['smtps']); // To encourage to use SMTPS
1020 }
1021
1022 if (getDolGlobalString('MAIN_MAIL_SENDMODE', 'mail') == 'mail') {
1023 // mthode php mail
1024 if (getDolGlobalString('MAIN_EXTERNAL_MAIL_SPF_STRING_TO_ADD')) { // Not defined by default. Depend on platform.
1025 // List of string to add in SPF if the setup use the mail method. Example 'include:sendgrid.net include:spf.mydomain.com'
1026 $text .= ($text ? '<br><br>' : '').$langs->trans("WarningPHPMailSPFDMARC");
1027 } else {
1028 // MAIN_EXTERNAL_SMTP_CLIENT_IP_ADDRESS is list of IPs where email is sent from. Example: '1.2.3.4, [aaaa:bbbb:cccc:dddd]'.
1029 if (getDolGlobalString('MAIN_EXTERNAL_SMTP_CLIENT_IP_ADDRESS')) {
1030 // List of IP shown as record to add in SPF if we use the mail method
1031 $text .= ($text ? '<br><br>' : '').$langs->trans("WarningPHPMailSPFDMARC");
1032 }
1033 }
1034 } else {
1035 // method smtps or swiftmail
1036 if (getDolGlobalString('MAIN_EXTERNAL_SMTP_SPF_STRING_TO_ADD')) { // Should be required only if you have preset the Dolibarr to use your own SMTP and you want to warn users to update their domain name to match your SMTP server.
1037 // List of string to add in SPF if we use the smtp method. Example 'include:spf.mydomain.com'
1038 $text .= ($text ? '<br><br>' : '').$langs->trans("WarningPHPMailSPF", getDolGlobalString('MAIN_EXTERNAL_SMTP_SPF_STRING_TO_ADD'));
1039 }
1040 if (getDolGlobalString('MAIN_EXTERNAL_SMTP_CLIENT_IP_ADDRESS')) { // Not defined by default. Depend on platform.
1041 // List of IP shown as record to add as allowed IP if we use the smtp method. Value is '1.2.3.4, [aaaa:bbbb:cccc:dddd]'
1042 // TODO Add a key to allow to show the IP/name of server detected dynamically
1043 $text .= ($text ? '<br><br>' : '').$langs->trans("WarningPHPMail2", getDolGlobalString('MAIN_EXTERNAL_SMTP_CLIENT_IP_ADDRESS'));
1044 }
1045 }
1046
1047 // Build list of main email addresses in $emailstotest and their domain to test in $domainstotest
1048 $emailstotest = array();
1049 if (getDolGlobalString('MAIN_INFO_SOCIETE_MAIL')) {
1050 $emailstotest[getDolGlobalString('MAIN_INFO_SOCIETE_MAIL')] = getDomainFromURL(preg_replace('/^.*@/', '', getDolGlobalString('MAIN_INFO_SOCIETE_MAIL')), 1);
1051 }
1052 if (getDolGlobalString('MAIN_MAIL_EMAIL_FROM')) {
1053 $emailstotest[getDolGlobalString('MAIN_MAIL_EMAIL_FROM')] = getDomainFromURL(preg_replace('/^.*@/', '', getDolGlobalString('MAIN_MAIL_EMAIL_FROM')), 1);
1054 }
1055 if (!empty($user->email)) {
1056 $emailstotest[$user->email] = getDomainFromURL(preg_replace('/^.*@/', '', $user->email), 1);
1057 }
1058 $domainstotest = array();
1059 foreach ($emailstotest as $email => $domain) {
1060 if (empty($domainstotest[$domain])) {
1061 $domainstotest[$domain] = array($email => $email);
1062 } else {
1063 $domainstotest[$domain][$email] = $email;
1064 }
1065 }
1066
1067 // Test DNS entry for emails
1068 foreach (array('SPF', 'DMARC') as $dnstype) {
1069 foreach ($domainstotest as $domaintotest => $listofemails) {
1070 $dnsinfo = false;
1071 $foundforemail = 0;
1072 if (!empty($domaintotest) && function_exists('dns_get_record') && !getDolGlobalString('MAIN_DISABLE_DNS_GET_RECORD')) {
1073 $domain = $domaintotest;
1074 if ($dnstype == 'DMARC') {
1075 $domain = '_dmarc.'.$domain;
1076 }
1077 $dnsinfo = dns_get_record($domain, DNS_TXT);
1078 }
1079 if (!empty($dnsinfo) && is_array($dnsinfo)) {
1080 foreach ($dnsinfo as $info) {
1081 if (($dnstype == 'SPF' && stripos($info['txt'], 'v=spf') !== false)
1082 || ($dnstype == 'DMARC' && stripos($info['txt'], 'v=dmarc') !== false)) {
1083 $foundforemail++;
1084 $text .= ($text ? '<br>' : '').$langs->trans("ActualMailDNSRecordFound", $dnstype, implode(', ', $listofemails), $info['txt']);
1085 }
1086 }
1087 }
1088 if (!$foundforemail) {
1089 $text .= ($text ? '<br>' : '').$langs->trans("ActualMailDNSRecordFound", $dnstype, implode(', ', $listofemails), '<span class="opacitymedium">'.$langs->transnoentitiesnoconv("None").'</span>');
1090 }
1091 }
1092 }
1093
1094 if ($text) {
1095 print info_admin($langs->trans("SPFAndDMARCInformation").' :<br>'.$text, 0, 0, '1', '');
1096 }
1097 }
1098
1099 // Run the test to connect
1100 if ($action == 'testconnect') {
1101 print '<div id="formmailaftertstconnect" name="formmailaftertstconnect"></div>';
1102 print load_fiche_titre($langs->trans("DoTestServerAvailability"));
1103
1104 include_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php';
1105 $mail = new CMailFile('', '', '', '', array(), array(), array(), '', '', 0, '', '', '', '', $trackid, $sendcontext);
1106 $result = $mail->check_server_port($server, $port);
1107 if ($result) {
1108 print '<div class="ok">'.$langs->trans("ServerAvailableOnIPOrPort", $server, $port).'</div>';
1109 } else {
1110 $errormsg = $langs->trans("ServerNotAvailableOnIPOrPort", $server, $port);
1111
1112 if ($mail->error) {
1113 $errormsg .= ' - '.$mail->error;
1114 }
1115
1116 setEventMessages($errormsg, null, 'errors');
1117 }
1118 print '<br>';
1119 }
1120
1121 // Show email send test form
1122 if ($action == 'test' || $action == 'testhtml') {
1123 print '<div id="formmailbeforetitle" name="formmailbeforetitle"></div>';
1124 print load_fiche_titre($action == 'testhtml' ? $langs->trans("DoTestSendHTML") : $langs->trans("DoTestSend"));
1125
1126 print dol_get_fiche_head(array(), '', '', -1);
1127
1128 // Cree l'objet formulaire mail
1129 include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php';
1130 $formmail = new FormMail($db);
1131 $formmail->trackid = (($action == 'testhtml') ? "testhtml" : "test");
1132 $formmail->fromname = (GETPOSTISSET('fromname') ? GETPOST('fromname') : getDolGlobalString('MAIN_MAIL_EMAIL_FROM'));
1133 $formmail->frommail = (GETPOSTISSET('frommail') ? GETPOST('frommail') : getDolGlobalString('MAIN_MAIL_EMAIL_FROM'));
1134 $formmail->fromid = $user->id;
1135 $formmail->fromalsorobot = 1;
1136 $formmail->fromtype = (GETPOSTISSET('fromtype') ? GETPOST('fromtype', 'aZ09') : getDolGlobalString('MAIN_MAIL_DEFAULT_FROMTYPE', 'user'));
1137 $formmail->withfromreadonly = 1;
1138 $formmail->withsubstit = 1;
1139 $formmail->withfrom = 1;
1140 $formmail->witherrorsto = 1;
1141 $formmail->withto = (GETPOSTISSET('sendto') ? GETPOST('sendto', 'restricthtml') : ($user->email ? $user->email : 1));
1142 $formmail->withtocc = (GETPOSTISSET('sendtocc') ? GETPOST('sendtocc', 'restricthtml') : 1); // ! empty to keep field if empty
1143 $formmail->withtoccc = (GETPOSTISSET('sendtoccc') ? GETPOST('sendtoccc', 'restricthtml') : 1); // ! empty to keep field if empty
1144 $formmail->withtopic = (GETPOSTISSET('subject') ? GETPOST('subject') : $langs->trans("Test"));
1145 $formmail->withtopicreadonly = 0;
1146 $formmail->withfile = 2;
1147 $formmail->withlayout = 1;
1148 $formmail->withaiprompt = ($action == 'testhtml' ? 'html' : 'text');
1149 $formmail->withbody = (GETPOSTISSET('message') ? GETPOST('message', 'restricthtml') : ($action == 'testhtml' ? $langs->transnoentities("PredefinedMailTestHtml") : $langs->transnoentities("PredefinedMailTest")));
1150 $formmail->withbodyreadonly = 0;
1151 $formmail->withcancel = 1;
1152 $formmail->withdeliveryreceipt = 1;
1153 $formmail->withfckeditor = ($action == 'testhtml' ? 1 : 0);
1154 $formmail->ckeditortoolbar = 'dolibarr_mailings';
1155 // Array of substitutions
1156 $formmail->substit = $substitutionarrayfortest;
1157 // Array of complementary POST parameters
1158 $formmail->param["action"] = "send";
1159 $formmail->param["models"] = "body";
1160 $formmail->param["mailid"] = 0;
1161 $formmail->param["returnurl"] = $_SERVER["PHP_SELF"];
1162
1163 // Init list of files
1164 if (GETPOST("mode", "aZ09") == 'init') {
1165 $formmail->clear_attached_files();
1166 }
1167
1168 print $formmail->get_form('addfile', 'removefile');
1169
1170 print dol_get_fiche_end();
1171
1172 // References
1173 if (!empty($user->admin)) {
1174 print '<br><br>';
1175 print '<span class="opacitymedium">'.$langs->trans("EMailsWillHaveMessageID").': ';
1176 print dol_escape_htmltag('<timestamp.*@'.dol_getprefix('email').'>');
1177 print '</span>';
1178 }
1179 }
1180}
1181
1182// End of page
1183llxFooter();
1184$db->close();
dolibarr_set_const($db, $name, $value, $type='chaine', $visible=0, $note='', $entity=1)
Insert a parameter (key,value) into database (delete old key then insert it again).
email_admin_prepare_head()
Return array head with list of tabs to view object information.
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader()
Empty header.
Definition wrapper.php:55
llxFooter()
Empty footer.
Definition wrapper.php:69
Class to send emails (with attachments or not) Usage: $mailfile = new CMailFile($subject,...
Class for EmailSenderProfile.
Class to manage generation of HTML components Only common components must be here.
Class permettant la generation du formulaire html d'envoi de mail unitaire Usage: $formail = new Form...
load_fiche_titre($title, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
img_warning($titlealt='default', $moreatt='', $morecss='pictowarning')
Show warning logo.
GETPOSTINT($paramname, $method=0)
Return the value of a $_GET or $_POST supervariable, converted into integer.
yn($yesno, $case=1, $color=0)
Return yes or no in current language.
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0)
Show tabs of a record.
dol_string_nohtmltag($stringtoclean, $removelinefeed=1, $pagecodeto='UTF-8', $strip_tags=0, $removedoublespaces=1)
Clean a string from all HTML tags and entities.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
dol_now($mode='auto')
Return date for now.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
newToken()
Return the value of token currently saved into session with name 'newtoken'.
complete_substitutions_array(&$substitutionarray, $outputlangs, $object=null, $parameters=null, $callfunc="completesubstitutionarray")
Complete the $substitutionarray with more entries coming from external module that had set the "subst...
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0)
Set event messages in dol_events session object.
dol_print_error($db=null, $error='', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
isValidEmail($address, $acceptsupervisorkey=0, $acceptuserkey=0)
Return true if email syntax is ok.
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
info_admin($text, $infoonimgalt=0, $nodiv=0, $admin='1', $morecss='hideonsmartphone', $textfordropdown='', $picto='')
Show information in HTML for admin users or standard users.
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0, $cleanalsojavascript=0)
Returns text escaped for inclusion in HTML alt or title or value tags, or into values of HTML input f...
getDomainFromURL($url, $mode=0)
Function get second level domain name.
dol_hash($chain, $type='0', $nosalt=0)
Returns a hash (non reversible encryption) of a string.
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.