{"id":4074,"date":"2024-12-29T09:04:31","date_gmt":"2024-12-29T08:04:31","guid":{"rendered":"https:\/\/vielhuber.de\/?p=4074"},"modified":"2024-12-29T10:32:19","modified_gmt":"2024-12-29T09:32:19","slug":"e-mails-verzoegert-senden","status":"publish","type":"post","link":"https:\/\/vielhuber.de\/blog\/e-mails-verzoegert-senden\/","title":{"rendered":"E-Mails verz\u00f6gert senden"},"content":{"rendered":"\n<p>Uhrzeit gerade unpassend? E-Mail zu fr\u00fch abgeschickt? E-Mails zu verz\u00f6gern kann in vielen Situationen sinnvoll sein: Sei es, um sich eine \u00dcberpr\u00fcfungszeit einzur\u00e4umen oder seinen eigenen Workload effektiv zu steuern \u2013 das Timing kann entscheidend sein. Es folgen drei M\u00f6glichkeiten, wie man das Versenden von E-Mails verz\u00f6gern und seine eigene Kommunikation optimieren kann.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h4 class=\"wp-block-heading\">Outlook<\/h4>\n\n\n\n<p>Microsoft Outlook bietet eine integrierte Funktion, mit der Sie E-Mails verz\u00f6gern k\u00f6nnen. Dazu nutzt man die Funktion <strong>\"Optionen > \u00dcbermittlung verz\u00f6gern\"<\/strong>:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"290\" height=\"113\" src=\"https:\/\/vielhuber.de\/wp-content\/uploads\/image-50.png\" alt=\"\" class=\"wp-image-4075\"\/><\/figure>\n<\/div>\n\n\n<p>Der gro\u00dfe Nachteil dieser L\u00f6sung ist es, dass (auch in Exchange-Umgebungen) Outlook hier clientseitig beim Versandzeitpunkt laufen muss.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Google<\/h3>\n\n\n\n<p><a href=\"https:\/\/workspace.google.com\/intl\/de\/gmail\" target=\"_blank\" rel=\"noreferrer noopener\">Gmail<\/a> bietet hier eine etwas bessere L\u00f6sung an. Dazu geht man vor dem Versand einer E-Mail auf <strong>\"Senden planen\"<\/strong>:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"192\" height=\"96\" src=\"https:\/\/vielhuber.de\/wp-content\/uploads\/image-53.png\" alt=\"\" class=\"wp-image-4084\"\/><\/figure>\n<\/div>\n\n\n<p>Bereits versandte E-Mails kann man auch innerhalb von 30 Sekunden \"r\u00fcckg\u00e4ngig\" machen. Dazu legt setzt man die jeweilige Einstellung unter <strong>\"Alle Einstellungen aufrufen\"<\/strong> zun\u00e4chst fest:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"519\" height=\"144\" src=\"https:\/\/vielhuber.de\/wp-content\/uploads\/image-56.png\" alt=\"\" class=\"wp-image-4091\"\/><\/figure>\n<\/div>\n\n\n<p>Wenn man nun eine E-Mail absendet, kann man sie links unten innerhalb dieser Zeitspanne r\u00fcckg\u00e4ngig machen:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"477\" height=\"69\" src=\"https:\/\/vielhuber.de\/wp-content\/uploads\/image-57.png\" alt=\"\" class=\"wp-image-4092\"\/><\/figure>\n<\/div>\n\n\n<h4 class=\"wp-block-heading\">Boomerang<\/h4>\n\n\n\n<p>Es gibt kostenpflichtige Dienstleister wie <a href=\"https:\/\/www.boomerangoutlook.com\" target=\"_blank\" rel=\"noreferrer noopener\">Boomerang for Outlook<\/a>, die neben Erinnerungen oder automatisierte Follow-Ups auch einen verz\u00f6gerten E-Mail-Versand anbieten:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"302\" height=\"317\" src=\"https:\/\/vielhuber.de\/wp-content\/uploads\/image-52.png\" alt=\"\" class=\"wp-image-4081\"\/><\/figure>\n<\/div>\n\n\n<p>Nachteilig ist hier, dass die E-Mails auf fremden Servern landen und die Nutzung kostenpflichtig ist.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">PHP<\/h4>\n\n\n\n<p>Grund genug, etwas selbst zu bauen: Mit Hilfe eines kleinen <a href=\"https:\/\/github.com\/vielhuber\/maildelay\" target=\"_blank\" rel=\"noreferrer noopener\">PHP-Scripts<\/a> kann man ebenso das Gew\u00fcnschte erreichen. Zun\u00e4chst legen wir in unserem Postfach eine Ordnerstruktur an:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"264\" height=\"125\" src=\"https:\/\/vielhuber.de\/wp-content\/uploads\/image-51.png\" alt=\"\" class=\"wp-image-4076\"\/><\/figure>\n<\/div>\n\n\n<p>Diese gibt den gew\u00fcnschten Versandzeitpunkt wieder. Der Workflow besteht nun darin, die verfasste E-Mail statt abzusenden als Entwurf zu speichern und in den jeweiligen Ordner zu verschieben. Wir installieren dann alle ben\u00f6tigten PHP-Packages:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>composer require php-imap\/php-imap phpmailer\/phpmailer vlucas\/phpdotenv<\/code><\/pre>\n\n\n\n<p>Schlie\u00dflich erstellen wir eine <code>.env<\/code>-Datei mit Zugangsdaten und Einstellungen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>HOST_SMTP=\"xxx\"\nPORT_SMTP=465\nHOST_IMAP=\"xxx\"\nPORT_IMAP=993\nUSERNAME=\"foo@bar.com\"\nPASSWORD=\"xxx\"\nENCRYPTION=\"ssl\"\nFROM_ADDRESS=\"foo@bar.com\"\nFROM_NAME=\"Foo Bar\"\nFOLDER_INBOX=\"INBOX\/DELAY\"\nFOLDER_OUTBOX=\"Gesendete Elemente\"\nPHP_EXECUTABLE=\"\/usr\/bin\/php\"<\/code><\/pre>\n\n\n\n<p>Das folgende PHP-Script erledigt dann den Rest:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\nrequire_once __DIR__ . '\/vendor\/autoload.php';\n\nclass MailDelay\n{\n&nbsp;&nbsp;&nbsp;&nbsp;private \\PhpImap\\Mailbox $mailbox;\n&nbsp;&nbsp;&nbsp;&nbsp;private array $folders;\n\n&nbsp;&nbsp;&nbsp;&nbsp;public function init(): void\n&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this->loadEnvironmentVariables();\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this->initMailbox();\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this->initFolders();\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this->processFolders();\n&nbsp;&nbsp;&nbsp;&nbsp;}\n\n&nbsp;&nbsp;&nbsp;&nbsp;private function loadEnvironmentVariables(): void\n&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$dotenv = \\Dotenv\\Dotenv::createImmutable(__DIR__);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$dotenv->load();\n&nbsp;&nbsp;&nbsp;&nbsp;}\n\n&nbsp;&nbsp;&nbsp;&nbsp;private function initMailbox(): void\n&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this->mailbox = new \\PhpImap\\Mailbox(\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'{' . $_SERVER&#91;'HOST_IMAP'] . ':' . $_SERVER&#91;'PORT_IMAP'] . '\/imap\/ssl}' . $_SERVER&#91;'FOLDER_INBOX'],\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$_SERVER&#91;'USERNAME'],\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$_SERVER&#91;'PASSWORD'],\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sys_get_temp_dir(),\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'UTF-8'\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);\n&nbsp;&nbsp;&nbsp;&nbsp;}\n\n&nbsp;&nbsp;&nbsp;&nbsp;private function initFolders(): void\n&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this->folders = &#91;];\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$folders = $this->mailbox->getMailboxes('*');\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach ($folders as $folder) {\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($folder&#91;'shortpath'] === $_SERVER&#91;'FOLDER_INBOX']) {\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this->folders&#91;] = (object) $folder;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;}\n\n&nbsp;&nbsp;&nbsp;&nbsp;private function processFolders(): void\n&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach ($this->folders as $folder) {\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this->mailbox->switchMailbox($folder->fullpath);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mailIds = $this->mailbox->searchMailbox('ALL');\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach ($mailIds as $mailId) {\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$preparedMail = $this->prepareMailData($mailId, $folder->shortpath);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$preparedMail->subject !== 'Dies ist Plain Text' &amp;&amp;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strtotime($preparedMail->time_to_send) > strtotime('now')\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;) {\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try {\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this->sendMail($preparedMail);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo 'Successfully sent mail #' . $preparedMail->id . '.' . PHP_EOL;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (\\Exception $e) {\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo 'Error in sending mail #' . $preparedMail->id . ': ' . $e->getMessage() . PHP_EOL;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo 'All mails have been processed.' . PHP_EOL;\n&nbsp;&nbsp;&nbsp;&nbsp;}\n\n&nbsp;&nbsp;&nbsp;&nbsp;private function prepareMailData(int $id, string $folder): object\n&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mail = $this->mailbox->getMail($id, false); \/\/ don't mark as unread\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return (object) &#91;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'id' => (string) $mail->id,\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'to' => $this->formatEmailAddresses($mail->to),\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'cc' => $this->formatEmailAddresses($mail->cc),\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'bcc' => $this->formatEmailAddresses($mail->bcc),\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'subject' => (string) $mail->subject,\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'content_html' => $this->convertEncoding($mail->textHtml),\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'content_plain' => $this->convertEncoding($mail->textPlain),\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'attachments' => $this->determineAttachments($mail->getAttachments()),\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'time_to_send' => $this->determineTimeToSend(explode('\/', $folder)&#91;2], $mail->date)\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;];\n&nbsp;&nbsp;&nbsp;&nbsp;}\n\n&nbsp;&nbsp;&nbsp;&nbsp;private function formatEmailAddresses(?array $addresses): ?array\n&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (empty($addresses)) {\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return null;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return array_map(\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function ($key, $value) {\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return &#91;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'email' => $key,\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'name' => $key === $value ? null : str_replace(' (' . $key . ')', '', $value)\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;];\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;array_keys($addresses),\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$addresses\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);\n&nbsp;&nbsp;&nbsp;&nbsp;}\n\n&nbsp;&nbsp;&nbsp;&nbsp;private function convertEncoding(string $text): string\n&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return mb_detect_encoding($text, 'UTF-8, ISO-8859-1') !== 'UTF-8'\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;? \\UConverter::transcode($text, 'UTF8', 'ISO-8859-1')\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: $text;\n&nbsp;&nbsp;&nbsp;&nbsp;}\n\n&nbsp;&nbsp;&nbsp;&nbsp;private function determineAttachments(array $attachmentsImap): array\n&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$attachments = &#91;];\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!empty($attachmentsImap)) {\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach ($attachmentsImap as $attachment) {\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$attachments&#91;] = &#91;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'name' => $attachment->name,\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'file' => $attachment->filePath,\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'disposition' => $attachment->disposition,\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'inline_id' => $attachment->contentId\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;];\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $attachments;\n&nbsp;&nbsp;&nbsp;&nbsp;}\n\n&nbsp;&nbsp;&nbsp;&nbsp;private function determineTimeToSend(string $delayTime, string $date): ?string\n&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$timeToSend = null;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($delayTime === 'THIS EVENING') {\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$timeToSend = date('Y-m-d', strtotime($date)) . ' 18:00:00';\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} elseif ($delayTime === 'THIS NIGHT') {\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$timeToSend =\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;date('Y-m-d', strtotime($date . (date('H', strtotime($date)) >= 4 ? ' + 1 day' : ''))) . ' 03:42:00';\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} elseif ($delayTime === 'NEXT MORNING') {\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$timeToSend =\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;date('Y-m-d', strtotime($date . (date('H', strtotime($date)) >= 9 ? ' + 1 day' : ''))) . ' 09:00:00';\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} elseif ($delayTime === 'NEXT WEEK') {\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$date = new \\DateTime(date('Y-m-d', strtotime($date)));\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$date->modify('next monday');\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$timeToSend = $date->format('Y-m-d') . ' 09:00:00';\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $timeToSend;\n&nbsp;&nbsp;&nbsp;&nbsp;}\n\n&nbsp;&nbsp;&nbsp;&nbsp;private function sendMail(object $preparedMail): void\n&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mail = new \\PHPMailer\\PHPMailer\\PHPMailer(true);\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mail->isSMTP();\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mail->Host = $_SERVER&#91;'HOST_SMTP'];\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mail->Port = $_SERVER&#91;'PORT_SMTP'];\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mail->Username = $_SERVER&#91;'USERNAME'];\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mail->Password = $_SERVER&#91;'PASSWORD'];\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mail->SMTPSecure = $_SERVER&#91;'ENCRYPTION'];\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mail->setFrom($_SERVER&#91;'FROM_ADDRESS'], $_SERVER&#91;'FROM_NAME']);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mail->SMTPAuth = true;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mail->SMTPOptions = &#91;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'tls' => &#91;'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true],\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'ssl' => &#91;'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true]\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;];\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mail->CharSet = 'utf-8';\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this->addRecipients($mail, $preparedMail->to, 'addAddress');\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this->addRecipients($mail, $preparedMail->cc, 'addCC');\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this->addRecipients($mail, $preparedMail->bcc, 'addBCC');\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mail->isHTML(!empty($preparedMail->content_html));\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mail->Subject = $preparedMail->subject;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!empty($preparedMail->content_html)) {\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mail->Body = $preparedMail->content_html;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mail->AltBody = !empty($preparedMail->content_plain)\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;? $preparedMail->content_plain\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: strip_tags(str_replace(&#91;'&lt;br>', '&lt;br\/>', '&lt;br \/>'], \"\\r\\n\", $preparedMail->content_html));\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mail->Body = $preparedMail->content_plain;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this->addAttachments($mail, $preparedMail->attachments);\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mail->send();\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this->mailbox->moveMail($preparedMail->id, $_SERVER&#91;'FOLDER_OUTBOX']);\n&nbsp;&nbsp;&nbsp;&nbsp;}\n\n&nbsp;&nbsp;&nbsp;&nbsp;private function addRecipients(\\PHPMailer\\PHPMailer\\PHPMailer $mail, ?array $recipients, string $method): void\n&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!empty($recipients)) {\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach ($recipients as $recipient) {\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mail->$method($recipient&#91;'email'], $recipient&#91;'name']);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;}\n\n&nbsp;&nbsp;&nbsp;&nbsp;private function addAttachments(\\PHPMailer\\PHPMailer\\PHPMailer $mail, array $attachments): void\n&nbsp;&nbsp;&nbsp;&nbsp;{\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!empty($attachments)) {\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach ($attachments as $attachment) {\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!empty($attachment&#91;'file']) &amp;&amp; !empty($attachment&#91;'name']) &amp;&amp; file_exists($attachment&#91;'file'])) {\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($attachment&#91;'disposition'] === 'attachment') {\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mail->addAttachment($attachment&#91;'file'], $attachment&#91;'name']);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} elseif ($attachment&#91;'disposition'] === 'inline') {\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mail->AddEmbeddedImage(\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$attachment&#91;'file'],\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$attachment&#91;'inline_id'],\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$attachment&#91;'name'],\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'base64',\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'image\/png'\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\n&nbsp;&nbsp;&nbsp;&nbsp;}\n}\n\n$md = new MailDelay();\n$md->init();<\/code><\/pre>\n\n\n\n<p>Damit dieses Script wiederkehrend l\u00e4uft, legen wir uns eine Bash-Datei an:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/usr\/bin\/env bash\nsource $(dirname \"$0\")\/.env\n\"$PHP_EXECUTABLE\" $(dirname \"$0\")\/maildelay.php<\/code><\/pre>\n\n\n\n<p>Wir f\u00fchren dieses Script dann alle 10 Minuten per Cronjob aus:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>*\/10 * * * * \/path\/to\/maildelay\/maildelay.sh 2>&amp;1<\/code><\/pre>\n\n\n\n<p>Diese L\u00f6sung ist flexibel anpassbar, datenschutzfreundlich und kostenlos. Sie funktioniert mit jedem (IMAP-kompatiblen) Konto. Doch unabh\u00e4ngig davon, ob man die integrierte Funktion in Outlook oder Gmail nutzt, auf erweiterte Tools wie Boomerang zur\u00fcckgreift oder eine individuelle L\u00f6sung implementiert \u2013 das zeitversetzte Senden von E-Mails ist ein wertvolles Instrument, um die eigene Produktivit\u00e4t zu steigern.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Uhrzeit gerade unpassend? E-Mail zu fr\u00fch abgeschickt? E-Mails zu verz\u00f6gern kann in vielen Situationen sinnvoll sein: Sei es, um sich eine \u00dcberpr\u00fcfungszeit einzur\u00e4umen oder seinen eigenen Workload effektiv zu steuern \u2013 das Timing kann entscheidend sein. Es folgen drei M\u00f6glichkeiten, wie man das Versenden von E-Mails verz\u00f6gern und seine eigene Kommunikation optimieren kann.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"gtbabel_prevent_lngs":"","gtbabel_alt_lng":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-4074","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-blog"},"acf":[],"yoast_head":"<title>E-Mails verz\u00f6gert senden &#060; Vielhuber David<\/title>\n<meta name=\"description\" content=\"Uhrzeit gerade unpassend? E-Mail zu fr\u00fch abgeschickt? E-Mails zu verz\u00f6gern kann in vielen Situationen sinnvoll sein: Sei es, um sich eine \u00dcberpr\u00fcf...\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vielhuber.de\/blog\/e-mails-verzoegert-senden\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"E-Mails verz\u00f6gert senden &#060; Vielhuber David\" \/>\n<meta property=\"og:description\" content=\"Uhrzeit gerade unpassend? E-Mail zu fr\u00fch abgeschickt? E-Mails zu verz\u00f6gern kann in vielen Situationen sinnvoll sein: Sei es, um sich eine \u00dcberpr\u00fcfungszeit\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vielhuber.de\/blog\/e-mails-verzoegert-senden\/\" \/>\n<meta property=\"og:site_name\" content=\"Vielhuber David\" \/>\n<meta property=\"article:published_time\" content=\"2024-12-29T08:04:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-12-29T09:32:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vielhuber.de\/wp-content\/uploads\/image-50.png\" \/>\n\t<meta property=\"og:image:width\" content=\"290\" \/>\n\t<meta property=\"og:image:height\" content=\"113\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"David\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@vielhuber\" \/>\n<meta name=\"twitter:site\" content=\"@vielhuber\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"David\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"4\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/e-mails-verzoegert-senden\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/e-mails-verzoegert-senden\\\/\"},\"author\":{\"name\":\"David\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#\\\/schema\\\/person\\\/64d4ff14713d413ea4d9b210d0c2c6ef\"},\"headline\":\"E-Mails verz\u00f6gert senden\",\"datePublished\":\"2024-12-29T08:04:31+00:00\",\"dateModified\":\"2024-12-29T09:32:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/e-mails-verzoegert-senden\\\/\"},\"wordCount\":370,\"publisher\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#\\\/schema\\\/person\\\/64d4ff14713d413ea4d9b210d0c2c6ef\"},\"image\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/e-mails-verzoegert-senden\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/image-50.png\",\"articleSection\":[\"Blog\"],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/e-mails-verzoegert-senden\\\/\",\"url\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/e-mails-verzoegert-senden\\\/\",\"name\":\"E-Mails verz\u00f6gert senden &#060; Vielhuber David\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/e-mails-verzoegert-senden\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/e-mails-verzoegert-senden\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/image-50.png\",\"datePublished\":\"2024-12-29T08:04:31+00:00\",\"dateModified\":\"2024-12-29T09:32:19+00:00\",\"description\":\"Uhrzeit gerade unpassend? E-Mail zu fr\u00fch abgeschickt? E-Mails zu verz\u00f6gern kann in vielen Situationen sinnvoll sein: Sei es, um sich eine \u00dcberpr\u00fcfungszeit\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/e-mails-verzoegert-senden\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vielhuber.de\\\/blog\\\/e-mails-verzoegert-senden\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/e-mails-verzoegert-senden\\\/#primaryimage\",\"url\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/image-50.png\",\"contentUrl\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/image-50.png\",\"width\":290,\"height\":113},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/blog\\\/e-mails-verzoegert-senden\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vielhuber.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"E-Mails verz\u00f6gert senden\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#website\",\"url\":\"https:\\\/\\\/vielhuber.de\\\/\",\"name\":\"Vielhuber David\",\"description\":\"Full-Stack Developer\",\"publisher\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#\\\/schema\\\/person\\\/64d4ff14713d413ea4d9b210d0c2c6ef\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vielhuber.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/vielhuber.de\\\/#\\\/schema\\\/person\\\/64d4ff14713d413ea4d9b210d0c2c6ef\",\"name\":\"David\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/about.jpg\",\"url\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/about.jpg\",\"contentUrl\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/about.jpg\",\"width\":700,\"height\":552,\"caption\":\"David\"},\"logo\":{\"@id\":\"https:\\\/\\\/vielhuber.de\\\/wp-content\\\/uploads\\\/about.jpg\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/vielhuber\"]}]}<\/script>","yoast_head_json":{"title":"E-Mails verz\u00f6gert senden &#060; Vielhuber David","description":"Uhrzeit gerade unpassend? E-Mail zu fr\u00fch abgeschickt? E-Mails zu verz\u00f6gern kann in vielen Situationen sinnvoll sein: Sei es, um sich eine \u00dcberpr\u00fcf...","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:\/\/vielhuber.de\/blog\/e-mails-verzoegert-senden\/","og_locale":"de_DE","og_type":"article","og_title":"E-Mails verz\u00f6gert senden &#060; Vielhuber David","og_description":"Uhrzeit gerade unpassend? E-Mail zu fr\u00fch abgeschickt? E-Mails zu verz\u00f6gern kann in vielen Situationen sinnvoll sein: Sei es, um sich eine \u00dcberpr\u00fcfungszeit","og_url":"https:\/\/vielhuber.de\/blog\/e-mails-verzoegert-senden\/","og_site_name":"Vielhuber David","article_published_time":"2024-12-29T08:04:31+00:00","article_modified_time":"2024-12-29T09:32:19+00:00","og_image":[{"width":290,"height":113,"url":"https:\/\/vielhuber.de\/wp-content\/uploads\/image-50.png","type":"image\/png"}],"author":"David","twitter_card":"summary_large_image","twitter_creator":"@vielhuber","twitter_site":"@vielhuber","twitter_misc":{"Verfasst von":"David","Gesch\u00e4tzte Lesezeit":"4\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/vielhuber.de\/blog\/e-mails-verzoegert-senden\/#article","isPartOf":{"@id":"https:\/\/vielhuber.de\/blog\/e-mails-verzoegert-senden\/"},"author":{"name":"David","@id":"https:\/\/vielhuber.de\/#\/schema\/person\/64d4ff14713d413ea4d9b210d0c2c6ef"},"headline":"E-Mails verz\u00f6gert senden","datePublished":"2024-12-29T08:04:31+00:00","dateModified":"2024-12-29T09:32:19+00:00","mainEntityOfPage":{"@id":"https:\/\/vielhuber.de\/blog\/e-mails-verzoegert-senden\/"},"wordCount":370,"publisher":{"@id":"https:\/\/vielhuber.de\/#\/schema\/person\/64d4ff14713d413ea4d9b210d0c2c6ef"},"image":{"@id":"https:\/\/vielhuber.de\/blog\/e-mails-verzoegert-senden\/#primaryimage"},"thumbnailUrl":"https:\/\/vielhuber.de\/wp-content\/uploads\/image-50.png","articleSection":["Blog"],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/vielhuber.de\/blog\/e-mails-verzoegert-senden\/","url":"https:\/\/vielhuber.de\/blog\/e-mails-verzoegert-senden\/","name":"E-Mails verz\u00f6gert senden &#060; Vielhuber David","isPartOf":{"@id":"https:\/\/vielhuber.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vielhuber.de\/blog\/e-mails-verzoegert-senden\/#primaryimage"},"image":{"@id":"https:\/\/vielhuber.de\/blog\/e-mails-verzoegert-senden\/#primaryimage"},"thumbnailUrl":"https:\/\/vielhuber.de\/wp-content\/uploads\/image-50.png","datePublished":"2024-12-29T08:04:31+00:00","dateModified":"2024-12-29T09:32:19+00:00","description":"Uhrzeit gerade unpassend? E-Mail zu fr\u00fch abgeschickt? E-Mails zu verz\u00f6gern kann in vielen Situationen sinnvoll sein: Sei es, um sich eine \u00dcberpr\u00fcfungszeit","breadcrumb":{"@id":"https:\/\/vielhuber.de\/blog\/e-mails-verzoegert-senden\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vielhuber.de\/blog\/e-mails-verzoegert-senden\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/vielhuber.de\/blog\/e-mails-verzoegert-senden\/#primaryimage","url":"https:\/\/vielhuber.de\/wp-content\/uploads\/image-50.png","contentUrl":"https:\/\/vielhuber.de\/wp-content\/uploads\/image-50.png","width":290,"height":113},{"@type":"BreadcrumbList","@id":"https:\/\/vielhuber.de\/blog\/e-mails-verzoegert-senden\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vielhuber.de\/"},{"@type":"ListItem","position":2,"name":"E-Mails verz\u00f6gert senden"}]},{"@type":"WebSite","@id":"https:\/\/vielhuber.de\/#website","url":"https:\/\/vielhuber.de\/","name":"Vielhuber David","description":"Full-Stack Developer","publisher":{"@id":"https:\/\/vielhuber.de\/#\/schema\/person\/64d4ff14713d413ea4d9b210d0c2c6ef"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vielhuber.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":["Person","Organization"],"@id":"https:\/\/vielhuber.de\/#\/schema\/person\/64d4ff14713d413ea4d9b210d0c2c6ef","name":"David","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/vielhuber.de\/wp-content\/uploads\/about.jpg","url":"https:\/\/vielhuber.de\/wp-content\/uploads\/about.jpg","contentUrl":"https:\/\/vielhuber.de\/wp-content\/uploads\/about.jpg","width":700,"height":552,"caption":"David"},"logo":{"@id":"https:\/\/vielhuber.de\/wp-content\/uploads\/about.jpg"},"sameAs":["https:\/\/x.com\/vielhuber"]}]}},"_links":{"self":[{"href":"https:\/\/vielhuber.de\/it\/wp-json\/wp\/v2\/posts\/4074","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vielhuber.de\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vielhuber.de\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vielhuber.de\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vielhuber.de\/it\/wp-json\/wp\/v2\/comments?post=4074"}],"version-history":[{"count":9,"href":"https:\/\/vielhuber.de\/it\/wp-json\/wp\/v2\/posts\/4074\/revisions"}],"predecessor-version":[{"id":4097,"href":"https:\/\/vielhuber.de\/it\/wp-json\/wp\/v2\/posts\/4074\/revisions\/4097"}],"wp:attachment":[{"href":"https:\/\/vielhuber.de\/it\/wp-json\/wp\/v2\/media?parent=4074"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vielhuber.de\/it\/wp-json\/wp\/v2\/categories?post=4074"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vielhuber.de\/it\/wp-json\/wp\/v2\/tags?post=4074"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}