2
0

offboarding_mail.php 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. # Autoload
  3. require 'vendor/autoload.php';
  4. use PHPMailer\PHPMailer\PHPMailer;
  5. use PHPMailer\PHPMailer\SMTP;
  6. use PHPMailer\PHPMailer\Exception;
  7. include('./config.php');
  8. function getUserIP()
  9. {
  10. // Get real visitor IP behind CloudFlare network
  11. if (isset($_SERVER["HTTP_CF_CONNECTING_IP"])) {
  12. $_SERVER['REMOTE_ADDR'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
  13. $_SERVER['HTTP_CLIENT_IP'] = $_SERVER["HTTP_CF_CONNECTING_IP"];
  14. }
  15. $client = @$_SERVER['HTTP_CLIENT_IP'];
  16. $forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
  17. $remote = $_SERVER['REMOTE_ADDR'];
  18. if(filter_var($client, FILTER_VALIDATE_IP))
  19. {
  20. $ip = $client;
  21. }
  22. elseif(filter_var($forward, FILTER_VALIDATE_IP))
  23. {
  24. $ip = $forward;
  25. }
  26. else
  27. {
  28. $ip = $remote;
  29. }
  30. return $ip;
  31. }
  32. $bodytemplate = file_get_contents("mailtemplate_off.html");
  33. $daten = json_decode(file_get_contents('php://input'), true);
  34. $name = $daten["name"]; // vorname/nachname
  35. $daten["vorname"] = $name["vorname"];
  36. $daten["nachname"] = $name["nachname"];
  37. $daten["ip"] = getUserIP();
  38. $daten["date"] = date("d.m.Y");
  39. $daten["time"] = date("H:i");
  40. $daten["infotext"] = nl2br($daten["infos"]);
  41. $body = $bodytemplate;
  42. $forjson = [];
  43. $groups = "";
  44. foreach($daten as $key => $value)
  45. {
  46. echo $key . " -> " . gettype($value);
  47. if ( in_array(gettype($value), ["string","integer", "double"]) )
  48. {
  49. $body = str_replace("%".$key."%", $value, $body );
  50. $forjson[$key] = $value;
  51. }
  52. }
  53. // Daten lokal ablegen:
  54. $filename = date("YmdHis") . "_" . $daten["nachname"];
  55. file_put_contents("auftraege/off_".$filename.'.json', json_encode($forjson, JSON_UNESCAPED_UNICODE), FILE_APPEND | LOCK_EX);
  56. // erstmal per mail
  57. try {
  58. // Versuch, eine neue Instanz der Klasse PHPMailer zu erstellen
  59. $mail = new PHPMailer (true);
  60. //$mail->SMTPDebug = SMTP::DEBUG_SERVER;
  61. $mail->isSMTP();
  62. $mail->Host = "postfix";
  63. $mail->Port = "25";
  64. $mail->SMTPAuth = false;
  65. $mail->CharSet = 'UTF-8';
  66. $mail->Encoding = 'base64';
  67. $mail->setFrom($config["mailfrom"], 'dialog-it Xtend');
  68. $mail->addAddress($config["mailto"], 'Support');
  69. $mail->isHTML(true);
  70. $mail->Subject = (($daten["anrede"]=="Frau") ? "Mitarbeiterin Offboarding: " : "Mitarbeiter Offboarding: " ). $daten["vorname"] . " " . $daten["nachname"];
  71. $mail->Body = $body;
  72. // Anhang hinzufügen
  73. $mail->addAttachment("auftraege/off_".$filename.".json", $filename.".json");
  74. $mail->send();
  75. echo "
  76. Auftrag für Offboarding " . (($daten["anrede"]=="Frau") ? "Mitarbeiterin" : "Mitarbeiter" ). " " . $daten["vorname"] . " " . $daten["nachname"] . " erteilt.<br/>
  77. Die Auftragsbestätigung erhalten sie über unser Ticketsystem per eMail.
  78. ";
  79. return true;
  80. } catch (Exception $e) {
  81. echo "<h2>Fehler beim Senden...</h2>";
  82. return false;
  83. }
  84. ?>