Mailparse datum extract
Meerdere pogingen ondernomen, lukt niet.
Met dank en vriendelijke groeten,
Wim
$msgpart->extract_headers(MAILPARSE_EXTRACT_RETURN)
En wat heb je allemaal geprobeerd, en wat lukt er niet aan, en wat gebeurt er?
Verschillende voorbeeldjes van internet geplukt, maar krijg niet de datum te pakken
Misschien was je al op de goede weg?
Gewijzigd op 28/10/2023 22:33:25 door - Ariën -
UIt de string kan ik dan die keren dat de datum er in staat deze extracten, maar niet een erg veilige manier.
Zoek iets waar de datum in varialele of string staat
Maar debuggen met var_dump() en print_r() behoort ook tot de mogelijkheden.
Met dit scriptje krijg ik af en toe een datum in de var_dump.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
$file = "/path/to/rfc822/compliant/message";
$file = "De beste vliegopties.msg"; // FW Bosche Bollen
$file = "Bosche Bollen.msg";
$msg = new MimeMessage("file", $file);
// Process the message.
display_part_info("message", $msg);
// Little function to display things
function display_part_info($caption, &$msgpart)
{
$var = $msgpart->extract_headers(MAILPARSE_EXTRACT_RETURN);
$result = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $var); // Remove non ascii
// echo '<pre>';var_dump ($result); echo '</pre>';
echo "<br>";
$pos = strpos($result, 'Date: ');
//$ppp = substr ($result, $pos+6, 26); echo $ppp;
$ppp = substr ($result, $pos+6, 16); echo $ppp;
$originalDate = $ppp;
if (strtotime($originalDate)) {echo "-";}else{echo "Noooooooooo";}
$newDate = date("Ymd", strtotime($originalDate)); //Thu, 9 Nov 2017 (15)
// Wed, 11 Feb 2009 (16) >>>> 20090211
echo $newDate;
}
?>
$file = "/path/to/rfc822/compliant/message";
$file = "De beste vliegopties.msg"; // FW Bosche Bollen
$file = "Bosche Bollen.msg";
$msg = new MimeMessage("file", $file);
// Process the message.
display_part_info("message", $msg);
// Little function to display things
function display_part_info($caption, &$msgpart)
{
$var = $msgpart->extract_headers(MAILPARSE_EXTRACT_RETURN);
$result = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $var); // Remove non ascii
// echo '<pre>';var_dump ($result); echo '</pre>';
echo "<br>";
$pos = strpos($result, 'Date: ');
//$ppp = substr ($result, $pos+6, 26); echo $ppp;
$ppp = substr ($result, $pos+6, 16); echo $ppp;
$originalDate = $ppp;
if (strtotime($originalDate)) {echo "-";}else{echo "Noooooooooo";}
$newDate = date("Ymd", strtotime($originalDate)); //Thu, 9 Nov 2017 (15)
// Wed, 11 Feb 2009 (16) >>>> 20090211
echo $newDate;
}
?>
**knip**
Dit is een dump zonder datum, zelgde regex
string(0) ""
Gewijzigd op 29/10/2023 15:48:03 door - Ariën -
Plaats je source even tussen code-tags en haal je mailadressen even weg voordat je spam en ander digitaal gespuis krijgt ;-)
DE source zie ik netjes met de code-tags, wat bedoel je.
Wil je aub de dump verwijderen, kun je vast wel .. thanks.
Zou leuk zijn als je een oplossing kunt vinden, mijn hartelijke dank alvast
Je kan zelf je bericht aanpassen en censuren wat nodig is. De code tags zie ik overigens niet.
- Ariën - op 29/10/2023 14:17:43:
Je kan zelf je bericht aanpassen en censuren wat nodig is. De code tags zie ik overigens niet.
Als je op quote klikt zie je boven het inputvak alle icons (B I U enz.)
Waarom staan die (nog steeds) niet boven het vak onderaan dit topic?
Gewijzigd op 29/10/2023 15:26:39 door - SanThe -
Toevoeging op 29/10/2023 15:48:45:
@Wim Leeuw: Kan je een download van twee bestanden delen die wel en geen datum tonen? Ik heb blijkbaar niet de mogelijkheid om het te testen met mijn eigen mail, omdat ik geen *.msg formaat uit mijn Outlook 365 krijg. Graag een gecensureerd bestand uit privacy-overwegingen. De kan je uploaden, of beschikbaar stellen via je cloud.
Gewijzigd op 29/10/2023 15:56:10 door - Ariën -
Bestanden uploaden beetje moeilijk ivm privacy
Wat je met de code-tags bedoeld snap ik niet, mijn source, mijn php scriptje, zie ik netje in kleurtjes en tags, hier op het forum.
Waar ik geen datum krijg, staat deze er natuurlijk wel in, bij het openen ook te zien, maar moet waarschijnlijk op een andere plaats in de header (?) ge-extract worden
Die zijn te vinden bij de Veelgestelde Vragen. Als het bericht er als een klont spaghetti eruit ziet, zoals eerst, dan is het wel duidelijk dat het onleesbaar is voor een hulpgever op het forum. Met code-tags voorkom je dat.
PHP-scripts (en geen HTML) worden via een herkenning automatisch netjes gekleurd, maar van de gebruiker op het forum word wel verwacht dat die zorg ervoor draagt dat anders de code-tags gebruikt worden.
Maar als je de berichten kan delen in een download dan wordt het makkelijker uitzoeken. het is plain text, dus censureren lijkt me geen probleem met find&replace of een testmailtje die je zelf even aanmaakt. Helaas faciliteren we geen eigen uploadmogelijkheid hier, dus moet je zelf even een weg zoeken om het ter download aan te bieden.
Code (php)
1
2
3
2
3
Dit is een tekst in een code-blok.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. In elementum sagittis tortor at commodo. Sed pharetra tellus diam, avel rhoncus enim accumsan sit amet. Proin congue volutpat velit, vitae iaculis risus sollicitudin vitae.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. In elementum sagittis tortor at commodo. Sed pharetra tellus diam, avel rhoncus enim accumsan sit amet. Proin congue volutpat velit, vitae iaculis risus sollicitudin vitae.
Gewijzigd op 29/10/2023 16:17:15 door - Ariën -
Mijn scriptje is een wat knullige manier dat schijnbaar soms wel en soms niet werkt, ik heb iemand nodig die me kan vertellen hoe de maiparse WEL correct opereert.
En dat afhankelijk daarvan de regex wel of niet iets kan matchen?
Gezien het bewerken van de berichten tot resultaat leidt, vermoed ik dat de editor de tekenset aanpast naar iets dat door het script begrepen wordt.
Ik heb inmiddels ontdekt hoe je een mail als msg kan opslaan vanuit Outlook: Gewoon door deze te slepen vanuit Outlook naar een map in de Verkenner. Ik ga eens even spelen zo met de functies.
Ivo P op 29/10/2023 19:48:16:
Zou het kunnen dat de mails soms in Unicode en soms in ISO formaat binnenkomen?
En dat afhankelijk daarvan de regex wel of niet iets kan matchen?
Gezien het bewerken van de berichten tot resultaat leidt, vermoed ik dat de editor de tekenset aanpast naar iets dat door het script begrepen wordt.
En dat afhankelijk daarvan de regex wel of niet iets kan matchen?
Gezien het bewerken van de berichten tot resultaat leidt, vermoed ik dat de editor de tekenset aanpast naar iets dat door het script begrepen wordt.
Alle mail, de msg, zijn verzamelde door ze van Outlook te verslepen naar de verkenner. Of ze verschillend kunnen aankomen, weet ik niet. Ik kan za allemaal 'gewoon' weer openen (vanaf schijf) met Outlook of een andere reader, en zie op dat moment geen verschil
Content-Type: text/plain; charset="UTF-8"
en de tweede mail die probeer:
Content-Type: text/plain;
charset="iso-8859-1"
Maar daarnaast: er staat ook nog veel vaker "Date: " in de inhoud van de mail.
Maar kijk anders ook eens naar https://www.php.net/manual/en/function.imap-headerinfo.php en andere imap functies.
Er zijn vaak stabielere oplossingen van strpos() en substr() om teksten te doorzoeken.