{"id":214,"date":"2025-05-30T09:49:00","date_gmt":"2025-05-30T07:49:00","guid":{"rendered":"https:\/\/blog.es-development.de\/?p=214"},"modified":"2025-05-30T09:49:05","modified_gmt":"2025-05-30T07:49:05","slug":"serienhelper-html-ausgabe-und-e-mails","status":"publish","type":"post","link":"https:\/\/blog.es-development.de\/?p=214","title":{"rendered":"Serienhelper, HTML Ausgabe und E-Mails"},"content":{"rendered":"\n<p>Wie ich bei <a href=\"https:\/\/blog.es-development.de\/?p=97\">der ersten Ver\u00f6ffentlichung vom Serienhelper<\/a> angek\u00fcndigt habe, ist eines meiner n\u00e4chsten Ziele eine HTML Ausgabe zu bauen und euch dann zu Zeigen wie ihr euren Linux Server dazu bringt euch regelm\u00e4\u00dfig E-Mails mit den Ergebnissen schicken zu lassen das will ich euch heute zeigen<\/p>\n\n\n\n<p>Doch zun\u00e4chst in Serienhelper V1.1 gibt es ein neues Kommando <code>getupdateinfo<\/code> welches jetzt noch irrelevant ist aber in V1.2 wichtig wird, damit kann ein JSON erzeugt werden, das f\u00fcr alle Serienordner die URLs zum abrufen ermittelt, das ist wichtig um in der n\u00e4chsten Version die showinfo Dateien zu aktualisieren da sich der Aufbau \u00e4ndern wird<\/p>\n\n\n\n<p>Und jetzt zum eigentlichen Thema<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Neuen Benutzer anlegen und SerienHelper V1.1 herunterladen<\/h2>\n\n\n\n<p>Aus Sicherheitsgr\u00fcnden m\u00f6chte man Dienste nicht als Root laufen lassen, daher legen wir einen neuen Benutzer serienhelper an<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo useradd -r -s \/usr\/sbin\/nologin -d \/home\/serienhelper -M serienhelper<\/code><\/pre>\n\n\n\n<p>Das erzeugt einen neuen Benutzer serienhelper mit einem Homeverzeichnis <code>\/home\/serienhelper<\/code> der sich nicht einloggen darf<\/p>\n\n\n\n<p>Nun wechseln wir in den neuen Benutzer durch den Schalter <code>-s \/bin\/bash<\/code> wird mit gegeben das die Bash als Shell verwendet werden soll, da der Benutzer keine hat<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo su - serienhelper -s \/bin\/bash<\/code><\/pre>\n\n\n\n<p>Nun laden wir SerienHelper V1.1 herunter, die URL m\u00fcsst ihr entsprechend f\u00fcr euer System anpassen (Linux64, LinuxArm64, LinuxArm unten findet ihr die Downloads) <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>wget https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/ESD.SerienHelper_Linux64_V1.1.zip<\/code><\/pre>\n\n\n\n<p>Dann entpackt ihr das ZIP mit<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>unzip ESD.SerienHelper_Linux64_V1.1.zip<\/code><\/pre>\n\n\n\n<p>Jetzt habt ihr ein Verzeichnis <code>\/home\/serienhelper\/ESD.SerienHelper_Linux64<\/code><\/p>\n\n\n\n<p>Jetzt m\u00fcsst ihr SerienHelper noch ausf\u00fchrbar machen<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>chmod +x ESD.SerienHelper_Linux64\/SerienHelper<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Einrichten von msmtp als alternative zu Sendmail mit einem lokalen Mailserver<\/h2>\n\n\n\n<p>Mein Server l\u00e4uft mit Ubuntu 24.04, zu n\u00e4chst installieren wir also msmtp<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install msmtp msmtp-mta<\/code><\/pre>\n\n\n\n<p>Nun legen wir die Datei \/etc\/msmptrc an<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/msmtprc<\/code><\/pre>\n\n\n\n<p>Minimalistisch gehalten k\u00f6nnte diese so aussehen, da wir das zweimal machen zeige ich bei der zweiten eine ausf\u00fchrlichere Kofiguration<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>defaults\nauth           on\ntls            on\nlogfile        \/var\/log\/msmtp.log\n\naccount        default\nhost           smtp.domain.de\nport           587\nfrom           server@domain.de\nuser           server@domain.de\npassword       DeinMailPasswort\n\naliases        \/etc\/aliases<\/code><\/pre>\n\n\n\n<p>Was man nicht vergessen darf, die <code>\/etc\/msmtprc<\/code> muss spezielle rechte haben<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo chmod 600 \/etc\/msmptrc<\/code><\/pre>\n\n\n\n<p>Damit kann dir nun das System bzw. Root E-Mails schicken, testen k\u00f6nnt ihr das so<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo -e \"Subject: Testmail\\n\\nDies ist eine Testmail\" | sendmail account@domain.de<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">SendMail f\u00fcr den Benutzer serienhelper einrichten<\/h2>\n\n\n\n<p>Im Homeverzeichnis unseres serienhelper Benutzers legen wir nun die Datei .msmptrc an<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano .msmtprc<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code># Set default values for all following accounts.\ndefaults\n\n# Use the mail submission port 587 instead of the SMTP port 25.\nport 587\n\n# Always use TLS.\ntls on\n\n# Mail account\n# TODO: Use your own mail address\naccount account@domain.de\n\n# Host name of the SMTP server\n# TODO: Use the host of your own mail account\nhost smtp.domain.de\n\n# This is especially important for mail providers like\n# Ionos, 1&amp;1, GMX and web.de\nset_from_header on\n\n# As an alternative to tls_trust_file\/tls_crl_file, you can use tls_fingerprint\n# to pin a single certificate. You have to update the fingerprint when the\n# server certificate changes, but an attacker cannot trick you into accepting\n# a fraudulent certificate. Get the fingerprint with\n# $ msmtp --serverinfo --tls --tls-certcheck=off --host=smtp.freemail.example\n#tls_fingerprint 00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF:00:11:22:33\n\n# Envelope-from address\n# TODO: Use your own mail address\nfrom account@domain.de\n\n# Authentication. The password is given using one of five methods, see below.\nauth on\n\n# TODO: Use your own user name fpr the mail account\nuser account@domain.de\n\n# Password method 1: Add the password to the system keyring, and let msmtp get\n# it automatically. To set the keyring password using Gnome's libsecret:\n# $ secret-tool store --label=msmtp \\\n#   host smtp.freemail.example \\\n#   service smtp \\\n#   user joe.smith\n\n# Password method 2: Store the password in an encrypted file, and tell msmtp\n# which command to use to decrypt it. This is usually used with GnuPG, as in\n# this example. Usually gpg-agent will ask once for the decryption password.\n#passwordeval gpg2 --no-tty -q -d ~\/.msmtp-password.gpg\n\n# Password method 3: Store the password directly in this file. Usually it is not\n# a good idea to store passwords in plain text files. If you do it anyway, at\n# least make sure that this file can only be read by yourself.\n# TODO: Use the password of your own mail account\npassword DeinPasswort\n\n# Password method 4: Store the password in ~\/.netrc. This method is probably not\n# relevant anymore.\n\n# Password method 5: Do not specify a password. Msmtp will then prompt you for\n# it. This means you need to be able to type into a terminal when msmtp runs.\n\n# Set a default account\n# TODO: Use your own mail address\naccount default: account@domain.de<\/code><\/pre>\n\n\n\n<p>Wie man sieht ist die wesentlich ausf\u00fchrlicher und ich finde sie erkl\u00e4rt die Einstellungen ganz gut, <a href=\"https:\/\/decatec.de\/linux\/linux-einfach-e-mails-versenden-mit-msmtp\/\">hab ich hier geklaut<\/a><\/p>\n\n\n\n<p>Auch hier wieder Berechtigungen setzen<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>chmod 600 .msmptrc<\/code><\/pre>\n\n\n\n<p>Das kann man dann wieder testen<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo -e \"Subject: Testmail\\n\\nDies ist eine Testmail\" | sendmail account@domain.de<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Script Anlegen<\/h2>\n\n\n\n<p>Ok nachdem wir nun unseren Benutzer haben und dieser Mails verschicken kann ben\u00f6tigen wir noch ein kleines Script das uns die Mail zusammen baut und sendet bei mir hei\u00dft es send_SerienHelper.sh<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\nContent=$(ESD.SerienHelper_Linux64\/SerienHelper compare all folder \/mnt\/shares\/Serien\/ ignore ignore.json lang Deutsch out html replacepath \"\/mnt\/share\/Serien\/\" \"V:\\\\Serien\" \"\\\\\")\n(\n  echo \"To: acount@domain.de\"\n  echo \"Subject: SerienHelper auto mail\"\n  echo \"Content-Type: text\/html; charset=UTF-8\"\n  echo \"\"\n  echo \"$Content\"\n) | sendmail -t\n<\/code><\/pre>\n\n\n\n<p>wie man sieht kommen hier neue Optionen zum Einsatz<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>out<br>Mit out kann nun die Ausgabe angepasst werden m\u00f6glich Werte sind html, json oder text, wir nutzen hier html<\/li>\n\n\n\n<li>replacepath<br>Da wir die Mail von einem Linux erzeugen und diese unter Windows nutzen wollen, kann hiermit der Path angepasst werden, der erste Wert ist der zu ersetzende Teil, dann durch was dieser Ersetzt werden soll und als drittes kann optional angegeben werden welches Pfadtrennzeichen verwendet werden soll<\/li>\n<\/ul>\n\n\n\n<p>Nachdem ihr das Script f\u00fcr euch angepasst habt muss es noch ausf\u00fchrbar gemacht werden<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>chmod +x send_SerienHelper.sh<\/code><\/pre>\n\n\n\n<p>Wenn wir das nun ausf\u00fchren <code>.\/send_SerienHelper.sh<\/code> sollten wir nach abschluss ein Ergebnis per Mail erhalten das in etwa so aussieht<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"730\" height=\"1024\" src=\"https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/image-15-730x1024.png\" alt=\"\" class=\"wp-image-239\" srcset=\"https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/image-15-730x1024.png 730w, https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/image-15-214x300.png 214w, https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/image-15-768x1077.png 768w, https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/image-15-1095x1536.png 1095w, https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/image-15.png 1261w\" sizes=\"auto, (max-width: 730px) 100vw, 730px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Cronjob einrichten<\/h2>\n\n\n\n<p>Wir \u00f6ffnen den crontab editor<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>crontab -e<\/code><\/pre>\n\n\n\n<p>Ich w\u00e4hle nano als Editor aus und trage mein Script in der letzten Zeile ein<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\n# Edit this file to introduce tasks to be run by cron.\n#\n# Each task to run has to be defined through a single line\n# indicating with different fields when the task will be run\n# and what command to run for the task\n#\n# To define the time you can provide concrete values for\n# minute (m), hour (h), day of month (dom), month (mon),\n# and day of week (dow) or use '*' in these fields (for 'any').\n#\n# Notice that tasks will be started based on the cron's system\n# daemon's notion of time and timezones.\n#\n# Output of the crontab jobs (including errors) is sent through\n# email to the user the crontab file belongs to (unless redirected).\n#\n# For example, you can run a backup of all your user accounts\n# at 5 a.m every week with:\n# 0 5 * * 1 tar -zcf \/var\/backups\/home.tgz \/home\/\n#\n# For more information see the manual pages of crontab(5) and cron(8)\n#\n# m h  dom mon dow   command\n30 3 * * 1 bash send_SerienHelper.sh<\/code><\/pre>\n\n\n\n<p>Jeden Montag um 3:30 Uhr wird nun unser Script ausgef\u00fchrt, zur Erkl\u00e4rung hier nochmal der Syntax<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"728\" height=\"258\" src=\"https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/image-16.png\" alt=\"\" class=\"wp-image-241\" srcset=\"https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/image-16.png 728w, https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/image-16-300x106.png 300w\" sizes=\"auto, (max-width: 728px) 100vw, 728px\" \/><\/figure>\n\n\n\n<p><strong>Bitte beachtet, das ihr nicht zu oft nach neuen Folgen suchen solltet, das Programm ist bewusst nicht Asynchron am abrufen der Seiten um die Belastung niedrig zu halten, ich denke einmal die Woche ist ein vern\u00fcnftiges ma\u00df<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Was kommt als n\u00e4chstes<\/h2>\n\n\n\n<p>Was SerienHelper noch nicht kann, ist die ignore,json von Windows \u00fcbernehmen um das zu erm\u00f6glichen ist ein gr\u00f6\u00dferer Umbau n\u00f6tig<br>Aber da es sich um JSON handelt kannst du die Datei selbst anpassen, einfach die Datei \u00f6ffnen kurz durch einen beliebigen JS Beautifier jagen und dann die Pfade anpassen<\/p>\n\n\n\n<p>Oder du wartest noch ein bisschen in der n\u00e4chsten Version m\u00f6chte ich relative Pfade unterst\u00fctzen<\/p>\n\n\n\n<p>Dar\u00fcber hinaus wird die n\u00e4chste Version schluss mit den gersub Ordnern machen, stattdessen werden die Ordner nun ein K\u00fcrzel haben das etwa so aussieht en-de oder jp-de<br>Dabei handelt es sich um ISO-639-1-Codes f\u00fcr L\u00e4nder der erste gibt die Audiosprache und der zweite die Untertitelsprache an<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Download<\/h2>\n\n\n\n<div class=\"wp-block-file\"><a id=\"wp-block-file--media-3b9b61d3-6017-4c89-b26f-428c46d9e18c\" href=\"https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/ESD.SerienHelper_Linux64_V1.1.zip\">ESD.SerienHelper_Linux64_V1.1<\/a><a href=\"https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/ESD.SerienHelper_Linux64_V1.1.zip\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-3b9b61d3-6017-4c89-b26f-428c46d9e18c\">Herunterladen<\/a><\/div>\n\n\n\n<div class=\"wp-block-file\"><a id=\"wp-block-file--media-925364f0-e69f-449a-9770-199d68352ba5\" href=\"https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/ESD.SerienHelper_LinuxArm_V1.1.zip\">ESD.SerienHelper_LinuxArm_V1.1<\/a><a href=\"https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/ESD.SerienHelper_LinuxArm_V1.1.zip\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-925364f0-e69f-449a-9770-199d68352ba5\">Herunterladen<\/a><\/div>\n\n\n\n<div class=\"wp-block-file\"><a id=\"wp-block-file--media-ed598b9b-7674-4133-bdee-03a1ed640a78\" href=\"https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/ESD.SerienHelper_LinuxArm64_V1.1.zip\">ESD.SerienHelper_LinuxArm64_V1.1<\/a><a href=\"https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/ESD.SerienHelper_LinuxArm64_V1.1.zip\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-ed598b9b-7674-4133-bdee-03a1ed640a78\">Herunterladen<\/a><\/div>\n\n\n\n<div class=\"wp-block-file\"><a id=\"wp-block-file--media-d7bff282-c18c-48eb-be7a-5f363f9092d9\" href=\"https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/ESD.SerienHelper_Win64_V1.1.zip\">ESD.SerienHelper_Win64_V1.1<\/a><a href=\"https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/ESD.SerienHelper_Win64_V1.1.zip\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-d7bff282-c18c-48eb-be7a-5f363f9092d9\">Herunterladen<\/a><\/div>\n\n\n\n<div class=\"wp-block-file\"><a id=\"wp-block-file--media-215b84d5-07bb-4c0b-b701-9afe1f60c146\" href=\"https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/ESD.SerienHelper_Source_V1.1.zip\">ESD.SerienHelper_Source_V1.1<\/a><a href=\"https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/ESD.SerienHelper_Source_V1.1.zip\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-215b84d5-07bb-4c0b-b701-9afe1f60c146\">Herunterladen<\/a><\/div>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wie ich bei der ersten Ver\u00f6ffentlichung vom Serienhelper angek\u00fcndigt habe, ist eines meiner n\u00e4chsten Ziele eine HTML Ausgabe zu bauen und euch dann zu Zeigen wie ihr euren Linux Server dazu bringt euch regelm\u00e4\u00dfig E-Mails mit den Ergebnissen schicken zu lassen das will ich euch heute zeigen Doch zun\u00e4chst in Serienhelper V1.1 gibt es ein [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":239,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"Wie ich bei der ersten Ver\u00f6ffentlichung vom Serienhelper angek\u00fcndigt habe, kommt hier die HTML Ausgabe ich werde auch Zeigen wie ihr euren Linux Server dazu bringt euch regelm\u00e4\u00dfig E-Mails mit den Ergebnissen schicken zu lassen\n\n#Cronjob #HTML #Linux #msmtp, #Sendmail #Serien #SerienHelper","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[36,1,35,19,37,38,57,4],"tags":[60,24,47,59,58,31,6],"class_list":["post-214","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-net","category-allgemein","category-c","category-downloads","category-linux","category-mailserver","category-sendmail","category-serienhelper","tag-cronjob","tag-html","tag-linux","tag-msmtp","tag-sendmail","tag-serien","tag-serienhelper"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Serienhelper, HTML Ausgabe und E-Mails - ES-Development<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.es-development.de\/?p=214\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Serienhelper, HTML Ausgabe und E-Mails - ES-Development\" \/>\n<meta property=\"og:description\" content=\"Wie ich bei der ersten Ver\u00f6ffentlichung vom Serienhelper angek\u00fcndigt habe, ist eines meiner n\u00e4chsten Ziele eine HTML Ausgabe zu bauen und euch dann zu Zeigen wie ihr euren Linux Server dazu bringt euch regelm\u00e4\u00dfig E-Mails mit den Ergebnissen schicken zu lassen das will ich euch heute zeigen Doch zun\u00e4chst in Serienhelper V1.1 gibt es ein [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.es-development.de\/?p=214\" \/>\n<meta property=\"og:site_name\" content=\"ES-Development\" \/>\n<meta property=\"article:published_time\" content=\"2025-05-30T07:49:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-05-30T07:49:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/image-15.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1261\" \/>\n\t<meta property=\"og:image:height\" content=\"1769\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"ten\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"ten\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"1\u00a0Minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blog.es-development.de\/?p=214#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.es-development.de\/?p=214\"},\"author\":{\"name\":\"ten\",\"@id\":\"https:\/\/blog.es-development.de\/#\/schema\/person\/ceaebd34d72e0e9bc4c32244afc453b8\"},\"headline\":\"Serienhelper, HTML Ausgabe und E-Mails\",\"datePublished\":\"2025-05-30T07:49:00+00:00\",\"dateModified\":\"2025-05-30T07:49:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.es-development.de\/?p=214\"},\"wordCount\":741,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/blog.es-development.de\/#organization\"},\"image\":{\"@id\":\"https:\/\/blog.es-development.de\/?p=214#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/image-15.png\",\"keywords\":[\"Cronjob\",\"HTML\",\"Linux\",\"msmtp\",\"Sendmail\",\"Serien\",\"SerienHelper\"],\"articleSection\":{\"0\":\".NET\",\"2\":\"C#\",\"3\":\"Downloads\",\"4\":\"Linux\",\"5\":\"Mailserver\",\"6\":\"Sendmail\",\"7\":\"SerienHelper\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blog.es-development.de\/?p=214#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.es-development.de\/?p=214\",\"url\":\"https:\/\/blog.es-development.de\/?p=214\",\"name\":\"Serienhelper, HTML Ausgabe und E-Mails - ES-Development\",\"isPartOf\":{\"@id\":\"https:\/\/blog.es-development.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.es-development.de\/?p=214#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.es-development.de\/?p=214#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/image-15.png\",\"datePublished\":\"2025-05-30T07:49:00+00:00\",\"dateModified\":\"2025-05-30T07:49:05+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/blog.es-development.de\/?p=214#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.es-development.de\/?p=214\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/blog.es-development.de\/?p=214#primaryimage\",\"url\":\"https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/image-15.png\",\"contentUrl\":\"https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/image-15.png\",\"width\":1261,\"height\":1769},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.es-development.de\/?p=214#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/blog.es-development.de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Serienhelper, HTML Ausgabe und E-Mails\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.es-development.de\/#website\",\"url\":\"https:\/\/blog.es-development.de\/\",\"name\":\"ES-Development\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/blog.es-development.de\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.es-development.de\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/blog.es-development.de\/#organization\",\"name\":\"ES-Development\",\"url\":\"https:\/\/blog.es-development.de\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/blog.es-development.de\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/cropped-Website-Logo-3.png\",\"contentUrl\":\"https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/cropped-Website-Logo-3.png\",\"width\":340,\"height\":94,\"caption\":\"ES-Development\"},\"image\":{\"@id\":\"https:\/\/blog.es-development.de\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.es-development.de\/#\/schema\/person\/ceaebd34d72e0e9bc4c32244afc453b8\",\"name\":\"ten\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/blog.es-development.de\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6cfc54d46f3b4b123624e51125e42f62de1b0ac5215b9bfd17ac90382609d984?s=96&d=mm&r=pg\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6cfc54d46f3b4b123624e51125e42f62de1b0ac5215b9bfd17ac90382609d984?s=96&d=mm&r=pg\",\"caption\":\"ten\"},\"sameAs\":[\"https:\/\/blog.es-development.de\"],\"url\":\"https:\/\/blog.es-development.de\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Serienhelper, HTML Ausgabe und E-Mails - ES-Development","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.es-development.de\/?p=214","og_locale":"de_DE","og_type":"article","og_title":"Serienhelper, HTML Ausgabe und E-Mails - ES-Development","og_description":"Wie ich bei der ersten Ver\u00f6ffentlichung vom Serienhelper angek\u00fcndigt habe, ist eines meiner n\u00e4chsten Ziele eine HTML Ausgabe zu bauen und euch dann zu Zeigen wie ihr euren Linux Server dazu bringt euch regelm\u00e4\u00dfig E-Mails mit den Ergebnissen schicken zu lassen das will ich euch heute zeigen Doch zun\u00e4chst in Serienhelper V1.1 gibt es ein [&hellip;]","og_url":"https:\/\/blog.es-development.de\/?p=214","og_site_name":"ES-Development","article_published_time":"2025-05-30T07:49:00+00:00","article_modified_time":"2025-05-30T07:49:05+00:00","og_image":[{"width":1261,"height":1769,"url":"https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/image-15.png","type":"image\/png"}],"author":"ten","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"ten","Gesch\u00e4tzte Lesezeit":"1\u00a0Minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.es-development.de\/?p=214#article","isPartOf":{"@id":"https:\/\/blog.es-development.de\/?p=214"},"author":{"name":"ten","@id":"https:\/\/blog.es-development.de\/#\/schema\/person\/ceaebd34d72e0e9bc4c32244afc453b8"},"headline":"Serienhelper, HTML Ausgabe und E-Mails","datePublished":"2025-05-30T07:49:00+00:00","dateModified":"2025-05-30T07:49:05+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.es-development.de\/?p=214"},"wordCount":741,"commentCount":0,"publisher":{"@id":"https:\/\/blog.es-development.de\/#organization"},"image":{"@id":"https:\/\/blog.es-development.de\/?p=214#primaryimage"},"thumbnailUrl":"https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/image-15.png","keywords":["Cronjob","HTML","Linux","msmtp","Sendmail","Serien","SerienHelper"],"articleSection":{"0":".NET","2":"C#","3":"Downloads","4":"Linux","5":"Mailserver","6":"Sendmail","7":"SerienHelper"},"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.es-development.de\/?p=214#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.es-development.de\/?p=214","url":"https:\/\/blog.es-development.de\/?p=214","name":"Serienhelper, HTML Ausgabe und E-Mails - ES-Development","isPartOf":{"@id":"https:\/\/blog.es-development.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.es-development.de\/?p=214#primaryimage"},"image":{"@id":"https:\/\/blog.es-development.de\/?p=214#primaryimage"},"thumbnailUrl":"https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/image-15.png","datePublished":"2025-05-30T07:49:00+00:00","dateModified":"2025-05-30T07:49:05+00:00","breadcrumb":{"@id":"https:\/\/blog.es-development.de\/?p=214#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.es-development.de\/?p=214"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/blog.es-development.de\/?p=214#primaryimage","url":"https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/image-15.png","contentUrl":"https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/image-15.png","width":1261,"height":1769},{"@type":"BreadcrumbList","@id":"https:\/\/blog.es-development.de\/?p=214#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/blog.es-development.de\/"},{"@type":"ListItem","position":2,"name":"Serienhelper, HTML Ausgabe und E-Mails"}]},{"@type":"WebSite","@id":"https:\/\/blog.es-development.de\/#website","url":"https:\/\/blog.es-development.de\/","name":"ES-Development","description":"","publisher":{"@id":"https:\/\/blog.es-development.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.es-development.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/blog.es-development.de\/#organization","name":"ES-Development","url":"https:\/\/blog.es-development.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/blog.es-development.de\/#\/schema\/logo\/image\/","url":"https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/cropped-Website-Logo-3.png","contentUrl":"https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/cropped-Website-Logo-3.png","width":340,"height":94,"caption":"ES-Development"},"image":{"@id":"https:\/\/blog.es-development.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/blog.es-development.de\/#\/schema\/person\/ceaebd34d72e0e9bc4c32244afc453b8","name":"ten","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/blog.es-development.de\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6cfc54d46f3b4b123624e51125e42f62de1b0ac5215b9bfd17ac90382609d984?s=96&d=mm&r=pg","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6cfc54d46f3b4b123624e51125e42f62de1b0ac5215b9bfd17ac90382609d984?s=96&d=mm&r=pg","caption":"ten"},"sameAs":["https:\/\/blog.es-development.de"],"url":"https:\/\/blog.es-development.de\/?author=1"}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/blog.es-development.de\/wp-content\/uploads\/2025\/05\/image-15.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/blog.es-development.de\/index.php?rest_route=\/wp\/v2\/posts\/214","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.es-development.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.es-development.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.es-development.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.es-development.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=214"}],"version-history":[{"count":11,"href":"https:\/\/blog.es-development.de\/index.php?rest_route=\/wp\/v2\/posts\/214\/revisions"}],"predecessor-version":[{"id":252,"href":"https:\/\/blog.es-development.de\/index.php?rest_route=\/wp\/v2\/posts\/214\/revisions\/252"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.es-development.de\/index.php?rest_route=\/wp\/v2\/media\/239"}],"wp:attachment":[{"href":"https:\/\/blog.es-development.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=214"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.es-development.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=214"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.es-development.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=214"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}