werkt
cf866ad7ee5933b38f0ac0314b59b8ba6bb7eb1c
4 files changed
EmlFastDecoder/FastHelper.csEmlFastDecoder/Program.csEmlFastDecoder/QuotedPrintableDecoder.csEmlFastDecoder/input/20240603-135130.eml
diff --git a/EmlFastDecoder/FastHelper.cs b/EmlFastDecoder/FastHelper.cs
index a6153b8..505e8de 100644
--- a/EmlFastDecoder/FastHelper.cs
+++ b/EmlFastDecoder/FastHelper.cs
@@ -1,108 +1,39 @@
-using System.Diagnostics;
-using System.Text;
+using System.Text;
using System.Text.RegularExpressions;
namespace EmlFastDecoder;
-
public class FastHelper
{
private static string[] lines = [];
- private static Regex IsValue = new(@"^\W");
-
- private static readonly Regex NV = new(@"([^\s;=]+)=([^;]*?)(?=\s*?(?:;|$))");
-
-
- public class EmailMessage
- {
- public Header Header { get; set; }
- public List<MimePart> Parts { get; set; } = [];
- public List<Attachment> Attachments { get; set; } = new List<Attachment>();
-
- // Optionele convenience properties voor veelgebruikte headers
- public string From => Header.List.FirstOrDefault(h => h.Name.ToLower() == "from").Value;
- public string To => Header.List.FirstOrDefault(h => h.Name.ToLower() == "to").Value;
- public string Subject => Header.List.FirstOrDefault(h => h.Name.ToLower() == "subject").Value;
- public DateTime? Date => DateTime.TryParse(Header.List.FirstOrDefault(h => h.Name.ToLower() == "date").Value, out DateTime date) ? date : (DateTime?)null;
- public string MessageId => Header.List.FirstOrDefault(h => h.Name.ToLower() == "message-id").Value;
- public string ContentType => Header.List.FirstOrDefault(h => h.Name.ToLower() == "content-type").Value;
- }
-
+ private static readonly Regex IsValue = new(@"^\W");
+ private static readonly Regex Boundary = new(@"\Wboundary=""([^""]*)""");
+ private static readonly Regex RegCharSet = new(@"\Wcharset=""([^""]*)""");
public class MimePart
- {
- public string ContentType { get; set; }
- public string Charset { get; set; }
- public string Content { get; set; }
- public string TransferEncoding { get; set; }
- }
-
- public class Attachment
- {
- public string FileName { get; set; }
- public string ContentType { get; set; }
- public string ContentId { get; set; }
- public byte[] Data { get; set; }
- }
-
- public class HeaderValue(string Name, string value)
- {
- public string Name { get; } = Name;
-
- private readonly string value = value;
- public string Value
- {
- get
- {
- var i = value.IndexOf(';');
- if (i > 0)
- return value[..i];
- return value;
- }
- }
-
- private List<(string Name, string Value)>? properties;
- public List<(string Name, string Value)> Properties
- {
- get
- {
- if (properties == null)
- {
- properties = [];
- if (value != null)
- {
- foreach (Match match in NV.Matches(value))
- {
- string name = match.Groups[1].Value;
- string value = match.Groups[2].Value.Trim(); // Trim voor nette waarden
- properties.Add((name, value));
- }
- }
- }
- return properties;
- }
- }
- }
-
- public class Header
{
public int Start { get; set; } = -1;
public int Stop { get; set; } = -1;
+ public int StartContent { get; set; } = -1;
- private List<HeaderValue>? list;
-
- public List<HeaderValue> List
+ private List<(string Name, string Value)>? headers = null;
+ public List<(string Name, string Value)> Headers
{
get
{
- if (list == null)
+ if (headers == null)
{
- list = [];
+ headers = [];
for (int i = Start; i < Stop; i++)
{
var line = lines[i];
+ if (line == string.Empty)
+ {
+ this.StartContent = i + 1;
+ return headers;
+ }
var s = line.IndexOf(':');
if (s > 0)
{
@@ -116,70 +47,143 @@ public class FastHelper
i++;
value.Append($"{lines[i]}");
}
- list.Add(new HeaderValue(name, value.ToString()));
+ headers.Add((name, value.ToString()));
}
}
}
- return list;
+ return headers;
}
}
- }
+ public string CharSet
+ {
+ get
+ {
+ var match = RegCharSet.Match(this["Content-Type"]);
+ if (match.Success)
+ return match.Groups[1].Value;
+ else
+ return "utf8";
+ }
+ }
- public static async Task<EmailMessage> DoitAsync(string path)
- {
- var sw = Stopwatch.StartNew();
+ public string TextContent
+ {
+ get
+ {
+ var charset = CharSet;
+ var encoding = this["Content-Transfer-Encoding"];
- lines = await File.ReadAllLinesAsync(path);
+ var val = string.Join(Environment.NewLine, lines.Skip(StartContent).Take(Stop - StartContent).ToArray());
+
+ if(encoding == "quoted-printable")
+ val = QuotedPrintableDecoder.Decode(val, charset);
- var emailMessage = new EmailMessage()
+ return val;
+ }
+ }
+
+ public byte[] BinContent
{
- Header = new Header()
+ get
{
- Start = 0
+ var val = string.Join("", lines.Skip(StartContent).Take(Stop - StartContent).ToArray());
+
+ var encoding = this["Content-Transfer-Encoding"];
+ if (encoding == "base64")
+ return Convert.FromBase64String(val);
+ else
+ return Encoding.UTF8.GetBytes(val);
}
- };
+ }
+
+ public string this[string name] => this.Headers.FirstOrDefault(x => x.Name == name).Value ?? string.Empty;
- for (int i = 0; i < lines.Length; i++)
+
+ private List<MimePart>? parts = null;
+ public List<MimePart> Parts
{
- var line = lines[i];
- if (emailMessage.Header.Stop < 0 && line == string.Empty)
+ get
{
- emailMessage.Header.Stop = i;
- break;
+ if (parts == null)
+ {
+ parts = [];
+ var contentType = this["Content-Type"];
+ var hasAttachment = this["Content-Disposition"].Contains("attachment");
+ if (contentType == string.Empty)
+ return parts;
+
+ if (hasAttachment)
+ {
+ var attachment = new MimePart()
+ {
+ Start = StartContent,
+ Stop = Stop,
+ StartContent = StartContent
+ };
+ parts.Add(attachment);
+ return parts;
+ }
+
+ if (!contentType.StartsWith("multipart/"))
+ return parts;
+
+ var match = Boundary.Match(contentType);
+ if (!match.Success)
+ return parts;
+ var boundaryId = match.Groups[1].Value;
+ var boundary = $"--{boundaryId}";
+ var count = 0;
+ MimePart? part = null;
+ for (int i = Start; i < Stop; i++)
+ {
+ var line = lines[i];
+ if (line.StartsWith(boundary))
+ {
+ if (part != null)
+ part.Stop = i - 1;
+ if (line.StartsWith($"{boundary}--"))
+ break;
+ part = new MimePart()
+ {
+ Start = i + 1
+ };
+ parts.Add(part);
+ count++;
+ //Debug.WriteLine($"{count} {i + 1} {line}");
+ }
+ }
+ }
+ return parts;
}
}
- Debug.WriteLine(sw.ElapsedMilliseconds + "mS");
-
- var contentTypeHeader = emailMessage.Header.List.FirstOrDefault(x => x.Name == "Content-Type");
- if (contentTypeHeader == null)
- return emailMessage;
- switch (contentTypeHeader.Value)
+ public async Task SaveAsync(string Path) => await SaveAsync(Path, DateTime.Now);
+ public async Task SaveAsync(string Path, DateTime dtm)
{
- default:
- break;
- case "multipart/mixed":
- var boundaryProperty = contentTypeHeader.Properties.FirstOrDefault(x => x.Name == "boundary");
- if (boundaryProperty.Value == null)
- return emailMessage;
- var boundary = boundaryProperty.Value.Trim('"');
- break;
+ await File.WriteAllLinesAsync(Path, lines.Skip(StartContent).Take(Stop - StartContent).ToArray());
+ File.SetAttributes(Path, FileAttributes.ReadOnly);
+ File.SetLastWriteTimeUtc(Path, dtm);
+ File.SetCreationTime(Path, dtm);
}
+ }
+
+ public static void Clear()
+ {
+ lines = [];
+ }
+
+ public static async Task<MimePart> ReadEmlAsync(string path)
+ {
+ Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
+
+ lines = await File.ReadAllLinesAsync(path);
- //foreach (var item in emailMessage.Header.List)
- //{
- // Debug.WriteLine($"{item.Name} = {item.Value}");
- // Debug.WriteLine($"=======================");
- // if (item.Properties.Count > 0)
- // {
- // foreach (var prop in item.Properties)
- // {
- // Debug.WriteLine($"{prop.Name} = {prop.Value}");
- // }
- // Debug.WriteLine($"=======================");
- // }
- //}
+ MimePart emailMessage = new()
+ {
+ Start = 0,
+ Stop = lines.Length
+ };
return emailMessage;
}
diff --git a/EmlFastDecoder/Program.cs b/EmlFastDecoder/Program.cs
index c1f1562..dac39ee 100644
--- a/EmlFastDecoder/Program.cs
+++ b/EmlFastDecoder/Program.cs
@@ -1 +1,53 @@
-var email = await EmlFastDecoder.FastHelper.DoitAsync(@"input\jun-jul 2024.eml");
+using EmlFastDecoder;
+using System.Diagnostics;
+
+static async Task ShowPartsAsync(int Depth, FastHelper.MimePart part)
+{
+ var contentType = part["Content-Type"];
+
+ for (var i = 0; i < Depth; i++)
+ Debug.Write('\t');
+ if (contentType != string.Empty)
+ Debug.WriteLine(contentType);
+
+ if (part["Content-Disposition"].Contains("attachment"))
+ {
+ if (contentType.Contains("message/rfc822"))
+ {
+ if (DateTime.TryParse(part.Parts[0]["Date"], out DateTime dtm))
+ {
+ //await part.SaveAsync($"{dtm:yyyyMMdd-HHmmss}.eml", dtm);
+ }
+ }
+ }
+
+
+ if(contentType.StartsWith("text/html"))
+ {
+ //await File.WriteAllTextAsync("a.html", part.TextContent, Encoding.GetEncoding( part.CharSet));
+ }
+
+ if (contentType.StartsWith("image/"))
+ {
+ //await File.WriteAllBytesAsync("a.png", part.BinContent);
+ }
+
+ Depth++;
+ foreach (var subpart in part.Parts)
+ {
+ await ShowPartsAsync(Depth, subpart);
+ }
+ Depth--;
+}
+
+var sw = Stopwatch.StartNew();
+
+//var email = await FastHelper.ReadEmlAsync(@"input\20240603-135130.eml");
+var email = await FastHelper.ReadEmlAsync(@"input\jun-jul 2024.eml");
+
+await ShowPartsAsync(0, email);
+
+Debug.WriteLine(sw.ElapsedMilliseconds + "mS");
+
+Console.Write("enter");
+Console.ReadLine();
diff --git a/EmlFastDecoder/QuotedPrintableDecoder.cs b/EmlFastDecoder/QuotedPrintableDecoder.cs
new file mode 100644
index 0000000..f4b7565
--- /dev/null
+++ b/EmlFastDecoder/QuotedPrintableDecoder.cs
@@ -0,0 +1,54 @@
+using System.Text;
+
+namespace EmlFastDecoder;
+
+public static class QuotedPrintableDecoder
+{
+ public static string Decode(string input, string charSet = "UTF-8")
+ {
+ if (string.IsNullOrEmpty(input))
+ return input;
+
+ Encoding encoding = Encoding.GetEncoding(charSet);
+ var byteList = new List<byte>();
+ int i = 0;
+
+ while (i < input.Length)
+ {
+ if (input[i] == '=' && i + 1 < input.Length)
+ {
+ if (input[i + 1] == '\r' || input[i + 1] == '\n')
+ {
+ i++;
+ while (i < input.Length && (input[i] == '\r' || input[i] == '\n'))
+ i++;
+ continue;
+ }
+ if (i + 2 < input.Length && IsHexDigit(input[i + 1]) && IsHexDigit(input[i + 2]))
+ {
+ string hex = input.Substring(i + 1, 2);
+ byte b = Convert.ToByte(hex, 16);
+ byteList.Add(b);
+ i += 3;
+ }
+ else
+ {
+ byteList.AddRange(encoding.GetBytes("="));
+ i++;
+ }
+ }
+ else
+ {
+ byteList.AddRange(encoding.GetBytes(input[i].ToString()));
+ i++;
+ }
+ }
+
+ return encoding.GetString(byteList.ToArray());
+ }
+
+ private static bool IsHexDigit(char c)
+ {
+ return (c >= '0' && c <= '9') || (c >= 'A' && c <= 'F') || (c >= 'a' && c <= 'f');
+ }
+}
diff --git a/EmlFastDecoder/input/20240603-135130.eml b/EmlFastDecoder/input/20240603-135130.eml
new file mode 100644
index 0000000..d237ce6
--- /dev/null
+++ b/EmlFastDecoder/input/20240603-135130.eml
@@ -0,0 +1,404 @@
+Received: from SJDEXC17.ict.lan (172.26.79.107) by SJDEXC14.ict.lan
+ (172.26.79.104) with Microsoft SMTP Server (version=TLS1_2,
+ cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4 via Mailbox
+ Transport; Mon, 3 Jun 2024 13:51:35 +0200
+Received: from SJDEXC17.ict.lan (172.26.79.107) by SJDEXC17.ict.lan
+ (172.26.79.107) with Microsoft SMTP Server (version=TLS1_2,
+ cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Mon, 3 Jun 2024
+ 13:51:35 +0200
+Received: from SJDEXC17.ict.lan ([172.26.79.107]) by SJDEXC17.ict.lan
+ ([172.26.79.107]) with mapi id 15.02.1544.004; Mon, 3 Jun 2024 13:51:30 +0200
+From: =?iso-8859-1?Q?Planningsco=F6rdinator_OK?=
+ <Planningscoordinator.OK@stjansdal.nl>
+To: "Zwanenburg, J.T.M. (Annet)" <A.Zwanenburg@stjansdal.nl>
+CC: "Thalen, I. (Illse)" <I.Thalen@stjansdal.nl>, "Viester - Treffers, K.D.
+ (Karin)" <KD.Viester@stjansdal.nl>, "Verkleij, V.M. (Vera)"
+ <VM.Verkleij@stjansdal.nl>
+Subject: RE: betreft vulling ECV
+Thread-Topic: betreft vulling ECV
+Thread-Index: Adq1kkD/D7WgxwiIRMKvPMxRlRjuxAAGbEUA
+Date: Mon, 3 Jun 2024 11:51:30 +0000
+Message-ID: <405819ab69534644bae0b81b0f3acdec@stjansdal.nl>
+References: <a21f663c0ff24e188035d2b63f8f869d@stjansdal.nl>
+In-Reply-To: <a21f663c0ff24e188035d2b63f8f869d@stjansdal.nl>
+Accept-Language: nl-NL, en-US
+Content-Language: nl-NL
+X-MS-Exchange-Organization-AuthAs: Internal
+X-MS-Exchange-Organization-AuthMechanism: 04
+X-MS-Exchange-Organization-AuthSource: SJDEXC17.ict.lan
+X-MS-Has-Attach: yes
+X-MS-Exchange-Organization-Network-Message-Id:
+ b26e236d-9926-4ec2-a732-08dc83c3822e
+X-MS-Exchange-Organization-SCL: -1
+X-MS-TNEF-Correlator:
+X-MS-Exchange-Organization-RecordReviewCfmType: 0
+x-zivver-messageid:
+ eyJNZXNzYWdlSW5kZXgiOm51bGwsIlppdnZlck1lc3NhZ2VJZCI6IjFiMjhlYjdlLWJhZDItNGY0OC1iYjU5LWY5NmYwYWQxZjFkMl9kcmFmdCIsIklzRm9vdGVyU2V0IjpmYWxzZX0=
+x-ms-exchange-organization-originalclientipaddress: 172.25.32.107
+x-ms-exchange-organization-originalserveripaddress: 172.26.79.107
+x-zivver-dlp: 6.1.17
+Content-Type: multipart/related;
+ boundary="_004_405819ab69534644bae0b81b0f3acdecstjansdalnl_";
+ type="multipart/alternative"
+MIME-Version: 1.0
+
+--_004_405819ab69534644bae0b81b0f3acdecstjansdalnl_
+Content-Type: multipart/alternative;
+ boundary="_000_405819ab69534644bae0b81b0f3acdecstjansdalnl_"
+
+--_000_405819ab69534644bae0b81b0f3acdecstjansdalnl_
+Content-Type: text/plain; charset="iso-8859-1"
+Content-Transfer-Encoding: quoted-printable
+
+Hi,
+
+Ik ga ervanuit dat het er woensdag dus maar 1 blijft. Overigens kan deze ca=
+rdioversie "gewoon" op de CCU plaatsvinden, omdat onze zieke sedationist wo=
+ensdag toch kan werken. CCU is hiervan op de hoogte. Willen jullie dot door=
+geven aan de cardioloog die de cardioversie gaat doen?
+
+
+Met vr. gr.,
+
+Stefanie Koenders
+Planningsco=F6rdinator OK
+
+[Beschrijving: cid:image001.png@01CEBD28.C537C0F0]
+
+| Tel: 0341 - 463916| Planningscoordinator.OK@stjansdal.nl<mailto:Plannings=
+coordinator.OK@stjansdal.nl> | www.stjansdal.nl<http://www.stjansdal.nl/> |
+| Ziekenhuis St Jansdal | Wethouder Jansenlaan 90 3844 DG Harderwijk | Post=
+bus 138 3840 AC Harderwijk |
+
+Van: Zwanenburg, J.T.M. (Annet) <A.Zwanenburg@stjansdal.nl>
+Verzonden: maandag 3 juni 2024 10:47
+Aan: Planningsco=F6rdinator OK <Planningscoordinator.OK@stjansdal.nl>
+CC: Thalen, I. (Illse) <I.Thalen@stjansdal.nl>
+Onderwerp: betreft vulling ECV
+
+Goedemorgen,
+
+Tot zover ik kan zien is voor 5 juni nog 1 plekje over in Harderwijk voor =
+een ECV die van 9 uur!
+
+12e juni is wel gevuld
+
+19 juni is 10.30 over
+
+26 juni is vol
+
+Ik ga op vakantie dus Illse zou jij de data t/m 26 juni in de gaten willen =
+houden svp?
+
+Alvast bedankt voor de moeite.
+
+Grt,
+Annet
+
+--_000_405819ab69534644bae0b81b0f3acdecstjansdalnl_
+Content-Type: text/html; charset="iso-8859-1"
+Content-Transfer-Encoding: quoted-printable
+
+<html>
+<head>
+<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Diso-8859-=
+1">
+<meta name=3D"Generator" content=3D"Microsoft Word 15 (filtered medium)">
+<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
+o\:* {behavior:url(#default#VML);}
+w\:* {behavior:url(#default#VML);}
+.shape {behavior:url(#default#VML);}
+</style><![endif]--><style><!--
+/* Font Definitions */
+@font-face
+ {font-family:"Cambria Math";
+ panose-1:2 4 5 3 5 4 6 3 2 4;}
+@font-face
+ {font-family:Calibri;
+ panose-1:2 15 5 2 2 2 4 3 2 4;}
+@font-face
+ {font-family:Verdana;
+ panose-1:2 11 6 4 3 5 4 4 2 4;}
+@font-face
+ {font-family:Tahoma;
+ panose-1:2 11 6 4 3 5 4 4 2 4;}
+/* Style Definitions */
+p.MsoNormal, li.MsoNormal, div.MsoNormal
+ {margin:0cm;
+ margin-bottom:.0001pt;
+ font-size:11.0pt;
+ font-family:"Calibri",sans-serif;
+ mso-fareast-language:EN-US;}
+a:link, span.MsoHyperlink
+ {mso-style-priority:99;
+ color:#0563C1;
+ text-decoration:underline;}
+a:visited, span.MsoHyperlinkFollowed
+ {mso-style-priority:99;
+ color:#954F72;
+ text-decoration:underline;}
+p.msonormal0, li.msonormal0, div.msonormal0
+ {mso-style-name:msonormal;
+ mso-margin-top-alt:auto;
+ margin-right:0cm;
+ mso-margin-bottom-alt:auto;
+ margin-left:0cm;
+ font-size:11.0pt;
+ font-family:"Calibri",sans-serif;}
+span.E-mailStijl18
+ {mso-style-type:personal;
+ font-family:"Verdana",sans-serif;
+ color:windowtext;}
+span.E-mailStijl19
+ {mso-style-type:personal;
+ font-family:"Verdana",sans-serif;
+ color:#1F497D;}
+.MsoChpDefault
+ {mso-style-type:export-only;
+ font-size:10.0pt;}
+@page WordSection1
+ {size:612.0pt 792.0pt;
+ margin:70.85pt 70.85pt 70.85pt 70.85pt;}
+div.WordSection1
+ {page:WordSection1;}
+--></style><!--[if gte mso 9]><xml>
+<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
+</xml><![endif]--><!--[if gte mso 9]><xml>
+<o:shapelayout v:ext=3D"edit">
+<o:idmap v:ext=3D"edit" data=3D"1" />
+</o:shapelayout></xml><![endif]-->
+</head>
+<body lang=3D"NL" link=3D"#0563C1" vlink=3D"#954F72">
+<div class=3D"WordSection1">
+<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ve=
+rdana",sans-serif;color:#1F497D">Hi,<o:p></o:p></span></p>
+<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ve=
+rdana",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
+<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ve=
+rdana",sans-serif;color:#1F497D">Ik ga ervanuit dat het er woensdag du=
+s maar 1 blijft. Overigens kan deze cardioversie “gewoon” op de=
+ CCU plaatsvinden, omdat onze zieke sedationist woensdag toch
+ kan werken. CCU is hiervan op de hoogte. Willen jullie dot doorgeven aan d=
+e cardioloog die de cardioversie gaat doen?<o:p></o:p></span></p>
+<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ve=
+rdana",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
+<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ve=
+rdana",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
+<p class=3D"MsoNormal"><span style=3D"color:#1F497D;mso-fareast-language:NL=
+">Met vr. gr.,<o:p></o:p></span></p>
+<p class=3D"MsoNormal"><span style=3D"color:#1F497D;mso-fareast-language:NL=
+"><o:p> </o:p></span></p>
+<p class=3D"MsoNormal"><span style=3D"color:#1F497D;mso-fareast-language:NL=
+">Stefanie Koenders<o:p></o:p></span></p>
+<p class=3D"MsoNormal"><span style=3D"color:#1F497D;mso-fareast-language:NL=
+">Planningsco=F6rdinator OK</span><span style=3D"font-size:10.0pt;font-fami=
+ly:"Tahoma",sans-serif;color:#1F497D;mso-fareast-language:NL"><o:=
+p></o:p></span></p>
+<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ta=
+homa",sans-serif;color:#1F497D;mso-fareast-language:NL"><o:p> </o=
+:p></span></p>
+<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ta=
+homa",sans-serif;color:#1F497D;mso-fareast-language:NL"><img width=3D"=
+218" height=3D"56" style=3D"width:2.2708in;height:.5833in" id=3D"Afbeelding=
+_x0020_1" src=3D"cid:image001.png@01DAB5BD.2237F570" alt=3D"Beschrijving: c=
+id:image001.png@01CEBD28.C537C0F0"><o:p></o:p></span></p>
+<p class=3D"MsoNormal"><span style=3D"color:#1F497D;mso-fareast-language:NL=
+"><o:p> </o:p></span></p>
+<p class=3D"MsoNormal"><span style=3D"color:#1F497D;mso-fareast-language:NL=
+">| </span>
+<span style=3D"color:#4F81BD;mso-fareast-language:NL">Tel: 0341 - 463916|&n=
+bsp;<u><a href=3D"mailto:Planningscoordinator.OK@stjansdal.nl"><span style=
+=3D"color:#4F81BD">Planningscoordinator.OK@stjansdal.nl</span></a></u> |
+<a href=3D"http://www.stjansdal.nl/"><span style=3D"color:#4F81BD">www.stja=
+nsdal.nl</span></a> |
+<o:p></o:p></span></p>
+<p class=3D"MsoNormal"><span style=3D"color:#4F81BD;mso-fareast-language:NL=
+">| Ziekenhuis St Jansdal | Wethouder Jansenlaan 90 3844 DG Harderwijk | Po=
+stbus 138 3840 AC Harderwijk |<o:p></o:p></span></p>
+<p class=3D"MsoNormal"><o:p> </o:p></p>
+<div>
+<div style=3D"border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm =
+0cm 0cm">
+<p class=3D"MsoNormal"><b><span style=3D"mso-fareast-language:NL">Van:</spa=
+n></b><span style=3D"mso-fareast-language:NL"> Zwanenburg, J.T.M. (Annet) &=
+lt;A.Zwanenburg@stjansdal.nl>
+<br>
+<b>Verzonden:</b> maandag 3 juni 2024 10:47<br>
+<b>Aan:</b> Planningsco=F6rdinator OK <Planningscoordinator.OK@stjansdal=
+.nl><br>
+<b>CC:</b> Thalen, I. (Illse) <I.Thalen@stjansdal.nl><br>
+<b>Onderwerp:</b> betreft vulling ECV <o:p></o:p></span></p>
+</div>
+</div>
+<p class=3D"MsoNormal"><o:p> </o:p></p>
+<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ve=
+rdana",sans-serif">Goedemorgen,<o:p></o:p></span></p>
+<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ve=
+rdana",sans-serif"><o:p> </o:p></span></p>
+<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ve=
+rdana",sans-serif">Tot zover ik kan zien is voor 5 juni nog 1 plekje o=
+ver in Harderwijk voor een ECV die van 9 uur!<o:p></o:p></span>=
+</p>
+<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ve=
+rdana",sans-serif"><o:p> </o:p></span></p>
+<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ve=
+rdana",sans-serif">12<sup>e</sup> juni is wel gevuld<o:p></o:p></span>=
+</p>
+<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ve=
+rdana",sans-serif"><o:p> </o:p></span></p>
+<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ve=
+rdana",sans-serif">19 juni is 10.30 over
+<o:p></o:p></span></p>
+<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ve=
+rdana",sans-serif"><o:p> </o:p></span></p>
+<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ve=
+rdana",sans-serif">26 juni is vol<o:p></o:p></span></p>
+<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ve=
+rdana",sans-serif"><o:p> </o:p></span></p>
+<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ve=
+rdana",sans-serif">Ik ga op vakantie dus Illse zou jij de data t/m 26 =
+juni in de gaten willen houden svp?<o:p></o:p></span></p>
+<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ve=
+rdana",sans-serif"><o:p> </o:p></span></p>
+<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ve=
+rdana",sans-serif">Alvast bedankt voor de moeite.<o:p></o:p></span></p=
+>
+<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ve=
+rdana",sans-serif"><o:p> </o:p></span></p>
+<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ve=
+rdana",sans-serif">Grt,<o:p></o:p></span></p>
+<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;font-family:"Ve=
+rdana",sans-serif">Annet
+<o:p></o:p></span></p>
+</div>
+</body>
+</html>
+
+--_000_405819ab69534644bae0b81b0f3acdecstjansdalnl_--
+
+--_004_405819ab69534644bae0b81b0f3acdecstjansdalnl_
+Content-Type: image/png; name="image001.png"
+Content-Description: image001.png
+Content-Disposition: inline; filename="image001.png"; size=6539;
+ creation-date="Mon, 03 Jun 2024 11:51:30 GMT";
+ modification-date="Thu, 20 Feb 2025 12:39:31 GMT"
+Content-ID: <image001.png@01DAB5BD.2237F570>
+Content-Transfer-Encoding: base64
+
+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
+
+--_004_405819ab69534644bae0b81b0f3acdecstjansdalnl_--