В 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), но он все еще не работает.
Кроме того, я прочитал почти каждую статью, которую могу найти об этой проблеме, но не смог найти хорошего решения для нее.
Пожалуйста, помогите мне, я потратил столько времени на эту вещь, было бы стыдно, если бы она не сработала.
Спасибо за ответы