Установить напоминание при отправке электронной почты с PHP / Swiftmailer - PullRequest
0 голосов
/ 20 марта 2019

В Outlook вы можете создать почту с последующей проверкой. Когда вы создаете такую ​​почту, вы можете установить время, когда должно быть напоминание для пользователя. Напоминание отображается как календарь, но оно не сохраняется в каландре.

Я использую PHP с Symfony для этого.

Я создал SwiftMailerService, в который включено все необходимое. Отправка почты отлично работает, но это напоминание просто не хочет работать, и я так старался.

Мой сервис выглядит так:

private $swift_mailer;
private $templating;

/**
 * MailService constructor.
 * @param $swift_mailer
 */
public function __construct(\Swift_Mailer $swift_mailer, \Twig_Environment $templating)
{
    $this->swift_mailer = $swift_mailer;
    $this->templating = $templating;
}

/**
 * @param $gruppe
 * @param $maintenancewindow
 * @throws \Twig_Error_Loader
 * @throws \Twig_Error_Runtime
 * @throws \Twig_Error_Syntax
 */
public function sendMailToGroup($gruppe, $maintenancewindow)
{
    $emails = ['thomas.heiz@pilatus-aircraft.com'];

    foreach ($gruppe as $grupp) {
        $emails[] = $grupp . '@pilatus-aircraft.com';
    }

    $message = (new \Swift_Message($maintenancewindow->getMail()->getMailsubject()))
        ->setFrom('donotreply@pilatus-aircraft.com')
        ->setTo($emails)
        ->setPriority(\Swift_Mime_SimpleMessage::PRIORITY_HIGH)
        ->setDate(new \DateTime())
        ->setBody(
            $this->templating->render(
                'send_mail/mail.html.twig', [
                    'maintenancewindow' => $maintenancewindow,
                ]
            ),
            'text/html'
        );

    $now = new \DateTime();
    $now->modify('+ 1 hour');

    $header = $message->getHeaders();
    $header->addTextHeader("X-Message-Flag", "Follow up");
    /*        $prio = $message->getHeaders();
            $prio->addTextHeader('X-Priority', '1');
            $impor = $message->getHeaders();
            $impor->addTextHeader('Importance', 'high');*/

    $header->addTextHeader("Reply-By", $now->format("r"));
    $header->addTextHeader("Follow-up-by", $now->format("r"));
    /*        $attach= $message->getHeaders();
            $attach->addTextHeader('X-MS-Has-Attach', 'yes');
            $mime= $message->getHeaders();
            $mime->addTextHeader('MIME-Version', '1.0');
            $scl= $message->getHeaders();
            $scl->addTextHeader('X-MS-Exchange-Organization-SCL', '-1');
            $lan= $message->getHeaders();
            $lan->addTextHeader('Accept-Language', 'de-DE, de-CH, en-US');

            $md= $message->getHeaders();
            $md->addTextHeader('X-MS-Exchange-Organization-MessageDirectionality', 'Originating');
            $as= $message->getHeaders();
            $as->addTextHeader('X-MS-Exchange-Organization-AuthSource', 'CHST3V032.pilatus-aircraft.com');
            $aa= $message->getHeaders();
            $aa->addTextHeader('X-MS-Exchange-Organization-AuthAs', 'Internal');
            $am= $message->getHeaders();
            $am->addTextHeader('X-MS-Exchange-Organization-AuthMechanism', '04');
            $ip= $message->getHeaders();
            $ip->addTextHeader('X-Originating-IP', '[172.17.3.239]');
            $as= $message->getHeaders();
            $as->addTextHeader('X-TM-AS-User-Approved-Sender', 'Yes');
            $bs= $message->getHeaders();
            $bs->addTextHeader('X-TM-AS-User-Blocked-Sender', 'No');
            $content= $message->getHeaders();
            $content->addTextHeader('Content-Type', 'text/html');
            //$content->addTextHeader('Content-Type', 'application/ms-tnef');
            //$content->addTextHeader('Content-Type', 'name="winmail.dat"');
            $p2= $message->getHeaders();
            $p2->addTextHeader('X-MS-Exchange-Organization-Recipient-P2-Type', 'Bcc');
            $representationtype= $message->getHeaders();
            $representationtype->addTextHeader('X-MS-Exchange-MessageSentRepresentingType', '1');
            $to= $message->getHeaders();
            $to->addTextHeader('To', 'Undisclosed recipients:;');
            $return= $message->getHeaders();
            $return->addTextHeader('Return-Path', 'ict-info@pilatus-aircraft.com');

            $autoresponse= $message->getHeaders();
            $autoresponse->addTextHeader('X-Auto-Response-Suppress', 'DR, OOF, AutoReply');
            $bccfoldering= $message->getHeaders();
            $bccfoldering->addTextHeader('X-MS-Exchange-Processed-By-BccFoldering', '15.01.1531.003');*/


    $this->swift_mailer->send($message);
}

Мой взгляд выглядит так:

