{"id":17573,"date":"2026-08-17T15:25:50","date_gmt":"2026-08-17T15:25:50","guid":{"rendered":"https:\/\/www.mailgun.com\/blog\/api-workflows-fur-transaktions-e-mails-erstellen\/"},"modified":"2026-08-28T08:16:15","modified_gmt":"2026-08-28T08:16:15","slug":"api-workflows-fur-transaktions-e-mails-erstellen","status":"publish","type":"blog","link":"https:\/\/www.mailgun.com\/de\/blog\/dev-life\/api-workflows-fur-transaktions-e-mails-erstellen\/","title":{"rendered":"Transaktions-E-Mail: Best Practices f\u00fcr Entwickler"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Haben Sie eine sofortige Benachrichtigungs-E-Mail erhalten, als Sie etwas online gekauft haben? Das ist im Wesentlichen eine <a href=\"https:\/\/www.mailgun.com\/blog\/email\/what-is-transactional-email-basics\/\">Transaktionsnachricht<\/a> ist. Transaktionsnachrichten sind automatisierte E-Mails oder Benachrichtigungen, die Sie erhalten, wenn Sie sich f\u00fcr einen Dienst anmelden, einen Kauf t\u00e4tigen oder ein Passwort zur\u00fccksetzen. Dazu geh\u00f6ren auch Betrugswarnungen, Erinnerungen an abgebrochene Eink\u00e4ufe sowie Zustellungs- und Bank-Updates. Im Gegensatz zu Marketing-E-Mails best\u00e4tigen sie Aktionen und halten Sie auf dem Laufenden, was Vertrauen aufbaut und das Nutzer-Engagement f\u00f6rdert.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In diesem Artikel erfahren Sie, wie Sie Transaktionsnachrichten aus Ihrer Anwendung mithilfe von API-Workflows automatisieren k\u00f6nnen, um das Kundenerlebnis zu verbessern.\u00a0<\/p>\n\n\n\r\n    <nav data-content-type=\"longform\" class=\"toc-block longform-spacings px-5 py-6 px-md-6 px-lg-7 py-md-7 bg-light fs-sm rounded-lg\" aria-labelledby=\"toc-title-7770\"><p class=\"h5 m-0\" id=\"toc-title-7770\">Table of contents<\/p><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">01<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#warum-ist-die-transaktions-e-mail-wichtig-fuer-das-kundenerlebnis\">Warum ist die Transaktions-E-Mail wichtig f\u00fcr das Kundenerlebnis?<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">02<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#wie-erstellt-man-einen-api-workflow-um-transaktions-e-mails-zu-automatisieren\">Wie erstellt man einen API-Workflow, um Transaktions-E-Mails zu automatisieren?<\/a><a class=\"scrollme link-body-color\" href=\"#richten-sie-ein-neues-python-projekt-ein\">Richten Sie ein neues Python-Projekt ein<\/a><a class=\"scrollme link-body-color\" href=\"#beziehen-sie-einen-api-schluessel\">Beziehen Sie einen API-Schl\u00fcssel<\/a><a class=\"scrollme link-body-color\" href=\"#module-importieren-und-initialisieren\">Module importieren und initialisieren<\/a><a class=\"scrollme link-body-color\" href=\"#senden-einer-e-mail-ueber-die-mailgun-api\">Senden einer E-Mail \u00fcber die Mailgun-API<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">03<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#best-practice-e-mails-zur-kontoregistrierung-automatisieren\">Best Practice: E-Mails zur Kontoregistrierung automatisieren<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">04<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#best-practice-double-opt-in-bestaetigungs-e-mails-automatisieren\">Best Practice: Double-Opt-in-Best\u00e4tigungs-E-Mails automatisieren<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">05<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#best-practice-e-mails-zum-passwort-zuruecksetzen-automatisieren\">Best Practice: E-Mails zum Passwort zur\u00fccksetzen automatisieren<\/a><\/div><\/div><div class=\"d-flex mt-3\"><div class=\"w-auto fw-bold text-accent d-flex me-2\">06<\/div><div class=\"d-flex flex-column\"><a class=\"fw-bold scrollme link-body-color text-accent\" href=\"#wie-geht-es-weiter-nachdem-sie-diese-workflows-eingefuehrt-haben\">Wie geht es weiter, nachdem Sie diese Workflows eingef\u00fchrt haben?<\/a><\/div><\/div><\/nav>\n\n\n<h2 class=\"wp-block-heading\">Warum ist die Transaktions-E-Mail wichtig f\u00fcr das Kundenerlebnis?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Im Gegensatz zum Massenversand <a href=\"https:\/\/www.mailgun.com\/blog\/deliverability\/transactional-emails-vs-marketing-emails\/\" target=\"_tabs\" rel=\"noopener noreferrer\">Marketing-E-Mails<\/a>, sind Transaktionsnachrichten personalisiert, zeitgerecht und erwartet, da sie f\u00fcr die Aktivit\u00e4t des Nutzers hochgradig relevant sind. Diese Nachrichten erfolgen eins-zu-eins und enthalten Informationen, die in direktem Zusammenhang mit den Aktivit\u00e4ten des Nutzers stehen. <\/p>\n\n\n    <div data-content-type=\"longform\"  class=\"callout text-body-color px-5 py-6 px-md-6 px-lg-7 py-md-7 longform-spacings rounded-lg bg-light\" data-theme=\"light\">\r\n\r\n        <div class=\"content-body\"> Wussten Sie schon? 74 % der Verbraucher bevorzugen es, Transaktionsnachrichten per E-Mail zu erhalten, und 71 % w\u00fcrden sogar ihren Spam-Ordner \u00fcberpr\u00fcfen, wenn sie diese nicht erhalten h\u00e4tten.<a href=\"https:\/\/www.mailgun.com\/de\/ressourcen\/forschung\/email-kundenerlebnis\/\"> Erfahren Sie mehr in unserem Bericht \u00fcber E-Mail und das Kundenerlebnis.<\/a>\u00a0\u00a0<\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Zeitgerechte Transaktionsnachrichten \u2013 wie Bestellbest\u00e4tigungen und Kontowarnungen \u2013 <a href=\"https:\/\/www.mailgun.com\/de\/blog\/email\/transaktions-e-mail-stiller-held\/\" target=\"_tabs\" rel=\"noopener noreferrer\">Kundenzufriedenheit steigern<\/a>, erh\u00f6hen die Transparenz und st\u00e4rken das Vertrauen, indem sie Kundeninteraktionen und potenziellen Betrug effizient behandeln. Sie unterst\u00fctzen Kunden auch, indem sie Self-Service-Optionen anbieten und den Kundensupport entlasten. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> Im Gegensatz zu Werbe-E-Mails, die oft unbemerkt bleiben, werden Transaktions-E-Mails sehns\u00fcchtig erwartet und oft sofort ge\u00f6ffnet; Nutzer begeben sich sogar in ihren Spam-Ordnern auf Schatzsuche, um sie aufzusp\u00fcren. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wie erstellt man einen API-Workflow, um Transaktions-E-Mails zu automatisieren?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In diesem Tutorial erfahren Sie, wie Sie Transaktions-E-Mails aus Ihrer Anwendung senden, indem Sie einfache Workflows einrichten mit  <a href=\"https:\/\/www.mailgun.com\/de\/\" target=\"_tabs\" rel=\"noopener noreferrer\"><u>Mailgun-APIs<\/u><\/a>. Mailgun ist eine E-Mail-Versandplattform, die es Ihnen erm\u00f6glicht, E-Mails zu senden und zu verfolgen. Sie vereinfacht die Automatisierung von Transaktions-E-Mails mit zuverl\u00e4ssigen und benutzerfreundlichen APIs.\u00a0\u00a0Sie werden Mailgun verwenden, um Transaktionsnachrichten mit Python in den folgenden Szenarien zu automatisieren:\u00a0<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Registrierung eines Nutzerkontos\u00a0<\/li>\n\n\n\n<li>Double-Opt-in f\u00fcr Newsletter-Abonnements\u00a0<\/li>\n\n\n\n<li>Passwort zur\u00fccksetzen\u00a0<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Bevor Sie beginnen, stellen Sie sicher, dass Sie \u00fcber Folgendes verf\u00fcgen:\u00a0<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.python.org\/\" target=\"_tabs\" rel=\"noopener noreferrer\"><u>Python<\/u><\/a> 3.9 oder h\u00f6her\u00a0<\/li>\n\n\n\n<li>Ein Mailgun-Konto (die  <a href=\"https:\/\/signup.mailgun.com\/new\/signup\" target=\"_tabs\" rel=\"noopener noreferrer\"><u>kostenlose 30-Tage-Testversion<\/u><\/a>  ist f\u00fcr dieses Tutorial ausreichend)\u00a0<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Richten Sie ein neues Python-Projekt ein<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Erstellen Sie zu Beginn ein Verzeichnis f\u00fcr Ihr Python-Projekt und f\u00fcgen Sie eine leere .env-Datei darin ein.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bevor Sie fortfahren, empfiehlt es sich als Best Practice, eine neue  <a href=\"https:\/\/docs.python.org\/3\/library\/venv.html\" target=\"_tabs\" rel=\"noopener noreferrer\"><u>virtuelle Umgebung<\/u><\/a>  zu erstellen und zu aktivieren, um Ihr Projekt zu isolieren und Abh\u00e4ngigkeitskonflikte zu vermeiden.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sobald Ihre virtuelle Umgebung aktiv ist, installieren Sie die erforderlichen Bibliotheken (requests und python-dotenv), indem Sie Folgendes ausf\u00fchren:\u00a0<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                Python                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copy to clipboard\" data-clipboard-success-label=\"Copied!\" data-clipboard-error-label=\"Unable to copy\" data-tooltip=\"Copy to clipboard\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copy to clipboard\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-Python\">\r\n                                <code id=\"code_0_content\" class=\"language-Python\">\r\n\r\n                                    ```python \r\npip install requests python-dotenv \r\n``` \r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Die requests-Bibliothek erm\u00f6glicht es Ihnen, API-Aufrufe zu t\u00e4tigen, und python-dotenv hilft Ihnen, Ihren API-Schl\u00fcssel sicher au\u00dferhalb Ihres Codes zu speichern.\u00a0<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Beziehen Sie einen API-Schl\u00fcssel<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Um API-Aufrufe an Mailgun zu t\u00e4tigen, ben\u00f6tigen Sie einen  <a href=\"https:\/\/help.mailgun.com\/hc\/en-us\/articles\/203380100-Where-can-I-find-my-API-keys-and-SMTP-credentials\" target=\"_tabs\" rel=\"noopener noreferrer\"><u>API-Schl\u00fcssel<\/u><\/a>  aus Ihrem Mailgun-Konto.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Melden Sie sich bei Ihrem Mailgun-Konto an und navigieren Sie zur  <a href=\"https:\/\/app.mailgun.com\/settings\/api_security\" target=\"_tabs\" rel=\"noopener noreferrer\"><b><u>API-Sicherheit<\/u><\/b><\/a> Seite. . Sie finden diese unter dem Dropdown-Men\u00fc unter Ihrem Namen in der oberen rechten Ecke:\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Erstellen Sie einen API-Schl\u00fcssel und kopieren Sie ihn dann:\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Speichern Sie ihn sicher, indem Sie den Schl\u00fcssel in die .env-Datei Ihres Projekts einf\u00fcgen:\u00a0<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                Python                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copy to clipboard\" data-clipboard-success-label=\"Copied!\" data-clipboard-error-label=\"Unable to copy\" data-tooltip=\"Copy to clipboard\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copy to clipboard\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-Python\">\r\n                                <code id=\"code_0_content\" class=\"language-Python\">\r\n\r\n                                    ```python \r\nMAILGUN_API_KEY=&quot;Your API Key Here&quot; \r\n``` \r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Wenn Sie Mailgun verwenden, beachten Sie Ihre <b>Absenderdomains<\/b> auf dem  <a href=\"https:\/\/app.mailgun.com\/mg\/dashboard\" target=\"_tabs\" rel=\"noopener noreferrer\"><u>Dashboard<\/u><\/a>:\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn Sie ein kostenloses Abonnement nutzen, sehen Sie eine Sandbox-Domain, die Sie im API-Endpunkt und als \u201efrom\u201c-E-Mail-Adresse verwenden, wenn Sie E-Mails \u00fcber die Mailgun-APIs senden. Die Sandbox-Domain sieht typischerweise so aus: <code>.mailgun.org<\/code>.<\/p>\n\n\n    <div data-content-type=\"longform\"  class=\"callout text-body-color px-5 py-6 px-md-6 px-lg-7 py-md-7 longform-spacings rounded-lg bg-light\" data-theme=\"light\">\r\n\r\n        <div class=\"content-body\"> Wenn Sie E-Mails \u00fcber eine benutzerdefinierte Domain senden m\u00f6chten, m\u00fcssen Sie ein Upgrade auf ein kostenpflichtiges Abonnement vornehmen. Das kostenlose Abonnement beschr\u00e4nkt Sie auf die Sandbox-Domain und erm\u00f6glicht das Senden von E-Mails an bis zu f\u00fcnf verifizierte Adressen, was beim Testen und Entwickeln hilfreich ist, w\u00e4hrend Sie die Mailgun-API in Ihr System integrieren. Sie k\u00f6nnen diese E-Mail-Adressen zu den <a href=\"https:\/\/help.mailgun.com\/hc\/en-us\/articles\/217531258-Authorized-Recipients\"><b>autorisierten Empf\u00e4ngern<\/b><\/a> in den Kontoeinstellungen hinzuf\u00fcgen.\u00a0<\/div>\r\n    <\/div>\r\n\n\n\n<h3 class=\"wp-block-heading\">Module importieren und initialisieren<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Um Transaktions-E-Mails zu automatisieren, beginnen Sie mit der Erstellung einer main.py-Datei in Ihrem Projektverzeichnis und f\u00fcgen Sie den folgenden Code hinzu:\u00a0<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                Python                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copy to clipboard\" data-clipboard-success-label=\"Copied!\" data-clipboard-error-label=\"Unable to copy\" data-tooltip=\"Copy to clipboard\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copy to clipboard\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-Python\">\r\n                                <code id=\"code_0_content\" class=\"language-Python\">\r\n\r\n                                    ```python \r\nimport requests \r\n\r\nimport logging \r\n\r\nimport os \r\n\r\nfrom dotenv import load_dotenv \r\n\r\nlogging.basicConfig(level=logging.INFO)\u202f # Set log level \r\n\r\nload_dotenv()\u202f # For reading the API key from the `.env` file \r\n\r\n# Sandbox API URL format: https:\/\/api.mailgun.net\/v3\/sandbox.mailgun.org\/messages \r\n\r\nMAILGUN_API_URL = &quot;https:\/\/api.mailgun.net\/v3\/YOUR_DOMAIN_NAME\/messages&quot; \r\n\r\nFROM_EMAIL_ADDRESS = &quot;Sender Name &quot; \r\n``` \r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Die Funktion <code>load_dotenv()<\/code> aus der <code>python-dotenv<\/code>-Bibliothek l\u00e4dt Umgebungsvariablen aus Ihrer .env-Datei in Ihren Python-Code. Dies ist eine Best Practice f\u00fcr die sichere Speicherung und den Zugriff auf sensible Informationen wie Anmeldedaten und API-Schl\u00fcssel.\u00a0\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">MAILGUN_API_URL legt die API-URL f\u00fcr Ihr Python-Skript fest, w\u00e4hrend FROM_EMAIL_ADDRESS die E-Mail-Adresse des Absenders angibt (beide m\u00fcssen Ihre E-Mail-Absenderdomain oder die zuvor erw\u00e4hnte Sandbox-Domain verwenden).\u00a0<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Senden einer E-Mail \u00fcber die Mailgun-API<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Der folgende Code zeigt Ihnen, wie Sie mithilfe der Mailgun-API eine E-Mail an eine einzelne Adresse senden. Sie sollten diesen Code der zuvor erstellten main.py-Datei unterhalb der Initialisierung hinzuf\u00fcgen:\u00a0<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                Python                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copy to clipboard\" data-clipboard-success-label=\"Copied!\" data-clipboard-error-label=\"Unable to copy\" data-tooltip=\"Copy to clipboard\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copy to clipboard\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-Python\">\r\n                                <code id=\"code_0_content\" class=\"language-Python\">\r\n\r\n                                    \r\n```python \r\ndef _send_email(to_address: str, subject: str, message: str): \r\n\r\n\u202f\u202f\u202f\u202f&quot;&quot;&quot; \r\n\r\n\u202f\u202f\u202f\u202fSend single email to the given email address using Mailgun API. \r\n\r\n\u202f\u202f\u202f\u202f:param to_address: \r\n\r\n\u202f\u202f\u202f\u202f:param subject: \r\n\r\n\u202f\u202f\u202f\u202f:param message: \r\n\r\n\u202f\u202f\u202f\u202f&quot;&quot;&quot; \r\n\r\n\u202f\u202f\u202f\u202ftry: \r\n\r\n\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202fapi_key = os.getenv(&quot;MAILGUN_API_KEY&quot;)\u202f # Get API key from the `.env` file \r\n\r\n\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202fresp = requests.post(MAILGUN_API_URL, auth=(&quot;api&quot;, api_key), \r\n\r\n\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202fdata={&quot;from&quot;: FROM_EMAIL_ADDRESS, \r\n\r\n\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f&quot;to&quot;: to_address, &quot;subject&quot;: subject, &quot;html&quot;: message}) \r\n\r\n\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202fif resp.status_code == 200:\u202f # Success \r\n\r\n\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202flogging.info(f&quot;Successfully sent an email to &#039;{to_address}&#039; via Mailgun API.&quot;) \r\n\r\n\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202felse: \u202f # Error \r\n\r\n\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202flogging.error(f&quot;Could not send the email, reason: {resp.text}&quot;) \r\n\r\n\u202f\u202f\u202f\u202fexcept Exception as ex: \r\n\r\n\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202flogging.exception(f&quot;Mailgun error: {ex}&quot;) \r\n``` \r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Die Funktion <code>_send_email()<\/code> nimmt drei Argumente entgegen: <code>to_address<\/code>, <code>subject<\/code> und <code>message<\/code>. <code>to_address<\/code> ist die E-Mail des Empf\u00e4ngers, w\u00e4hrend subject und message jeweils den Betreff und Inhalt der E-Mail definieren. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Funktion liest den Mailgun-API-Schl\u00fcssel aus der .env-Datei aus, der dann zur Authentifizierung des API-Aufrufs an die angegebene MAILGUN_API_URL verwendet wird. Dieser Schl\u00fcssel identifiziert Ihr Konto eindeutig, sodass Mailgun Ihre Anfrage verifizieren kann. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Um sicherzustellen, dass die E-Mail korrekt gesendet wird, m\u00fcssen Sie Ihren eindeutigen API-Schl\u00fcssel verwenden; die \u201efrom\u201c-E-Mail-Adresse muss mit Ihrer g\u00fcltigen Domain oder der Sandbox-Domain von Mailgun verkn\u00fcpft sein. Andernfalls schl\u00e4gt der API-Aufruf fehl und gibt einen Fehler zur\u00fcck. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die E-Mail-Daten werden mithilfe der HTTP-POST-Methode \u00fcber den Aufruf requests.post() gesendet. Wenn der API-Aufruf erfolgreich ist, wird die E-Mail f\u00fcr die Zustellung in die Warteschlange gestellt, und die API gibt den Status HTTP 200 OK zur\u00fcck. Wenn ein Fehler auftritt, liefert die API eine Fehlernachricht zusammen mit einem entsprechenden HTTP-Statuscode. Beide Szenarien werden von dieser Funktion als Referenz f\u00fcr Sie protokolliert. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Alle Automatisierungen von Transaktions-E-Mails in den folgenden Abschnitten st\u00fctzen sich auf die Funktion <code>_send_email() <\/code>, um E-Mails \u00fcber die Mailgun-API zu senden. <\/p>\n\n\n    <div data-content-type=\"longform\"  class=\"callout text-body-color px-5 py-6 px-md-6 px-lg-7 py-md-7 longform-spacings rounded-lg bg-light\" data-theme=\"light\">\r\n\r\n        <div class=\"content-body\"> Der Mailgun-API-Aufruf wird unmittelbar nach Erhalt Ihrer HTTP-Anfrage zur\u00fcckgegeben, was anzeigt, dass die E-Mail f\u00fcr die Zustellung in die Warteschlange gestellt wurde.\u00a0<\/div><div class=\"content-body mt-3\">Mit dieser Einrichtung sind Sie nun bereit, Ihre Transaktions-E-Mails f\u00fcr verschiedene Szenarien zu automatisieren.\u00a0<\/div>\r\n    <\/div>\r\n\n\n\n<h2 class=\"wp-block-heading\">Best Practice: E-Mails zur Kontoregistrierung automatisieren<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Die Registrierung von Nutzerkonten ist einer der wichtigsten Anwendungsf\u00e4lle f\u00fcr Transaktions-E-Mails, da sie als Einstiegspunkt des Nutzers in Ihr System dient. Der erste Eindruck z\u00e4hlt, und diese anf\u00e4ngliche Interaktion ist eine Gelegenheit, Vertrauen aufzubauen und eine positive Beziehung zum Nutzer herzustellen. Eine gut getimte Gratulations-E-Mail bei der Registrierung best\u00e4tigt nicht nur den Erfolg des Prozesses, sondern versichert dem Nutzer auch, dass sein Konto einsatzbereit ist.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Um dies zu erreichen, sollte Ihr System sofort eine automatisierte Best\u00e4tigungs-E-Mail senden, um den Nutzer wissen zu lassen, dass seine Registrierung erfolgreich war.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hier ist ein Beispiel, wie man dies implementiert:\u00a0<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                Python                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copy to clipboard\" data-clipboard-success-label=\"Copied!\" data-clipboard-error-label=\"Unable to copy\" data-tooltip=\"Copy to clipboard\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copy to clipboard\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-Python\">\r\n                                <code id=\"code_0_content\" class=\"language-Python\">\r\n\r\n                                    ```python \r\ndef _notify_registration(user_name: str, user_email: str): \r\n\r\n\u202f\u202f\u202f\u202f&quot;&quot;&quot; \r\n\r\n\u202f\u202f\u202f\u202fNotify user on successful registration using `_send_email` \r\n\r\n\u202f\u202f\u202f\u202f:param user_name: \r\n\r\n\u202f\u202f\u202f\u202f:param user_email: \r\n\r\n\u202f\u202f\u202f\u202f&quot;&quot;&quot; \r\n\r\n\u202f\u202f\u202f\u202f# Use your own formatted HTML message here, with an appropriate link \r\n\r\n\u202f\u202f\u202f\u202fregistration_msg = f&#039;Dear {user_name},&lt;br \/&gt;&lt;br \/&gt; You have successfully registered on our site.&#039; \r\n\r\n\u202f\u202f\u202f\u202f_send_email(user_email, &quot;Registration successful&quot;, registration_msg) \r\n\r\ndef register_user(user_name: str, user_email: str): \r\n\r\n\u202f\u202f\u202f\u202f&quot;&quot;&quot; \r\n\r\n\u202f\u202f\u202f\u202fRegister the user and notify the user on successful registration. \r\n\r\n\u202f\u202f\u202f\u202f:param user_name: \r\n\r\n\u202f\u202f\u202f\u202f:param user_email: \r\n\r\n\u202f\u202f\u202f\u202f&quot;&quot;&quot; \r\n\r\n\u202f\u202f\u202f\u202f# Actual code to register the user \r\n\r\n\u202f\u202f\u202f\u202flogging.info(f&quot;Sending registration email to the user: {user_name}...&quot;) \r\n\r\n\u202f\u202f\u202f\u202f_notify_registration(user_name, user_email) \r\n``` \r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Die erste Funktion, <code>_notify_registration()<\/code>, ist f\u00fcr das Senden einer E-Mail-Benachrichtigung an einen Nutzer verantwortlich, der sich gerade registriert hat. Sie nimmt zwei Parameter entgegen: user_name und user_email. Innerhalb dieser Funktion wird eine einfache HTML-Nachricht konstruiert unter Verwendung eines  <a href=\"https:\/\/docs.python.org\/3\/tutorial\/inputoutput.html#formatted-string-literals\" target=\"_tabs\" rel=\"noopener noreferrer\"><u>f-Strings<\/u><\/a>, der das einfache Einf\u00fcgen des Namens des Nutzers in die Nachricht erm\u00f6glicht. Diese Funktion ruft dann die zuvor besprochene Funktion <code>_send_email()<\/code> auf, um die E-Mail zu senden.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00a0Die zweite Stub-Funktion, <code>register_user()<\/code>, schl\u00e4gt den Haupteinstiegspunkt f\u00fcr den Nutzerregistrierungsprozess innerhalb Ihres Systems vor. Sie nimmt ebenfalls <code>user_name<\/code> und <code>user_email<\/code> als Parameter entgegen. Im echten Leben w\u00fcrde sie typischerweise mehr Parameter oder \u201eNutzer\u201c-Objekte mit weiteren Details enthalten. Diese Funktion ist f\u00fcr die Abwicklung des Registrierungsprozesses verantwortlich. Wie hier gezeigt, protokolliert sie den E-Mail-Versand und ruft die Funktion <code>_notify_registration()<\/code> auf, um die automatisierte Best\u00e4tigungs-E-Mail nach Abschluss der Nutzerregistrierung zu initiieren.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Nutzerregistrierung dient als Trigger f\u00fcr diese Transaktions-E-Mail, und Sie k\u00f6nnen diese mithilfe des oben gezeigten API-Workflows automatisieren. Es ist auch eine gro\u00dfartige Chance, Nutzer \u00fcber Ihre Dienste und wichtigsten Funktionen zu informieren.\u00a0<\/p>\n\n\n    <div data-content-type=\"longform\"  class=\"callout text-body-color px-5 py-6 px-md-6 px-lg-7 py-md-7 longform-spacings rounded-lg bg-light\" data-theme=\"light\">\r\n\r\n        <div class=\"content-body\"> Die Mailgun-API erm\u00f6glicht es Ihnen, <a href=\"https:\/\/documentation.mailgun.com\/docs\/mailgun\/user-manual\/sending-messages\/#templates\">HTML-Vorlagen<\/a> zu erstellen und anzupassen, was Ihnen die Flexibilit\u00e4t gibt, optisch ansprechende Transaktions-E-Mails mit umfangreichen Inhalten zu gestalten.\u00a0<\/div>\r\n    <\/div>\r\n\n\n\n<h2 class=\"wp-block-heading\">Best Practice: Double-Opt-in-Best\u00e4tigungs-E-Mails automatisieren<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn ein Nutzer Ihren Newsletter abonniert, k\u00f6nnen Sie ihm, anstatt ihn sofort zu Ihrer Abonnentenliste hinzuzuf\u00fcgen, eine E-Mail senden und ihn bitten, sein Abonnement zu best\u00e4tigen. Dieser Prozess, Double-Opt-in-Best\u00e4tigung genannt, ist in einigen L\u00e4ndern aus Gr\u00fcnden der Compliance gesetzlich vorgeschrieben.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hier fungiert das Abonnement des Nutzers als Trigger, und Sie k\u00f6nnen die Double-Opt-in-Best\u00e4tigung mit dem folgenden Code automatisieren:\u00a0<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                Python                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copy to clipboard\" data-clipboard-success-label=\"Copied!\" data-clipboard-error-label=\"Unable to copy\" data-tooltip=\"Copy to clipboard\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copy to clipboard\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-Python\">\r\n                                <code id=\"code_0_content\" class=\"language-Python\">\r\n\r\n                                    ```python \r\ndef _notify_subscription(user_name: str, user_email: str): \r\n\r\n\u202f\u202f\u202f\u202f&quot;&quot;&quot; \r\n\r\n\u202f\u202f\u202f\u202fDouble opt-in confirmation for user subscription. \r\n\r\n\u202f\u202f\u202f\u202f:param user_name: \r\n\r\n\u202f\u202f\u202f\u202f:param user_email: \r\n\r\n\u202f\u202f\u202f\u202f&quot;&quot;&quot; \r\n\r\n\u202f\u202f\u202f\u202f# Use your own formatted HTML message here, with an appropriate link \r\n\r\n\u202f\u202f\u202f\u202fsubscription_msg = f&#039;Dear {user_name},&lt;br \/&gt;&lt;br \/&gt; Please confirm your subscription to our newsletter by clicking &#039; \\ \r\n\r\n\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202ff&#039;this link: &lt;a href=&quot;https:\/\/example.com\/confirm-subscription?id=abcdef1234567xyz&quot;&gt;&#039; \\ \r\n\r\n\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202ff&#039;https:\/\/example.com\/confirm-subscription?id=abcdef1234567xyz&lt;\/a&gt;&#039; \r\n\r\n\u202f\u202f\u202f\u202f_send_email(user_email, &quot;Confirm subscription&quot;, subscription_msg) \r\n\r\ndef subscribe_user(user_name: str, user_email: str): \r\n\r\n\u202f\u202f\u202f\u202f&quot;&quot;&quot; \r\n\r\n\u202f\u202f\u202f\u202fSubscribe user and send opt-in confirmation message. \r\n\r\n\u202f\u202f\u202f\u202f:param user_name: \r\n\r\n\u202f\u202f\u202f\u202f:param user_email: \r\n\r\n\u202f\u202f\u202f\u202f&quot;&quot;&quot; \r\n\r\n\u202f\u202f\u202f\u202f# Code to subscribe user with pending confirmation \r\n\r\n\u202f\u202f\u202f\u202flogging.info(f&quot;Sending subscription confirmation email to the user: {user_name}...&quot;) \r\n\r\n\u202f\u202f\u202f\u202f_notify_subscription(user_name, user_email) \r\n``` \r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Die erste Funktion, <code>_notify_subscription()<\/code>, ist f\u00fcr das Senden einer Double-Opt-in-Best\u00e4tigungs-E-Mail an einen Nutzer verantwortlich, der beantragt hat, einen Newsletter zu abonnieren. Sie nimmt zwei Parameter entgegen: user_name und user_email. Innerhalb dieser Funktion wird eine HTML-Nachricht mithilfe eines f-Strings konstruiert, die den Namen des Nutzers und einen Dummy-Best\u00e4tigungslink enth\u00e4lt. Erneut ruft diese Funktion dann die Funktion <code>_send_email()<\/code> auf, um die E-Mail zu senden.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die zweite Stub-Funktion, <code>subscribe_user()<\/code>, ist der Haupteinstiegspunkt f\u00fcr den Nutzer-Abonnementprozess. Sie nimmt ebenfalls user_name und user_email als Parameter entgegen. Diese Funktion verarbeitet in der Regel den anf\u00e4nglichen Abonnementprozess und speichert wahrscheinlich die Informationen des Nutzers mit dem Status \u201eausstehend\u201c. Am Ende protokolliert sie den E-Mail-Versand und ruft dann die Funktion <code>_notify_subscription()<\/code> auf, um die Double-Opt-in-Best\u00e4tigungs-E-Mail zu erstellen und zu senden.\u00a0<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Best Practice: E-Mails zum Passwort zur\u00fccksetzen automatisieren<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Wollten Sie sich schon einmal anmelden, nur um dann festzustellen, dass Sie Ihr Passwort vergessen haben und auf den Link \u201ePasswort vergessen\u201c klicken m\u00fcssen? Ein Klick auf diesen Link ist der Trigger f\u00fcr eine E-Mail, auf die Sie sehns\u00fcchtig warten.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hier ist ein Beispiel-Code, der zeigt, wie diese Art von Transaktions-E-Mail automatisiert wird:\u00a0<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                Python                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copy to clipboard\" data-clipboard-success-label=\"Copied!\" data-clipboard-error-label=\"Unable to copy\" data-tooltip=\"Copy to clipboard\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copy to clipboard\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-Python\">\r\n                                <code id=\"code_0_content\" class=\"language-Python\">\r\n\r\n                                    ```python \r\ndef _notify_password_reset(user_name: str, user_email: str): \r\n\r\n\u202f\u202f\u202f\u202f&quot;&quot;&quot; \r\n\r\n\u202f\u202f\u202f\u202fSend password reset email to the user \r\n\r\n\u202f\u202f\u202f\u202f:param user_name: \r\n\r\n\u202f\u202f\u202f\u202f:param user_email: \r\n\r\n\u202f\u202f\u202f\u202f&quot;&quot;&quot; \r\n\r\n\u202f\u202f\u202f\u202f# Use your own formatted HTML message here \r\n\r\n\u202f\u202f\u202f\u202fregistration_msg = f&#039;Dear {user_name},&lt;br \/&gt;&lt;br \/&gt; Please use the following link to reset your password: &#039; \\ \r\n\r\n\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202ff&#039;&lt;a href=&quot;https:\/\/example.com\/password-reset?token=lmnopqr7654321abc&quot;&gt;&#039; \\ \r\n\r\n\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202f\u202ff&#039;https:\/\/example.com\/password-reset?token=lmnopqr7654321abc&lt;\/a&gt;&#039; \r\n\r\n\u202f\u202f\u202f\u202f_send_email(user_email, &quot;Reset password&quot;, registration_msg) \r\n\r\ndef reset_user_password(user_name: str, user_email: str): \r\n\r\n\u202f\u202f\u202f\u202f&quot;&quot;&quot; \r\n\r\n\u202f\u202f\u202f\u202fInitiate password-reset and notify user \r\n\r\n\u202f\u202f\u202f\u202f:param user_name: \r\n\r\n\u202f\u202f\u202f\u202f:param user_email: \r\n\r\n\u202f\u202f\u202f\u202f&quot;&quot;&quot; \r\n\r\n\u202f\u202f\u202f\u202f# Password reset code for the user \r\n\r\n\u202f\u202f\u202f\u202flogging.info(f&quot;Sending password reset email to the user: {user_name}...&quot;) \r\n\r\n\u202f\u202f\u202f\u202f_notify_password_reset(user_name, user_email) \r\n``` \r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Die Funktion <code>_notify_password_reset()<\/code> ist f\u00fcr das Erstellen und Senden einer E-Mail an den Nutzer zum Passwort zur\u00fccksetzen verantwortlich. Sie nimmt den Namen und die E-Mail-Adresse des Nutzers als Eingaben entgegen. Innerhalb der Funktion wird eine HTML-Nachricht mithilfe eines f-Strings erstellt, die den Namen des Nutzers und eine eindeutige URL zum Passwort zur\u00fccksetzen enth\u00e4lt. Die Funktion verwendet dann die Funktion <code>_send_email()<\/code>, um diese Nachricht in den Posteingang des Nutzers zuzustellen.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Funktion <code>reset_user_password()<\/code> arbeitet parallel dazu als Startpunkt, wenn ein Nutzer sein Passwort zur\u00fccksetzen m\u00f6chte. Sie erfordert ebenfalls den Namen und die E-Mail des Nutzers als Eingaben. Diese Funktion w\u00fcrde normalerweise einige Hintergrundarbeiten erledigen, um das Passwort zur\u00fccksetzen vorzubereiten (nicht in diesem Code gezeigt). Sie protokolliert dann den E-Mail-Versand und ruft <code>_notify_password_reset()<\/code> auf, um die Anweisungen zum Zur\u00fccksetzen zu senden.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c4hnlich wie bei den vorherigen zwei Anwendungsf\u00e4llen demonstriert dieses Funktionspaar einen modularen Ansatz f\u00fcr das Passwort zur\u00fccksetzen. Indem die Benachrichtigungs- und Trigger-Prozesse getrennt gehalten werden, macht dieses Design das System wartungsfreundlicher und erm\u00f6glicht zuk\u00fcnftige Verbesserungen am Workflow f\u00fcr das Passwort zur\u00fccksetzen.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sie k\u00f6nnen diese Funktionen zur Demonstration von der Hauptfunktion (Main) aus aufrufen, wie hier:\u00a0<\/p>\n\n\n    <div data-content-type=\"longform\" class=\"code-snippet longform-spacings rounded-lg overflow-hidden shadow \" data-count=\"1\">\r\n        <ul class=\"nav nav-buttons code-snippet__tabs longform-except position-relative d-flex gap-2 flex-wrap p-3\" role=\"tablist\">\r\n\r\n                            \r\n                    \r\n                        <li class=\"nav-item\" role=\"presentation\">\r\n                            <button class=\"nav-link active\" data-bs-toggle=\"tab\" data-bs-target=\"#code_0\" type=\"button\" role=\"tab\" aria-controls=\"code_0\" aria-selected=\"true\">\r\n                                Python                            <\/button>\r\n                        <\/li>\r\n\r\n                    \r\n                            \r\n        <\/ul>\r\n        <div class=\"code-snippet__tab-content tab-content\">\r\n\r\n                            \r\n                    <div class=\"tab-pane show active\" id=\"code_0\" role=\"tabpanel\" aria-labelledby=\"code_0\">\r\n                        <div class=\"code-snippet__code-wrapper\">\r\n                            <div class=\"nav nav-buttons code-snippet__copy-wrapper\">\r\n                                <button type=\"button\" class=\"nav-link code-snippet__copy\" data-clipboard-target=\"#code_0_content\" data-clipboard-label=\"Copy to clipboard\" data-clipboard-success-label=\"Copied!\" data-clipboard-error-label=\"Unable to copy\" data-tooltip=\"Copy to clipboard\" data-tooltip-placement=\"left\" role=\"tooltip\" aria-label=\"Copy to clipboard\">\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--default\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/file-stack.svg\"><\/svg>\r\n                                    <svg class=\"code-snippet__copy-icon code-snippet__copy-icon--success\" width=\"24\" height=\"24\" aria-hidden=\"true\" data-url=\"https:\/\/www.mailgun.com\/wp-content\/plugins\/sinch-core\/assets\/icons\/sinch\/badge-check.svg\"><\/svg>\r\n                                <\/button>\r\n                            <\/div>\r\n                            <pre class=\"w-100 h-100 m-0 line-numbers language-Python\">\r\n                                <code id=\"code_0_content\" class=\"language-Python\">\r\n\r\n                                    ```python \r\n# Demo of automated transactional emails \r\n\r\nif __name__ == &quot;__main__&quot;: \r\n\r\n\u202f\u202f\u202f\u202fregister_user(&quot;Kirstin&quot;,\u202f &quot;Kirstin &quot;) \r\n\r\n\u202f\u202f\u202f\u202fsubscribe_user(&quot;Jakkie&quot;,\u202f &quot;Jakkie &quot;) \r\n\r\n\u202f\u202f\u202f\u202freset_user_password(&quot;Manish&quot;,\u202f &quot;Manish &quot;) \r\n``` \r\n                                <\/code>\r\n                            <\/pre>\r\n                        <\/div>\r\n                    <\/div>\r\n                                    <\/div>\r\n    <\/div>\r\n\n\n\n<p class=\"wp-block-paragraph\">Diese drei Beispiele zeigen, wie Sie Transaktions-E-Mails in Ihrem System automatisieren k\u00f6nnen. Jedes folgt einem \u00e4hnlichen Muster:\u00a0<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Es wird eine spezifische Funktion f\u00fcr eine bestimmte Art von Benachrichtigung (Registrierung, Abonnement oder Passwort zur\u00fccksetzen) erstellt, die durch das entsprechende Ereignis oder den entsprechenden Workflow als Trigger ausgel\u00f6st wird.\u00a0<\/li>\n\n\n\n<li>Die Funktion bereitet eine relevante E-Mail-Nachricht vor.\u00a0<\/li>\n\n\n\n<li>Eine separate Hilfsfunktion (unter Verwendung der Mailgun-API) wird aufgerufen, um die E-Mail tats\u00e4chlich zu senden.\u00a0<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Dieser Ansatz stellt sicher, dass Transaktions-E-Mails automatisch in Schl\u00fcsselmomenten gesendet werden, z. B. wenn sich ein Nutzer registriert, etwas abonniert oder ein Passwort zur\u00fccksetzen anfordert.\u00a0\u00a0<\/p>\n\n\n    <div data-content-type=\"longform\"  class=\"callout text-body-color px-5 py-6 px-md-6 px-lg-7 py-md-7 longform-spacings rounded-lg bg-light\" data-theme=\"light\">\r\n\r\n        <div class=\"content-body\"> Sie finden den gesamten Code f\u00fcr dieses Tutorial in <a href=\"https:\/\/github.com\/manishh\/gifts-giveaways\/tree\/master\/python\/mailgun-transactional-emails\">diesem GitHub-Repo<\/a>. F\u00fcr noch mehr Informationen lesen Sie <a href=\"https:\/\/www.mailgun.com\/blog\/email\/the-benefits-of-email-automation\/\">die acht Vorteile der E-Mail-Automatisierung zur Verbesserung Ihres Kundenerlebnisses.<\/a>\u00a0<\/div>\r\n    <\/div>\r\n\n\n\n<h2 class=\"wp-block-heading\">Wie geht es weiter, nachdem Sie diese Workflows eingef\u00fchrt haben?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In diesem Artikel haben wir die St\u00e4rke von Transaktions-E-Mails in der Nutzer-Kommunikation analysiert. Im Gegensatz zu Marketing-E-Mails werden diese Nachrichten durch spezifische Aktionen ausgel\u00f6st (als Trigger) \u2013 wie einen Kauf oder ein Passwort zur\u00fccksetzen \u2013 und liefern wichtige, zeitkritische Informationen, die die Nutzer bei der Stange halten und informieren.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wir haben auch behandelt, wie Sie diese E-Mails mithilfe von API-Workflows automatisieren k\u00f6nnen, und Sie durch die Einrichtung von Funktionen f\u00fcr Dinge wie Willkommens-E-Mails, Abonnement-Best\u00e4tigungen und das Passwort zur\u00fccksetzen gef\u00fchrt. Diese Automatisierung stellt sicher, dass Ihre E-Mails genau dann im Posteingang landen, wenn Ihre Nutzer sie ben\u00f6tigen.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sind Sie bereit, Ihre Transaktions-E-Mails zu optimieren? Mit den robusten APIs und Tracking-Tools von Mailgun k\u00f6nnen Sie Nachrichten einfach automatisieren und das Nutzer-Erlebnis von Anfang bis Ende verbessern, aber verlassen Sie sich nicht nur auf unser Wort, \u00fcberzeugen Sie sich selbst.\u00a0<\/p>\n\n\n\r\n    <aside data-content-type=\"longform\"  class=\"banner-block longform-spacings rounded-lg shadow-lg px-5 py-6 px-md-6 py-md-7 p-lg-7 bg-light\" data-theme=\"dark\" aria-labelledby=\"banner-block-block_6fbcad5d150ee0bfb97ab1ccd4cdfbed\">\r\n                    <p class=\"text-uppercase section-caption text-body-color\">\r\n                Registrieren            <\/p>\r\n                            <p class=\"h4 text-accent fw-bold\" id=\"banner-block-block_6fbcad5d150ee0bfb97ab1ccd4cdfbed\">\r\n                Loslegen ist ganz einfach. Und es ist kostenlos.            <\/p>\r\n                            <div class=\"mb-0 text-body-color\">\r\n                                    <div class=\"content-body mb-0 text-body-color\">Erfahren Sie, was Sie mit der weltbesten Plattform f\u00fcr E-Mail-Zustellung alles erreichen k\u00f6nnen.<\/div>\r\n                            <\/div>\r\n        \r\n        <div class=\"text-start mt-5\"><a href=\"https:\/\/signup.mailgun.com\/new\/signup\"  class=\"btn btn-secondary\" >Get started<\/a><\/div>\r\n    <\/aside>\r\n\r\n","protected":false},"excerpt":{"rendered":"<p>Halten Sie Kunden mit Transaktions-E-Mails, die Vertrauen aufbauen, auf dem Laufenden. Erfahren Sie, wie Sie Ihre E-Mail-Automatisierung mit den API-Workflows von Mailgun f\u00fcr ein nahtloses Kundenerlebnis optimieren.\u00a0<\/p>\n","protected":false},"author":11,"featured_media":3952,"menu_order":0,"template":"","meta":{"_acf_changed":false,"footnotes":""},"blog_category":[19],"class_list":["post-17573","blog","type-blog","status-publish","has-post-thumbnail","hentry","blog_category-dev-life"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Best Practices f\u00fcr Transaktions-E-Mails f\u00fcr Entwickler, mit Code-Beispielen - Transactional Email API Service For Developers | Mailgun<\/title>\n<meta name=\"description\" content=\"Best Practices f\u00fcr Transaktions-E-Mails f\u00fcr Entwickler: Sichere API-Einrichtung, Fehlerbehandlung und Python-Code f\u00fcr Workflows zur Registrierung, zum Opt-in und zum Passwort zur\u00fccksetzen.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.mailgun.com\/de\/blog\/dev-life\/api-workflows-fur-transaktions-e-mails-erstellen\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Best Practices f\u00fcr Transaktions-E-Mails f\u00fcr Entwickler, mit Code-Beispielen - Transactional Email API Service For Developers | Mailgun\" \/>\n<meta property=\"og:description\" content=\"Best Practices f\u00fcr Transaktions-E-Mails f\u00fcr Entwickler: Sichere API-Einrichtung, Fehlerbehandlung und Python-Code f\u00fcr Workflows zur Registrierung, zum Opt-in und zum Passwort zur\u00fccksetzen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mailgun.com\/de\/blog\/dev-life\/api-workflows-fur-transaktions-e-mails-erstellen\/\" \/>\n<meta property=\"og:site_name\" content=\"Transactional Email API Service For Developers | Mailgun\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-28T08:16:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Dev-Life.png\" \/>\n\t<meta property=\"og:image:width\" content=\"720\" \/>\n\t<meta property=\"og:image:height\" content=\"448\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"8\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/blog\\\/dev-life\\\/api-workflows-fur-transaktions-e-mails-erstellen\\\/\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/blog\\\/dev-life\\\/api-workflows-fur-transaktions-e-mails-erstellen\\\/\",\"name\":\"Best Practices f\u00fcr Transaktions-E-Mails f\u00fcr Entwickler, mit Code-Beispielen - Transactional Email API Service For Developers | Mailgun\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/blog\\\/dev-life\\\/api-workflows-fur-transaktions-e-mails-erstellen\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/blog\\\/dev-life\\\/api-workflows-fur-transaktions-e-mails-erstellen\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Dev-Life.png\",\"datePublished\":\"2026-08-17T15:25:50+00:00\",\"dateModified\":\"2026-08-28T08:16:15+00:00\",\"description\":\"Best Practices f\u00fcr Transaktions-E-Mails f\u00fcr Entwickler: Sichere API-Einrichtung, Fehlerbehandlung und Python-Code f\u00fcr Workflows zur Registrierung, zum Opt-in und zum Passwort zur\u00fccksetzen.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/blog\\\/dev-life\\\/api-workflows-fur-transaktions-e-mails-erstellen\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.mailgun.com\\\/de\\\/blog\\\/dev-life\\\/api-workflows-fur-transaktions-e-mails-erstellen\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/blog\\\/dev-life\\\/api-workflows-fur-transaktions-e-mails-erstellen\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Dev-Life.png\",\"contentUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/MG-Blog-Dev-Life.png\",\"width\":720,\"height\":448},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/blog\\\/dev-life\\\/api-workflows-fur-transaktions-e-mails-erstellen\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Transaktions-E-Mail: Best Practices f\u00fcr Entwickler\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/\",\"name\":\"Transactional Email API Service For Developers | Mailgun\",\"description\":\"Leistungsstarke Transaktions-E-Mail-APIs, mit denen Sie E-Mails senden, empfangen und nachverfolgen k\u00f6nnen, speziell f\u00fcr Entwickler konzipiert. Erfahren Sie noch heute mehr!\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/#organization\",\"name\":\"Transactional Email API Service For Developers | Mailgun\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-android-chrome-512x512-1.png\",\"contentUrl\":\"https:\\\/\\\/www.mailgun.com\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-android-chrome-512x512-1.png\",\"width\":512,\"height\":512,\"caption\":\"Transactional Email API Service For Developers | Mailgun\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mailgun.com\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Best Practices f\u00fcr Transaktions-E-Mails f\u00fcr Entwickler, mit Code-Beispielen - Transactional Email API Service For Developers | Mailgun","description":"Best Practices f\u00fcr Transaktions-E-Mails f\u00fcr Entwickler: Sichere API-Einrichtung, Fehlerbehandlung und Python-Code f\u00fcr Workflows zur Registrierung, zum Opt-in und zum Passwort zur\u00fccksetzen.","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:\/\/www.mailgun.com\/de\/blog\/dev-life\/api-workflows-fur-transaktions-e-mails-erstellen\/","og_locale":"de_DE","og_type":"article","og_title":"Best Practices f\u00fcr Transaktions-E-Mails f\u00fcr Entwickler, mit Code-Beispielen - Transactional Email API Service For Developers | Mailgun","og_description":"Best Practices f\u00fcr Transaktions-E-Mails f\u00fcr Entwickler: Sichere API-Einrichtung, Fehlerbehandlung und Python-Code f\u00fcr Workflows zur Registrierung, zum Opt-in und zum Passwort zur\u00fccksetzen.","og_url":"https:\/\/www.mailgun.com\/de\/blog\/dev-life\/api-workflows-fur-transaktions-e-mails-erstellen\/","og_site_name":"Transactional Email API Service For Developers | Mailgun","article_modified_time":"2026-08-28T08:16:15+00:00","og_image":[{"width":720,"height":448,"url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Dev-Life.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"8\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.mailgun.com\/de\/blog\/dev-life\/api-workflows-fur-transaktions-e-mails-erstellen\/","url":"https:\/\/www.mailgun.com\/de\/blog\/dev-life\/api-workflows-fur-transaktions-e-mails-erstellen\/","name":"Best Practices f\u00fcr Transaktions-E-Mails f\u00fcr Entwickler, mit Code-Beispielen - Transactional Email API Service For Developers | Mailgun","isPartOf":{"@id":"https:\/\/www.mailgun.com\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.mailgun.com\/de\/blog\/dev-life\/api-workflows-fur-transaktions-e-mails-erstellen\/#primaryimage"},"image":{"@id":"https:\/\/www.mailgun.com\/de\/blog\/dev-life\/api-workflows-fur-transaktions-e-mails-erstellen\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Dev-Life.png","datePublished":"2026-08-17T15:25:50+00:00","dateModified":"2026-08-28T08:16:15+00:00","description":"Best Practices f\u00fcr Transaktions-E-Mails f\u00fcr Entwickler: Sichere API-Einrichtung, Fehlerbehandlung und Python-Code f\u00fcr Workflows zur Registrierung, zum Opt-in und zum Passwort zur\u00fccksetzen.","breadcrumb":{"@id":"https:\/\/www.mailgun.com\/de\/blog\/dev-life\/api-workflows-fur-transaktions-e-mails-erstellen\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mailgun.com\/de\/blog\/dev-life\/api-workflows-fur-transaktions-e-mails-erstellen\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.mailgun.com\/de\/blog\/dev-life\/api-workflows-fur-transaktions-e-mails-erstellen\/#primaryimage","url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Dev-Life.png","contentUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/07\/MG-Blog-Dev-Life.png","width":720,"height":448},{"@type":"BreadcrumbList","@id":"https:\/\/www.mailgun.com\/de\/blog\/dev-life\/api-workflows-fur-transaktions-e-mails-erstellen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.mailgun.com\/de\/"},{"@type":"ListItem","position":2,"name":"Blog","item":"https:\/\/www.mailgun.com\/de\/blog\/"},{"@type":"ListItem","position":3,"name":"Transaktions-E-Mail: Best Practices f\u00fcr Entwickler"}]},{"@type":"WebSite","@id":"https:\/\/www.mailgun.com\/de\/#website","url":"https:\/\/www.mailgun.com\/de\/","name":"Transactional Email API Service For Developers | Mailgun","description":"Leistungsstarke Transaktions-E-Mail-APIs, mit denen Sie E-Mails senden, empfangen und nachverfolgen k\u00f6nnen, speziell f\u00fcr Entwickler konzipiert. Erfahren Sie noch heute mehr!","publisher":{"@id":"https:\/\/www.mailgun.com\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.mailgun.com\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/www.mailgun.com\/de\/#organization","name":"Transactional Email API Service For Developers | Mailgun","url":"https:\/\/www.mailgun.com\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.mailgun.com\/de\/#\/schema\/logo\/image\/","url":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/06\/cropped-android-chrome-512x512-1.png","contentUrl":"https:\/\/www.mailgun.com\/wp-content\/uploads\/2025\/06\/cropped-android-chrome-512x512-1.png","width":512,"height":512,"caption":"Transactional Email API Service For Developers | Mailgun"},"image":{"@id":"https:\/\/www.mailgun.com\/de\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.mailgun.com\/de\/wp-json\/wp\/v2\/blog\/17573","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mailgun.com\/de\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.mailgun.com\/de\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/de\/wp-json\/wp\/v2\/users\/11"}],"version-history":[{"count":2,"href":"https:\/\/www.mailgun.com\/de\/wp-json\/wp\/v2\/blog\/17573\/revisions"}],"predecessor-version":[{"id":17579,"href":"https:\/\/www.mailgun.com\/de\/wp-json\/wp\/v2\/blog\/17573\/revisions\/17579"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mailgun.com\/de\/wp-json\/wp\/v2\/media\/3952"}],"wp:attachment":[{"href":"https:\/\/www.mailgun.com\/de\/wp-json\/wp\/v2\/media?parent=17573"}],"wp:term":[{"taxonomy":"blog_category","embeddable":true,"href":"https:\/\/www.mailgun.com\/de\/wp-json\/wp\/v2\/blog_category?post=17573"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}