{% block stylesheets %}
    <style>
        .bold {
            font-weight: bold;
        }
        .red {
            color: red;
        }
    </style>
{% endblock %}
{% block body %}

    <h3 class="bold">Sehr geehrte Pilatus Mitarbeitende</h3>
    <b>Bitte nehmen Sie untenstehende Informationen zur Kenntnis:</b><br><br>
    <table class="col-md-12">
        <tr>
            {% for title in maintenancewindow.maintenancewindowtranslations %}
                {% if title.language == 'de' %}
                    <td><b>Titel:</b></td>
                    <td><p> {{ title.title }}</p></td>
                {% endif %}
            {% endfor %}
        </tr>
        <tr>
            <td><b>Was:</b></td>
            <td><p class="red"> {{ maintenancewindow.what.textDe|default }}</p></td>
        </tr>
        <tr>
            <td><b>Was detail:</b></td>
            <td><p> {{ maintenancewindow.whatdetail.textDe|default }}</p></td>
        </tr>
        <tr>
            <td><b>Wieso:</b></td>
            <td><p> {{ maintenancewindow.why.textDe|default }}</p></td>
        </tr>
        <tr>
            <td><b>Von:</b></td>
            <td><p> {{ maintenancewindow.datefrom|date('d.m.Y H:i')|default }}</p></td>
        </tr>
        <tr>
            <td><b>Bis:</b></td>
            <td><p> {{ maintenancewindow.dateto|date('d.m.Y H:i')|default }}</p></td>
        </tr>
        <tr>
            <td><b>Verhalten:</b></td>
            <td><p> {{ maintenancewindow.behavior.textDe|default }}</p></td>
        </tr>
        <tr>
            <td><b>Information für die Fabrikation:</b></td>
            <td><p> {{ maintenancewindow.fabrication.textDe|default }}</p></td>
        </tr>
        <tr>
            <td><b>Nächste Information:</b></td>
            <td><p> {{ maintenancewindow.nextinfo.textDe|default }}</p></td>
        </tr>
        <tr>
            <td><b>Kontakt:</b></td>
            <td><p> {{ maintenancewindow.mail.contact }}</p></td>
        </tr>
    </table>
    <br>
    <p>Sie werden 15 Minuten vor dem Wartungsfenster nochmals darauf hingewiesen, sofern das Mail bis zu diesem Zeitpunkt nicht gelöscht wurde.</p>
    <p>Besten Dank für Ihr Verständnis.</p>
    <p>Ihre Informatik</p>

    <hr>

    <b>Please be aware about the following information:</b><br><br>
    <table class="col-md-10">
        <tr>
            {% for title in maintenancewindow.maintenancewindowtranslations %}
                {% if title.language == 'en' %}
                    <td><b>Title:</b></td>
                    <td><p> {{ title.title }}</p></td>
                {% endif %}
            {% endfor %}
        </tr>
        <tr>
            <td><b>What:</b></td>
            <td><p class="red"> {{ maintenancewindow.what.textEn|default }}</p></td>
        </tr>
        <tr>
            <td><b>What detail:</b></td>
            <td><p> {{ maintenancewindow.whatdetail.textEn|default }}</p></td>
        </tr>
        <tr>
            <td><b>Why:</b></td>
            <td><p> {{ maintenancewindow.why.textEn|default }}</p></td>
        </tr>
        <tr>
            <td><b>From:</b></td>
            <td><p> {{ maintenancewindow.datefrom|date('d.m.Y H:i')|default }}</p></td>
        </tr>
        <tr>
            <td><b>To:</b></td>
            <td><p> {{ maintenancewindow.dateto|date('d.m.Y H:i')|default }}</p></td>
        </tr>
        <tr>
            <td><b>Behavior:</b></td>
            <td><p> {{ maintenancewindow.behavior.textEn|default }}</p></td>
        </tr>
        <tr>
            <td><b>Information for the Fabrication:</b></td>
            <td><p> {{ maintenancewindow.fabrication.textEn|default }}</p></td>
        </tr>
        <tr>
            <td><b>Next Info:</b></td>
            <td><p> {{ maintenancewindow.nextinfo.textEn|default }}</p></td>
        </tr>
        <tr>
            <td><b>Contact:</b></td>
            <td><p> {{ maintenancewindow.mail.contact }}</p></td>
        </tr>
    </table>
    <br>
    <p>You'll be reminded 15 minutes before the maintenance window if the mail was not deleted prior to this time.</p>
    <p>Thanks for yout understanding</p>
    <p>Your ICT Team</p>

    <hr>

{% endblock %}

Как видите, я хотел исправить эту проблему с помощью Mailheader. Я пробовал каждую комбинацию из разных заголовков, но ничего не получалось.

В других примерах они сказали, что вы должны просто установить два флага, и после этого он должен работать. Я установил эти флаги (X-Message-Flag, Reply-By), но он все еще не работает.

Кроме того, я прочитал почти каждую статью, которую могу найти об этой проблеме, но не смог найти хорошего решения для нее.

Пожалуйста, помогите мне, я потратил столько времени на эту вещь, было бы стыдно, если бы она не сработала.

Спасибо за ответы

...