From 5e51e9e9f3b136a52b4bd6362691923cac84affe Mon Sep 17 00:00:00 2001 From: Digital Data - Marlon Schreiber Date: Tue, 24 Jan 2023 16:32:36 +0100 Subject: [PATCH] MS --- App/CONFIG_APP/App.config | 26 +- App/CONFIG_APP/CONFIG_APP.vbproj | 2 +- .../My Project/Settings.Designer.vb | 22 +- App/CONFIG_APP/My Project/Settings.settings | 16 +- App/CONFIG_APP/frmMain.Designer.vb | 28 +- App/CONFIG_APP/frmMain.resx | 73 +- App/CONFIG_APP/frmMain.vb | 12 +- .../DigitalData.EMLProfiler.vbproj | 19 +- .../My Project/AssemblyInfo.vb | 4 +- App/DigitalData.EMLProfiler/app.config | 14 +- App/DigitalData.EMLProfiler/clsEmail.IMAP.vb | 8 +- App/DigitalData.EMLProfiler/clsEncryption.vb | 2 +- App/DigitalData.EMLProfiler/clsWorkEmail.vb | 19 +- App/DigitalData.EMLProfiler/clsWorker.vb | 12 + App/DigitalData.EMLProfiler/packages.config | 1 - App/SERV_EMAIL/packages.config | 2 +- App/packages/S22.Imap.3.6.0.0/.signature.p7s | Bin 9465 -> 0 bytes .../S22.Imap.3.6.0.0/S22.Imap.3.6.0.0.nupkg | Bin 204284 -> 0 bytes .../S22.Imap.3.6.0.0/lib/net35/S22.Imap.XML | 6498 --------------- .../S22.Imap.3.6.0.0/lib/net35/S22.Imap.dll | Bin 114688 -> 0 bytes .../S22.Imap.3.6.0.0/lib/net40/S22.Imap.XML | 7178 ----------------- .../S22.Imap.3.6.0.0/lib/net40/S22.Imap.dll | Bin 132096 -> 0 bytes 22 files changed, 142 insertions(+), 13794 deletions(-) delete mode 100644 App/packages/S22.Imap.3.6.0.0/.signature.p7s delete mode 100644 App/packages/S22.Imap.3.6.0.0/S22.Imap.3.6.0.0.nupkg delete mode 100644 App/packages/S22.Imap.3.6.0.0/lib/net35/S22.Imap.XML delete mode 100644 App/packages/S22.Imap.3.6.0.0/lib/net35/S22.Imap.dll delete mode 100644 App/packages/S22.Imap.3.6.0.0/lib/net40/S22.Imap.XML delete mode 100644 App/packages/S22.Imap.3.6.0.0/lib/net40/S22.Imap.dll diff --git a/App/CONFIG_APP/App.config b/App/CONFIG_APP/App.config index 34c16d8..b3b995b 100644 --- a/App/CONFIG_APP/App.config +++ b/App/CONFIG_APP/App.config @@ -1,18 +1,18 @@ - + -
+
-
+
- + - + @@ -20,13 +20,13 @@ Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM_TEST;Persist Security Info=True;User ID=sa;Password=dd - + - + - + False @@ -36,10 +36,10 @@ - + - + sysdba @@ -58,9 +58,9 @@ - - + + - \ No newline at end of file + diff --git a/App/CONFIG_APP/CONFIG_APP.vbproj b/App/CONFIG_APP/CONFIG_APP.vbproj index 1e140e5..f9ce108 100644 --- a/App/CONFIG_APP/CONFIG_APP.vbproj +++ b/App/CONFIG_APP/CONFIG_APP.vbproj @@ -11,7 +11,7 @@ CONFIG_APP 512 WindowsForms - v4.8 + v4.6.2 true diff --git a/App/CONFIG_APP/My Project/Settings.Designer.vb b/App/CONFIG_APP/My Project/Settings.Designer.vb index 5cbe48d..888b1d5 100644 --- a/App/CONFIG_APP/My Project/Settings.Designer.vb +++ b/App/CONFIG_APP/My Project/Settings.Designer.vb @@ -79,17 +79,6 @@ Namespace My End Set End Property - _ - Public ReadOnly Property MyDatasetConnString() As String - Get - Return CType(Me("MyDatasetConnString"),String) - End Get - End Property - _ @@ -179,6 +168,17 @@ Namespace My Return CType(Me("EML_LIMITATION_SENDER"),String) End Get End Property + + _ + Public ReadOnly Property MyDatasetConnString() As String + Get + Return CType(Me("MyDatasetConnString"),String) + End Get + End Property End Class End Namespace diff --git a/App/CONFIG_APP/My Project/Settings.settings b/App/CONFIG_APP/My Project/Settings.settings index 5ec5b1d..e99dce9 100644 --- a/App/CONFIG_APP/My Project/Settings.settings +++ b/App/CONFIG_APP/My Project/Settings.settings @@ -8,14 +8,6 @@ - - <?xml version="1.0" encoding="utf-16"?> -<SerializableConnectionString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> - <ConnectionString>Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM_TEST;Persist Security Info=True;User ID=sa;Password=dd</ConnectionString> - <ProviderName>System.Data.SqlClient</ProviderName> -</SerializableConnectionString> - Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM_TEST;Persist Security Info=True;User ID=sa;Password=dd - @@ -43,5 +35,13 @@ NONE + + <?xml version="1.0" encoding="utf-16"?> +<SerializableConnectionString xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <ConnectionString>Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM_TEST;Persist Security Info=True;User ID=sa;Password=dd</ConnectionString> + <ProviderName>System.Data.SqlClient</ProviderName> +</SerializableConnectionString> + Data Source=SDD-VMP04-SQL17\DD_DEVELOP01;Initial Catalog=DD_ECM_TEST;Persist Security Info=True;User ID=sa;Password=dd + \ No newline at end of file diff --git a/App/CONFIG_APP/frmMain.Designer.vb b/App/CONFIG_APP/frmMain.Designer.vb index e851ccf..f64bc3e 100644 --- a/App/CONFIG_APP/frmMain.Designer.vb +++ b/App/CONFIG_APP/frmMain.Designer.vb @@ -347,6 +347,8 @@ Partial Class frmMain Me.TBEMLP_CONFIGTableAdapter = New CONFIG_APP.MyDatasetTableAdapters.TBEMLP_CONFIGTableAdapter() Me.FolderBrowserDialog1 = New System.Windows.Forms.FolderBrowserDialog() Me.ContextMenuStrip1 = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.ContextMenuStrip2 = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.PasswortAnzeigenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() GUIDLabel = New System.Windows.Forms.Label() PROFILE_NAMELabel = New System.Windows.Forms.Label() POLL_TYPELabel = New System.Windows.Forms.Label() @@ -458,6 +460,7 @@ Partial Class frmMain Me.BindingNavigator6.SuspendLayout() Me.TabPage4.SuspendLayout() Me.GroupBox4.SuspendLayout() + Me.ContextMenuStrip2.SuspendLayout() Me.SuspendLayout() ' 'GUIDLabel @@ -3032,7 +3035,7 @@ Partial Class frmMain Me.ARCHIVE_FOLDERTextBox.DataBindings.Add(New System.Windows.Forms.Binding("Text", Me.TBDD_EMAIL_ACCOUNTBindingSource, "ARCHIVE_FOLDER", True)) Me.ARCHIVE_FOLDERTextBox.Location = New System.Drawing.Point(831, 164) Me.ARCHIVE_FOLDERTextBox.Name = "ARCHIVE_FOLDERTextBox" - Me.ARCHIVE_FOLDERTextBox.Size = New System.Drawing.Size(189, 21) + Me.ARCHIVE_FOLDERTextBox.Size = New System.Drawing.Size(227, 21) Me.ARCHIVE_FOLDERTextBox.TabIndex = 77 ' 'PORT_INTextBox @@ -3076,9 +3079,10 @@ Partial Class frmMain ' 'txtnewpasswort ' + Me.txtnewpasswort.ContextMenuStrip = Me.ContextMenuStrip2 Me.txtnewpasswort.Location = New System.Drawing.Point(738, 124) Me.txtnewpasswort.Name = "txtnewpasswort" - Me.txtnewpasswort.Size = New System.Drawing.Size(282, 21) + Me.txtnewpasswort.Size = New System.Drawing.Size(186, 21) Me.txtnewpasswort.TabIndex = 63 Me.txtnewpasswort.UseSystemPasswordChar = True ' @@ -3086,7 +3090,7 @@ Partial Class frmMain ' Me.Button4.Image = Global.CONFIG_APP.My.Resources.Resources.key_16xLG Me.Button4.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.Button4.Location = New System.Drawing.Point(1030, 122) + Me.Button4.Location = New System.Drawing.Point(930, 122) Me.Button4.Name = "Button4" Me.Button4.Size = New System.Drawing.Size(128, 23) Me.Button4.TabIndex = 62 @@ -3123,7 +3127,7 @@ Partial Class frmMain Me.EMAIL_SMTPTextBox.DataBindings.Add(New System.Windows.Forms.Binding("Text", Me.TBDD_EMAIL_ACCOUNTBindingSource, "EMAIL_SMTP", True)) Me.EMAIL_SMTPTextBox.Location = New System.Drawing.Point(701, 84) Me.EMAIL_SMTPTextBox.Name = "EMAIL_SMTPTextBox" - Me.EMAIL_SMTPTextBox.Size = New System.Drawing.Size(319, 21) + Me.EMAIL_SMTPTextBox.Size = New System.Drawing.Size(357, 21) Me.EMAIL_SMTPTextBox.TabIndex = 41 ' 'EMAIL_USERTextBox @@ -3136,6 +3140,7 @@ Partial Class frmMain ' 'EMAIL_PWTextBox ' + Me.EMAIL_PWTextBox.ContextMenuStrip = Me.ContextMenuStrip2 Me.EMAIL_PWTextBox.DataBindings.Add(New System.Windows.Forms.Binding("Text", Me.TBDD_EMAIL_ACCOUNTBindingSource, "EMAIL_PW", True)) Me.EMAIL_PWTextBox.Location = New System.Drawing.Point(701, 124) Me.EMAIL_PWTextBox.Name = "EMAIL_PWTextBox" @@ -3554,6 +3559,18 @@ Partial Class frmMain Me.ContextMenuStrip1.Name = "ContextMenuStrip1" Me.ContextMenuStrip1.Size = New System.Drawing.Size(61, 4) ' + 'ContextMenuStrip2 + ' + Me.ContextMenuStrip2.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.PasswortAnzeigenToolStripMenuItem}) + Me.ContextMenuStrip2.Name = "ContextMenuStrip2" + Me.ContextMenuStrip2.Size = New System.Drawing.Size(181, 48) + ' + 'PasswortAnzeigenToolStripMenuItem + ' + Me.PasswortAnzeigenToolStripMenuItem.Name = "PasswortAnzeigenToolStripMenuItem" + Me.PasswortAnzeigenToolStripMenuItem.Size = New System.Drawing.Size(180, 22) + Me.PasswortAnzeigenToolStripMenuItem.Text = "Passwort anzeigen" + ' 'frmMain ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -3638,6 +3655,7 @@ Partial Class frmMain Me.TabPage4.PerformLayout() Me.GroupBox4.ResumeLayout(False) Me.GroupBox4.PerformLayout() + Me.ContextMenuStrip2.ResumeLayout(False) Me.ResumeLayout(False) Me.PerformLayout() @@ -3908,4 +3926,6 @@ Partial Class frmMain Friend WithEvents ToolStripEmailAccountID As ToolStripTextBox Friend WithEvents AUTH_TYPEComboBox As ComboBox Friend WithEvents btnCheckIMAPObjects As Button + Friend WithEvents ContextMenuStrip2 As ContextMenuStrip + Friend WithEvents PasswortAnzeigenToolStripMenuItem As ToolStripMenuItem End Class diff --git a/App/CONFIG_APP/frmMain.resx b/App/CONFIG_APP/frmMain.resx index 52faa27..9226a10 100644 --- a/App/CONFIG_APP/frmMain.resx +++ b/App/CONFIG_APP/frmMain.resx @@ -324,7 +324,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAAUpJREFUOE9jGLzg7gL2/7fmcf6/Oofr/8UZvP+hwsSD60CNfx41/v/zsOH/yckC + wgAADsIBFShKgAAAAUpJREFUOE9jGLzg7gL2/7fmcf6/Oofr/8UZvP+hwsSD60CNfx41/v/zsOH/yckC pBtwfjov3ICDPSKkG3B8kiBQc93/Pw+q/u9oFydswKWZPP/PTuX7fxKo8Ui/0P993SJAzeX//94r+r++ Qeb/qhq5/0srFf/PL1X+P6tIFdPAU0B//nlYD9RUC8SV///cKwHivP9/72b+/3sn+f/f23H//92MAOKQ /5NyNDENONQrDHbu3/ulQI0FQI3ZQI2pQI0J///digZqDPv/70bQ/3/X/f53peliGrCzXeL/lmap/+vA @@ -336,7 +336,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAAW9JREFUOE+1kE0ow2Ecx3dV3krt4oJaOSCTvIRkMqSxyITIzCQHDouEdnFwIOVC + wgAADsIBFShKgAAAAW9JREFUOE+1kE0ow2Ecx3dV3krt4oJaOSCTvIRkMqSxyITIzCQHDouEdnFwIOVC DrhIDiQl5UTiNG/z2ppafy1S2gX/uDwfY6i1v7Hie3nqeb7fz+/7/FR/Ilwn0G0Exw4fV5GJlXlEZxXC rIet9bAQvB5Ymgn2sLYAvSZEux7RUQFzE4qQt4bCXAYjPaHvnDoCkLpsRGMB2JqCTGLIijDlwqQ9bEMV i9OIytR3EMNWcJ/BWH8A6j8/bOGFxwXNxYEvGbMQ9XnQ1/K78KfY3/VXzkMY0qFGG2H4RoLGQshJQNbG @@ -348,7 +348,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77 + wgAADsIBFShKgAAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77 wf/ghmu4DciY8vT/wn0fsCqK73n4f+n+///9qy/gNiCh58n/aVveYyiKaL8P1pw56/9/r9ITuA2I7Hr0 v3f1BxRFoa33wJpb1wFt7/z73yX/AG4DApsf/q+b/w6uKLjl7v9Fe///7wBqzpjz879d3c//9hnbcRvg UXX/f/60NyiK7Ipv/0+f8/u/f9e3/zqF7/5bJKzHbYB96d3/2ZNfYyjSTzn/36ToxX+VrE//jSOX4TbA @@ -359,7 +359,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w + wgAADsIBFShKgAAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w 5sxZ//97lZ4gzYDQ1ntgza3rgLZ3/v3vkn+AeAOCW+7+X7T3//8OoOaMOT//29X9/G+fsZ00F9gV3/6f Puf3f/+ub/91Ct/9t0hYT3oY6Kec/29S9OK/Stan/8aRy0g3AAQMkk78l037+l83eB55BoCAfurl/xq+ 08g3AARUPCZQZsBgBQwMANAUYJgEulBVAAAAAElFTkSuQmCC @@ -368,7 +368,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78 + wgAADsIBFShKgAAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78 n73v1//OrX//u5VeJt2QyK5H/6ds+/W/ZOnf/wnT//63yT1LmiGBzQ//t659D9ZsXPLlv3T0tf/GkcuI N8Sj6v7/krnv4JoVXXpIc4F96d3/gS3PyNMMAhZ5d/7bFFwhTzMIGGbdJl8zCOik3SBf81AEDAwAoH5f oAc0QjgAAAAASUVORK5CYII= @@ -377,7 +377,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+// + wgAADsIBFShKgAAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+// h7c/wG1AxpSn/+ft//0/oesOhiKQ3MJ9H/4HN1zDbUBCz5P/s/f9+t+59e9/t9LLKApBctO2vP/vX30B twGRXY/+T9n263/J0r//E6b//W+TexauGCTXu/rDf6/SE7gNCGx++L917XuwZuOSL/+lo6/9N45cBtYA kqub/+6/S/4B3AZ4VN3/XzL3HVyzoksPXDFILn/am//2GdtxG2Bfevd/YMszDM0gAJLLnvz6v0XCetwG @@ -394,7 +394,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAAUpJREFUOE9jGLzg7gL2/7fmcf6/Oofr/8UZvP+hwsSD60CNfx41/v/zsOH/yckC + wgAADsIBFShKgAAAAUpJREFUOE9jGLzg7gL2/7fmcf6/Oofr/8UZvP+hwsSD60CNfx41/v/zsOH/yckC pBtwfjov3ICDPSKkG3B8kiBQc93/Pw+q/u9oFydswKWZPP/PTuX7fxKo8Ui/0P993SJAzeX//94r+r++ Qeb/qhq5/0srFf/PL1X+P6tIFdPAU0B//nlYD9RUC8SV///cKwHivP9/72b+/3sn+f/f23H//92MAOKQ /5NyNDENONQrDHbu3/ulQI0FQI3ZQI2pQI0J///digZqDPv/70bQ/3/X/f53peliGrCzXeL/lmap/+vA @@ -406,7 +406,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAAW9JREFUOE+1kE0ow2Ecx3dV3krt4oJaOSCTvIRkMqSxyITIzCQHDouEdnFwIOVC + wgAADsIBFShKgAAAAW9JREFUOE+1kE0ow2Ecx3dV3krt4oJaOSCTvIRkMqSxyITIzCQHDouEdnFwIOVC DrhIDiQl5UTiNG/z2ppafy1S2gX/uDwfY6i1v7Hie3nqeb7fz+/7/FR/Ilwn0G0Exw4fV5GJlXlEZxXC rIet9bAQvB5Ymgn2sLYAvSZEux7RUQFzE4qQt4bCXAYjPaHvnDoCkLpsRGMB2JqCTGLIijDlwqQ9bEMV i9OIytR3EMNWcJ/BWH8A6j8/bOGFxwXNxYEvGbMQ9XnQ1/K78KfY3/VXzkMY0qFGG2H4RoLGQshJQNbG @@ -418,7 +418,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77 + wgAADsIBFShKgAAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77 wf/ghmu4DciY8vT/wn0fsCqK73n4f+n+///9qy/gNiCh58n/aVveYyiKaL8P1pw56/9/r9ITuA2I7Hr0 v3f1BxRFoa33wJpb1wFt7/z73yX/AG4DApsf/q+b/w6uKLjl7v9Fe///7wBqzpjz879d3c//9hnbcRvg UXX/f/60NyiK7Ipv/0+f8/u/f9e3/zqF7/5bJKzHbYB96d3/2ZNfYyjSTzn/36ToxX+VrE//jSOX4TbA @@ -429,7 +429,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w + wgAADsIBFShKgAAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w 5sxZ//97lZ4gzYDQ1ntgza3rgLZ3/v3vkn+AeAOCW+7+X7T3//8OoOaMOT//29X9/G+fsZ00F9gV3/6f Puf3f/+ub/91Ct/9t0hYT3oY6Kec/29S9OK/Stan/8aRy0g3AAQMkk78l037+l83eB55BoCAfurl/xq+ 08g3AARUPCZQZsBgBQwMANAUYJgEulBVAAAAAElFTkSuQmCC @@ -438,7 +438,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78 + wgAADsIBFShKgAAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78 n73v1//OrX//u5VeJt2QyK5H/6ds+/W/ZOnf/wnT//63yT1LmiGBzQ//t659D9ZsXPLlv3T0tf/GkcuI N8Sj6v7/krnv4JoVXXpIc4F96d3/gS3PyNMMAhZ5d/7bFFwhTzMIGGbdJl8zCOik3SBf81AEDAwAoH5f oAc0QjgAAAAASUVORK5CYII= @@ -447,7 +447,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+// + wgAADsIBFShKgAAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+// h7c/wG1AxpSn/+ft//0/oesOhiKQ3MJ9H/4HN1zDbUBCz5P/s/f9+t+59e9/t9LLKApBctO2vP/vX30B twGRXY/+T9n263/J0r//E6b//W+TexauGCTXu/rDf6/SE7gNCGx++L917XuwZuOSL/+lo6/9N45cBtYA kqub/+6/S/4B3AZ4VN3/XzL3HVyzoksPXDFILn/am//2GdtxG2Bfevd/YMszDM0gAJLLnvz6v0XCetwG @@ -464,7 +464,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAAUpJREFUOE9jGLzg7gL2/7fmcf6/Oofr/8UZvP+hwsSD60CNfx41/v/zsOH/yckC + wgAADsIBFShKgAAAAUpJREFUOE9jGLzg7gL2/7fmcf6/Oofr/8UZvP+hwsSD60CNfx41/v/zsOH/yckC pBtwfjov3ICDPSKkG3B8kiBQc93/Pw+q/u9oFydswKWZPP/PTuX7fxKo8Ui/0P993SJAzeX//94r+r++ Qeb/qhq5/0srFf/PL1X+P6tIFdPAU0B//nlYD9RUC8SV///cKwHivP9/72b+/3sn+f/f23H//92MAOKQ /5NyNDENONQrDHbu3/ulQI0FQI3ZQI2pQI0J///digZqDPv/70bQ/3/X/f53peliGrCzXeL/lmap/+vA @@ -476,7 +476,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAAW9JREFUOE+1kE0ow2Ecx3dV3krt4oJaOSCTvIRkMqSxyITIzCQHDouEdnFwIOVC + wgAADsIBFShKgAAAAW9JREFUOE+1kE0ow2Ecx3dV3krt4oJaOSCTvIRkMqSxyITIzCQHDouEdnFwIOVC DrhIDiQl5UTiNG/z2ppafy1S2gX/uDwfY6i1v7Hie3nqeb7fz+/7/FR/Ilwn0G0Exw4fV5GJlXlEZxXC rIet9bAQvB5Ymgn2sLYAvSZEux7RUQFzE4qQt4bCXAYjPaHvnDoCkLpsRGMB2JqCTGLIijDlwqQ9bEMV i9OIytR3EMNWcJ/BWH8A6j8/bOGFxwXNxYEvGbMQ9XnQ1/K78KfY3/VXzkMY0qFGG2H4RoLGQshJQNbG @@ -488,7 +488,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77 + wgAADsIBFShKgAAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77 wf/ghmu4DciY8vT/wn0fsCqK73n4f+n+///9qy/gNiCh58n/aVveYyiKaL8P1pw56/9/r9ITuA2I7Hr0 v3f1BxRFoa33wJpb1wFt7/z73yX/AG4DApsf/q+b/w6uKLjl7v9Fe///7wBqzpjz879d3c//9hnbcRvg UXX/f/60NyiK7Ipv/0+f8/u/f9e3/zqF7/5bJKzHbYB96d3/2ZNfYyjSTzn/36ToxX+VrE//jSOX4TbA @@ -499,7 +499,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w + wgAADsIBFShKgAAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w 5sxZ//97lZ4gzYDQ1ntgza3rgLZ3/v3vkn+AeAOCW+7+X7T3//8OoOaMOT//29X9/G+fsZ00F9gV3/6f Puf3f/+ub/91Ct/9t0hYT3oY6Kec/29S9OK/Stan/8aRy0g3AAQMkk78l037+l83eB55BoCAfurl/xq+ 08g3AARUPCZQZsBgBQwMANAUYJgEulBVAAAAAElFTkSuQmCC @@ -508,7 +508,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78 + wgAADsIBFShKgAAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78 n73v1//OrX//u5VeJt2QyK5H/6ds+/W/ZOnf/wnT//63yT1LmiGBzQ//t659D9ZsXPLlv3T0tf/GkcuI N8Sj6v7/krnv4JoVXXpIc4F96d3/gS3PyNMMAhZ5d/7bFFwhTzMIGGbdJl8zCOik3SBf81AEDAwAoH5f oAc0QjgAAAAASUVORK5CYII= @@ -517,7 +517,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+// + wgAADsIBFShKgAAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+// h7c/wG1AxpSn/+ft//0/oesOhiKQ3MJ9H/4HN1zDbUBCz5P/s/f9+t+59e9/t9LLKApBctO2vP/vX30B twGRXY/+T9n263/J0r//E6b//W+TexauGCTXu/rDf6/SE7gNCGx++L917XuwZuOSL/+lo6/9N45cBtYA kqub/+6/S/4B3AZ4VN3/XzL3HVyzoksPXDFILn/am//2GdtxG2Bfevd/YMszDM0gAJLLnvz6v0XCetwG @@ -534,7 +534,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAAUpJREFUOE9jGLzg7gL2/7fmcf6/Oofr/8UZvP+hwsSD60CNfx41/v/zsOH/yckC + wgAADsIBFShKgAAAAUpJREFUOE9jGLzg7gL2/7fmcf6/Oofr/8UZvP+hwsSD60CNfx41/v/zsOH/yckC pBtwfjov3ICDPSKkG3B8kiBQc93/Pw+q/u9oFydswKWZPP/PTuX7fxKo8Ui/0P993SJAzeX//94r+r++ Qeb/qhq5/0srFf/PL1X+P6tIFdPAU0B//nlYD9RUC8SV///cKwHivP9/72b+/3sn+f/f23H//92MAOKQ /5NyNDENONQrDHbu3/ulQI0FQI3ZQI2pQI0J///digZqDPv/70bQ/3/X/f53peliGrCzXeL/lmap/+vA @@ -546,7 +546,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAAW9JREFUOE+1kE0ow2Ecx3dV3krt4oJaOSCTvIRkMqSxyITIzCQHDouEdnFwIOVC + wgAADsIBFShKgAAAAW9JREFUOE+1kE0ow2Ecx3dV3krt4oJaOSCTvIRkMqSxyITIzCQHDouEdnFwIOVC DrhIDiQl5UTiNG/z2ppafy1S2gX/uDwfY6i1v7Hie3nqeb7fz+/7/FR/Ilwn0G0Exw4fV5GJlXlEZxXC rIet9bAQvB5Ymgn2sLYAvSZEux7RUQFzE4qQt4bCXAYjPaHvnDoCkLpsRGMB2JqCTGLIijDlwqQ9bEMV i9OIytR3EMNWcJ/BWH8A6j8/bOGFxwXNxYEvGbMQ9XnQ1/K78KfY3/VXzkMY0qFGG2H4RoLGQshJQNbG @@ -558,7 +558,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77 + wgAADsIBFShKgAAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77 wf/ghmu4DciY8vT/wn0fsCqK73n4f+n+///9qy/gNiCh58n/aVveYyiKaL8P1pw56/9/r9ITuA2I7Hr0 v3f1BxRFoa33wJpb1wFt7/z73yX/AG4DApsf/q+b/w6uKLjl7v9Fe///7wBqzpjz879d3c//9hnbcRvg UXX/f/60NyiK7Ipv/0+f8/u/f9e3/zqF7/5bJKzHbYB96d3/2ZNfYyjSTzn/36ToxX+VrE//jSOX4TbA @@ -569,7 +569,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w + wgAADsIBFShKgAAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w 5sxZ//97lZ4gzYDQ1ntgza3rgLZ3/v3vkn+AeAOCW+7+X7T3//8OoOaMOT//29X9/G+fsZ00F9gV3/6f Puf3f/+ub/91Ct/9t0hYT3oY6Kec/29S9OK/Stan/8aRy0g3AAQMkk78l037+l83eB55BoCAfurl/xq+ 08g3AARUPCZQZsBgBQwMANAUYJgEulBVAAAAAElFTkSuQmCC @@ -578,7 +578,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78 + wgAADsIBFShKgAAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78 n73v1//OrX//u5VeJt2QyK5H/6ds+/W/ZOnf/wnT//63yT1LmiGBzQ//t659D9ZsXPLlv3T0tf/GkcuI N8Sj6v7/krnv4JoVXXpIc4F96d3/gS3PyNMMAhZ5d/7bFFwhTzMIGGbdJl8zCOik3SBf81AEDAwAoH5f oAc0QjgAAAAASUVORK5CYII= @@ -587,7 +587,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+// + wgAADsIBFShKgAAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+// h7c/wG1AxpSn/+ft//0/oesOhiKQ3MJ9H/4HN1zDbUBCz5P/s/f9+t+59e9/t9LLKApBctO2vP/vX30B twGRXY/+T9n263/J0r//E6b//W+TexauGCTXu/rDf6/SE7gNCGx++L917XuwZuOSL/+lo6/9N45cBtYA kqub/+6/S/4B3AZ4VN3/XzL3HVyzoksPXDFILn/am//2GdtxG2Bfevd/YMszDM0gAJLLnvz6v0XCetwG @@ -607,7 +607,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77 + wgAADsIBFShKgAAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77 wf/ghmu4DciY8vT/wn0fsCqK73n4f+n+///9qy/gNiCh58n/aVveYyiKaL8P1pw56/9/r9ITuA2I7Hr0 v3f1BxRFoa33wJpb1wFt7/z73yX/AG4DApsf/q+b/w6uKLjl7v9Fe///7wBqzpjz879d3c//9hnbcRvg UXX/f/60NyiK7Ipv/0+f8/u/f9e3/zqF7/5bJKzHbYB96d3/2ZNfYyjSTzn/36ToxX+VrE//jSOX4TbA @@ -618,7 +618,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w + wgAADsIBFShKgAAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w 5sxZ//97lZ4gzYDQ1ntgza3rgLZ3/v3vkn+AeAOCW+7+X7T3//8OoOaMOT//29X9/G+fsZ00F9gV3/6f Puf3f/+ub/91Ct/9t0hYT3oY6Kec/29S9OK/Stan/8aRy0g3AAQMkk78l037+l83eB55BoCAfurl/xq+ 08g3AARUPCZQZsBgBQwMANAUYJgEulBVAAAAAElFTkSuQmCC @@ -627,7 +627,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78 + wgAADsIBFShKgAAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78 n73v1//OrX//u5VeJt2QyK5H/6ds+/W/ZOnf/wnT//63yT1LmiGBzQ//t659D9ZsXPLlv3T0tf/GkcuI N8Sj6v7/krnv4JoVXXpIc4F96d3/gS3PyNMMAhZ5d/7bFFwhTzMIGGbdJl8zCOik3SBf81AEDAwAoH5f oAc0QjgAAAAASUVORK5CYII= @@ -636,7 +636,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+// + wgAADsIBFShKgAAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+// h7c/wG1AxpSn/+ft//0/oesOhiKQ3MJ9H/4HN1zDbUBCz5P/s/f9+t+59e9/t9LLKApBctO2vP/vX30B twGRXY/+T9n263/J0r//E6b//W+TexauGCTXu/rDf6/SE7gNCGx++L917XuwZuOSL/+lo6/9N45cBtYA kqub/+6/S/4B3AZ4VN3/XzL3HVyzoksPXDFILn/am//2GdtxG2Bfevd/YMszDM0gAJLLnvz6v0XCetwG @@ -644,13 +644,16 @@ 8l/FYwIYQ4UGBWBgAAC+0b+zuQxOnAAAAABJRU5ErkJggg== + + 1162, 173 + 851, 173 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAAUpJREFUOE9jGLzg7gL2/7fmcf6/Oofr/8UZvP+hwsSD60CNfx41/v/zsOH/yckC + wgAADsIBFShKgAAAAUpJREFUOE9jGLzg7gL2/7fmcf6/Oofr/8UZvP+hwsSD60CNfx41/v/zsOH/yckC pBtwfjov3ICDPSKkG3B8kiBQc93/Pw+q/u9oFydswKWZPP/PTuX7fxKo8Ui/0P993SJAzeX//94r+r++ Qeb/qhq5/0srFf/PL1X+P6tIFdPAU0B//nlYD9RUC8SV///cKwHivP9/72b+/3sn+f/f23H//92MAOKQ /5NyNDENONQrDHbu3/ulQI0FQI3ZQI2pQI0J///digZqDPv/70bQ/3/X/f53peliGrCzXeL/lmap/+vA @@ -662,7 +665,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAAW9JREFUOE+1kE0ow2Ecx3dV3krt4oJaOSCTvIRkMqSxyITIzCQHDouEdnFwIOVC + wgAADsIBFShKgAAAAW9JREFUOE+1kE0ow2Ecx3dV3krt4oJaOSCTvIRkMqSxyITIzCQHDouEdnFwIOVC DrhIDiQl5UTiNG/z2ppafy1S2gX/uDwfY6i1v7Hie3nqeb7fz+/7/FR/Ilwn0G0Exw4fV5GJlXlEZxXC rIet9bAQvB5Ymgn2sLYAvSZEux7RUQFzE4qQt4bCXAYjPaHvnDoCkLpsRGMB2JqCTGLIijDlwqQ9bEMV i9OIytR3EMNWcJ/BWH8A6j8/bOGFxwXNxYEvGbMQ9XnQ1/K78KfY3/VXzkMY0qFGG2H4RoLGQshJQNbG @@ -674,7 +677,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77 + wgAADsIBFShKgAAAASpJREFUOE9jGDygcNbz/00Lnv/PnPj4P1QIA4S3P8Apx5A789n/VUfe/8elKL77 wf/ghmu4DciY8vT/wn0fsCqK73n4f+n+///9qy/gNiCh58n/aVveYyiKaL8P1pw56/9/r9ITuA2I7Hr0 v3f1BxRFoa33wJpb1wFt7/z73yX/AG4DApsf/q+b/w6uKLjl7v9Fe///7wBqzpjz879d3c//9hnbcRvg UXX/f/60NyiK7Ipv/0+f8/u/f9e3/zqF7/5bJKzHbYB96d3/2ZNfYyjSTzn/36ToxX+VrE//jSOX4TbA @@ -685,7 +688,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w + wgAADsIBFShKgAAAALZJREFUOE9jGDogvP3BfyiTdBDf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w 5sxZ//97lZ4gzYDQ1ntgza3rgLZ3/v3vkn+AeAOCW+7+X7T3//8OoOaMOT//29X9/G+fsZ00F9gV3/6f Puf3f/+ub/91Ct/9t0hYT3oY6Kec/29S9OK/Stan/8aRy0g3AAQMkk78l037+l83eB55BoCAfurl/xq+ 08g3AARUPCZQZsBgBQwMANAUYJgEulBVAAAAAElFTkSuQmCC @@ -694,7 +697,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78 + wgAADsIBFShKgAAAAKNJREFUOE9jGHygcNbz/1AmeSB35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78 n73v1//OrX//u5VeJt2QyK5H/6ds+/W/ZOnf/wnT//63yT1LmiGBzQ//t659D9ZsXPLlv3T0tf/GkcuI N8Sj6v7/krnv4JoVXXpIc4F96d3/gS3PyNMMAhZ5d/7bFFwhTzMIGGbdJl8zCOik3SBf81AEDAwAoH5f oAc0QjgAAAAASUVORK5CYII= @@ -703,7 +706,7 @@ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - wwAADsMBx2+oZAAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+// + wgAADsIBFShKgAAAASxJREFUOE9jGFygcNbz/1AmBgDJNS14/j9z4mOcahhyZz77n9B9D6sCkNyqI+// h7c/wG1AxpSn/+ft//0/oesOhiKQ3MJ9H/4HN1zDbUBCz5P/s/f9+t+59e9/t9LLKApBctO2vP/vX30B twGRXY/+T9n263/J0r//E6b//W+TexauGCTXu/rDf6/SE7gNCGx++L917XuwZuOSL/+lo6/9N45cBtYA kqub/+6/S/4B3AZ4VN3/XzL3HVyzoksPXDFILn/am//2GdtxG2Bfevd/YMszDM0gAJLLnvz6v0XCetwG @@ -745,7 +748,7 @@ 1005, 173 - 253 + 235 diff --git a/App/CONFIG_APP/frmMain.vb b/App/CONFIG_APP/frmMain.vb index 1cdca98..683a0d5 100644 --- a/App/CONFIG_APP/frmMain.vb +++ b/App/CONFIG_APP/frmMain.vb @@ -902,8 +902,6 @@ Public Class frmMain - - Private Sub COMMENTTextBox_Leave(sender As Object, e As EventArgs) Handles COMMENTTextBox.Leave Try Dim separatorIndex = COMMENTTextBox.Text.IndexOf(".") @@ -944,4 +942,14 @@ Public Class frmMain End Try End Sub + + Private Sub PasswortAnzeigenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles PasswortAnzeigenToolStripMenuItem.Click + Try + Dim oPW = EMAIL_PWTextBox.Text + Dim pwdecrypted = _Encryption.DecryptData(oPW) + MsgBox(pwdecrypted, MsgBoxStyle.Information, "Current PW") + Catch ex As Exception + MsgBox(ex.Message, MsgBoxStyle.Critical, "") + End Try + End Sub End Class diff --git a/App/DigitalData.EMLProfiler/DigitalData.EMLProfiler.vbproj b/App/DigitalData.EMLProfiler/DigitalData.EMLProfiler.vbproj index 2456448..eecaa65 100644 --- a/App/DigitalData.EMLProfiler/DigitalData.EMLProfiler.vbproj +++ b/App/DigitalData.EMLProfiler/DigitalData.EMLProfiler.vbproj @@ -48,24 +48,19 @@ ..\packages\AE.Net.Mail.1.7.10.0\lib\net45\AE.Net.Mail.dll - ..\..\..\DDMonorepo\Modules.Base\Base\bin\Debug\DigitalData.Modules.Base.dll + ..\..\..\DDModules\Base\bin\Debug\DigitalData.Modules.Base.dll - - False - ..\..\..\DDMonorepo\Modules.Database\bin\Debug\DigitalData.Modules.Database.dll + + ..\..\..\DDModules\Database\bin\Debug\DigitalData.Modules.Database.dll - - ..\..\..\DDMonorepo\Modules.Filesystem\bin\Debug\DigitalData.Modules.Filesystem.dll - - - False - ..\..\..\DDMonorepo\Modules.Language\bin\Debug\DigitalData.Modules.Language.dll + + ..\..\..\DDModules\Language\bin\Debug\DigitalData.Modules.Language.dll - ..\..\..\DDMonorepo\Modules.Logging\bin\Debug\DigitalData.Modules.Logging.dll + ..\..\..\DDModules\Logging\bin\Debug\DigitalData.Modules.Logging.dll - ..\..\..\DDMonorepo\Modules.Messaging\bin\Debug\DigitalData.Modules.Messaging.dll + ..\..\..\DDModules\Messaging\bin\Debug\DigitalData.Modules.Messaging.dll P:\Visual Studio Projekte\Bibliotheken\windream\Interop.WINDREAMLib.dll diff --git a/App/DigitalData.EMLProfiler/My Project/AssemblyInfo.vb b/App/DigitalData.EMLProfiler/My Project/AssemblyInfo.vb index fd2e536..9fa0686 100644 --- a/App/DigitalData.EMLProfiler/My Project/AssemblyInfo.vb +++ b/App/DigitalData.EMLProfiler/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' übernehmen, indem Sie "*" eingeben: ' - - + + diff --git a/App/DigitalData.EMLProfiler/app.config b/App/DigitalData.EMLProfiler/app.config index b4498a1..dc0bb7e 100644 --- a/App/DigitalData.EMLProfiler/app.config +++ b/App/DigitalData.EMLProfiler/app.config @@ -1,4 +1,4 @@ - + @@ -7,17 +7,17 @@ - + - + - + @@ -25,9 +25,9 @@ - - + + - + diff --git a/App/DigitalData.EMLProfiler/clsEmail.IMAP.vb b/App/DigitalData.EMLProfiler/clsEmail.IMAP.vb index 0c4dff8..19b7d91 100644 --- a/App/DigitalData.EMLProfiler/clsEmail.IMAP.vb +++ b/App/DigitalData.EMLProfiler/clsEmail.IMAP.vb @@ -4,14 +4,14 @@ Imports AE Imports System.Net Imports System.Reflection Imports System.IO -Imports DigitalData.Modules.Database + Imports DigitalData.Modules.Messaging Public Class clsEmailIMAP - Private Shared Logger As DigitalData.Modules.Logging.Logger - Private Shared LogConfig As DigitalData.Modules.Logging.LogConfig + Private Shared Logger As Logger + Private Shared LogConfig As LogConfig Private _DB_MSSQL As clsDatabase - Private _limilab As DigitalData.Modules.Messaging.Limilab + Private _limilab As Limilab Sub New(LogConf As LogConfig, ECMConnectionString As String) LogConfig = LogConf Logger = LogConf.GetLogger diff --git a/App/DigitalData.EMLProfiler/clsEncryption.vb b/App/DigitalData.EMLProfiler/clsEncryption.vb index 9502a2d..a7fc90b 100644 --- a/App/DigitalData.EMLProfiler/clsEncryption.vb +++ b/App/DigitalData.EMLProfiler/clsEncryption.vb @@ -3,7 +3,7 @@ Imports NLog Imports DigitalData.Modules.Logging Public Class clsEncryption Private TripleDes As New TripleDESCryptoServiceProvider - Private Logger As DigitalData.Modules.Logging.Logger + Private Logger As Modules.Logging.Logger Sub New(ByVal key As String, LogConf As LogConfig) Logger = LogConf.GetLogger ' Initialize the crypto provider. diff --git a/App/DigitalData.EMLProfiler/clsWorkEmail.vb b/App/DigitalData.EMLProfiler/clsWorkEmail.vb index 890f19a..a2e25ec 100644 --- a/App/DigitalData.EMLProfiler/clsWorkEmail.vb +++ b/App/DigitalData.EMLProfiler/clsWorkEmail.vb @@ -89,21 +89,6 @@ Public Class clsWorkEmail End If - 'If IsNothing(CURRENT_MAIL_MESSAGE_ID) Then - ' CURRENT_MAIL_MESSAGE_ID = System.Guid.NewGuid.ToString() - 'Else - ' If CURRENT_MAIL_MESSAGE_ID.Length = 0 Then - ' CURRENT_MAIL_MESSAGE_ID = System.Guid.NewGuid.ToString() - ' ElseIf CURRENT_MAIL_MESSAGE_ID.Length > MESSAGE_ID_MAX_LENGTH Then - ' ' MessageIds longer than 100 chars will be replaced with a guid to avoid errors - ' ' because of file paths longer than 255 chars. - ' CURRENT_MAIL_MESSAGE_ID = System.Guid.NewGuid.ToString() - - ' End If - 'End If - 'CURRENT_MAIL_MESSAGE_ID = CURRENT_MAIL_MESSAGE_ID.Replace(">", "").Replace("<", "") - 'CURRENT_MAIL_MESSAGE_ID = CURRENT_MAIL_MESSAGE_ID.Replace("'", "") - If IsNothing(CURRENT_MAIL_SUBJECT) Then CURRENT_MAIL_SUBJECT = "" @@ -357,6 +342,7 @@ Public Class clsWorkEmail End Function Private Function SAVE2TEMP() + Dim oTempFilename As String Try Dim oTempPath As String = Path.Combine(Path.GetTempPath, "DD_EmailProfiler") Logger.Debug($"oTempPath is: {oTempPath} ...") @@ -380,7 +366,7 @@ Public Class clsWorkEmail Logger.Debug($"oSubjectFilename (beforeclean) is: {oSubjectFilename}") oSubjectFilename = RemoveIllegalFileNameChars(oSubjectFilename) - Dim oTempFilename = oTempPath & "\" & oSubjectFilename + oTempFilename = oTempPath & "\" & oSubjectFilename Logger.Debug($"oTempFilename (afterclean) is: {oTempFilename}") Dim oCounter As Integer = 1 @@ -420,6 +406,7 @@ Public Class clsWorkEmail Return oResult Catch ex As Exception Logger.Error(ex) + Logger.Info($"Unexpected error in Save2Temp [{oTempFilename}]") CURRENT_TEMP_MAIL_PATH = Nothing 'clsLogger.Add("Unexpected Error in COPY2HDD: " & ex.Message & "MESSAGE_ID: " & CURRENT_MAIL_MESSAGE.MessageID, True) Return False diff --git a/App/DigitalData.EMLProfiler/clsWorker.vb b/App/DigitalData.EMLProfiler/clsWorker.vb index 543e183..2f7b4f8 100644 --- a/App/DigitalData.EMLProfiler/clsWorker.vb +++ b/App/DigitalData.EMLProfiler/clsWorker.vb @@ -39,6 +39,18 @@ Public Class clsWorker Public Sub Start_WorkingProfiles(Optional LocalEmail As Boolean = False) Try + For Each _file In TEMP_FILES + Logger.Debug("Trying to delete temp file: [{0}]", _file) + + If System.IO.File.Exists(_file) Then + Try + System.IO.File.Delete(_file) + Catch ex As Exception + Logger.Error(ex) + Logger.Warn($"TempFileDelete - Could not delete the tempfile from TEMP_FILES: {ex.Message}") + End Try + End If + Next TEMP_FILES.Clear() If _Database.Init(cs) = True Then diff --git a/App/DigitalData.EMLProfiler/packages.config b/App/DigitalData.EMLProfiler/packages.config index 5a8f9e3..e4e7cf5 100644 --- a/App/DigitalData.EMLProfiler/packages.config +++ b/App/DigitalData.EMLProfiler/packages.config @@ -2,5 +2,4 @@ - \ No newline at end of file diff --git a/App/SERV_EMAIL/packages.config b/App/SERV_EMAIL/packages.config index 37cb921..ce98cd2 100644 --- a/App/SERV_EMAIL/packages.config +++ b/App/SERV_EMAIL/packages.config @@ -1,4 +1,4 @@  - + \ No newline at end of file diff --git a/App/packages/S22.Imap.3.6.0.0/.signature.p7s b/App/packages/S22.Imap.3.6.0.0/.signature.p7s deleted file mode 100644 index 4e6f56a1e711b0919896e2fd46e3b6e0ba5d2e83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9465 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 Tr|7t0UL%ji3oQ98?2;`% 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

Au}8u4HMzRm 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�+Bcd-!r4!u%7K04j{)XDn^Yhwyc_vHp%JHf{(A>n|Z> z2o?1|ig~zMLHK@(0SiPX2p97%V+3b<5 zzX|=Q-|MF@=Jf#h#qZ1Ee_%T?ztbsnM5q9QJ_p9?&pj^`62e~r3$Fk~NQ_tTFVI+G zGt!Z(72z?L|6YEV^O;ysu$T33oWOsIonEV@yu(6NrUFVA`13gF2~qBJ>n9bCiONg^=koo6;^wKo}qjq|2(~>)>H@K9r!hu zt;&`oD^uXvItNa1hw69hce~F~M#m3OUJ@+o9b$W}w|eotvWq}XuR20EoNvWH_*yct z{)Cd@Rn4LV(ubayhn=9wr=P@X33Lnl7ayWnVryn!usf3qoXMuj&3{Obo?H?qt(#aH zY+B_uE>AHsKn?ixc%2y~4tOr_WpRO32!Nd$0Co!g#Ll7Rl6PGgvN=HH%p|Y*FWC7% zhAmfQ9uT4l2>t>+0da_+0C3@ti0ywoj0Pt4zu)96!H;=$H1)yJPoKhF1*31(gJlsJ*f0y&8FD;L7q%kHt}dwMOdhioCl|-`sy-iwW&op7>Mb=3 z#}SQ(j&vK=JvK~<;}ZpDFBLc3ato6LOgax$Lzrd>vXtE6-n4*Nvg|U?i``qyoxw9C zn#Y9gudpfM23Cgs+sHi4Zwq(e%mZ0?1XS?X5!R09S`i;(bfJYNW9^>0i-vHf4+cT5 z9q5I!>QzkMu=RD3okuAlY&_?+X|F(HgC(qTPq6g1I1M9=%vU2+vXCTbuKZaA0zrbl838)|| zqKn3boZdnb`pQ=X$&cVw{mWMJ&utOqrzKm}&n%v$tMZ&4z!` zfYVQ0S?fz64BaU9y=xl3z4`^LYi7u4QJ2#TNu4{dtMkd%0?oq;idzrlo2q0ZKOZy%DM~4uQW!5jmmGFv z8)gic54I1qE~?VvBYV7@!CYcOwCY|Ue~jlVR*-|&TTwP4^Z4#3rWVicSrx3v=CdT$ zH#Cn{A~3&BuXv1>1px~CPwo(z9|{DN5a9F*D!AFR#~UdCSzHS*Z)wJ#v^Ds6ArvHaaiF(pR>d%D zb#%q<{5&%Qy5h);Kn}&jF0uy-n8Un>Wh#pmT%1Jrml@A4L(OgVoOE)n+{=hP2~UcC$xVw!=Kgv ze&+J8)gSI6|I-P~D+Q!T|Mg+JKUK&cAph;?owf!V`c*y_@Gle?Dz-GhC_?&w0IC15 AZ~y=R diff --git a/App/packages/S22.Imap.3.6.0.0/lib/net35/S22.Imap.XML b/App/packages/S22.Imap.3.6.0.0/lib/net35/S22.Imap.XML deleted file mode 100644 index f92a55b..0000000 --- a/App/packages/S22.Imap.3.6.0.0/lib/net35/S22.Imap.XML +++ /dev/null @@ -1,6498 +0,0 @@ - - - - S22.Imap - - - -

- Defines supported means of authenticating with an IMAP server. - - - - - Automatically selects the most-secure authentication mechanism supported by the server. - - - - - Login using plaintext password authentication; This is supported by most servers. - - - - - Login using the SASL PLAIN authentication mechanism. - - - - - Login using the CRAM-MD5 authentication mechanism. - - - - - Login using the DIGEST-MD5 authentication mechanism. - - - - - Login using OAuth via the SASL XOAuth mechanism. - - - - - Login using OAuth 2.0 via the SASL XOAUTH2 mechanism. - - - - - Login using the NTLM authentication mechanism. - - - - - Login using the NTLMv2 authentication mechanism. - - - - - Login using the NTLM/NTLMv2 authentication mechanism via Microsoft's Security Support - Provider Interface (SSPI). - - - - - Login using Kerberos authentication via the SASL GSSAPI mechanism. - - - - - Login using the SCRAM-SHA-1 authentication mechanism. - - - - - Login using the Secure Remote Password (SRP) authentication mechanism. - - The SRP mechanism is only available when targeting .NET 4.0 or newer. - - - - A utility class modeled after the BCL StringBuilder to simplify - building binary-data messages. - - - - - The actual byte buffer. - - - - - The current position in the buffer. - - - - - Resizes the internal byte buffer. - - Amount in bytes by which to increase the - size of the buffer. - - - - Appends one or several byte values to this instance. - - Byte values to append. - A reference to the calling instance. - - - - Appends the specified number of bytes from the specified buffer - starting at the specified offset to this instance. - - The buffer to append bytes from. - The offset into the buffert at which to start - reading bytes from. - The number of bytes to read from the buffer. - A reference to the calling instance. - - - - Appends the specified 32-bit integer value to this instance. - - A 32-bit integer value to append. - Set this to true, to append the value as - big-endian. - A reference to the calling instance. - - - - Appends the specified 16-bit short value to this instance. - - A 16-bit short value to append. - Set this to true, to append the value as - big-endian. - A reference to the calling instance. - - - - Appends the specified 16-bit unsigend short value to this instance. - - A 16-bit unsigend short value to append. - Set this to true, to append the value as - big-endian. - A reference to the calling instance. - - - - Appends the specified 32-bit unsigned integer value to this instance. - - A 32-bit unsigned integer value to append. - Set this to true, to append the value as - big-endian. - A reference to the calling instance. - - - - Appends the specified 64-bit integer value to this instance. - - A 64-bit integer value to append. - Set this to true, to append the value as - big-endian. - A reference to the calling instance. - - - - Appends the specified string using the specified encoding to this - instance. - - The string vale to append. - The encoding to use for decoding the string value - into a sequence of bytes. If this is null, ASCII encoding is used as a - default. - A reference to the calling instance. - - - - Returns the ByteBuilder's content as an array of bytes. - - An array of bytes. - - - - Removes all bytes from the current ByteBuilder instance. - - - - - The length of the underlying data buffer. - - - - - A filter stream sitting between Negotiate- and NetworkStream to - enable managed NTLM/GSSAPI authentication. - - - We use a filter for hooking into the NegotiateStream protocol rather - than p/invoking SSPI directly as that would require unmanaged - code privileges (internally NegotiateStream uses an SSPI wrapper). - - NegotiateStream - FilterStream - NetworkStream. - - - - - A buffer for accumulating handshake data until an entire handshake - has been read. - - - - - A buffer for accumulating the payload data following the handshake - data. - - - - - The latest handshake header sent by the client. - - - - - The buffer from which client reads will be satisfied. - - - - - The number of bytes the client has already consumed/read - from the receivedData buffer. - - - - - The current state of the filter stream. - - - - - Determines whether this instance should close the inner stream - when disposed. - - - - - An error code as specified by the NegotiateStream protocol which is - handed to the NegotiateStream instance in case authentication - unexpectedly fails. - - - - - Gets the stream used by this FilterStream for sending and - receiving data. - - - - - Initializes a new instance of the FilterStream class using the - specified Stream. - - A Stream object used by the FilterStream for sending - and receiving data. - Set to true to indicate that closing this - FilterStream has no effect on innerstream, or set to false to - indicate that closing this FilterStream also closes innerStream. - - - - Reads data from this stream and stores it in the specified array. - - A byte array that receives the bytes read from - the stream. - The zero-based index into the buffer at which to - begin storing the data read from this stream. - The the maximum number of bytes to read from the - stream. - The the number of bytes read from the underlying stream. When - there is no more data to be read, returns 0. - The read operation failed. - - - - Reads the server response from the underlying inner stream. - - - - - Write the specified number of bytes to the underlying stream using the - specified buffer and offset. - - A byte array that supplies the bytes written to - the stream. - The zero-based index in the buffer at which to - begin reading bytes to be written to the stream. - The number of bytes to read from buffer. - The write operation failed. - - - - Reads the client's handshake from the specified buffer. - - A byte array from which the handshake data - will be read. - The zero-based index in the buffer at which to - begin reading bytes. - The number of bytes to read from buffer. - True if the handshake has been read completely, otherwise - false. - - - - Reads the payload from the specified buffer. - - A byte array from which the payload data - will be read. - The zero-based index in the buffer at which to - begin reading bytes. - The number of bytes to read from buffer. - True if all of the payload data has been read, otherwise - false. - - - - Sends the accumulated payload data to the server. - - true if the client is done sending data, otherwise - false. - - - - Reads a line of ASCII-encoded text terminated by a CRLF from the - specified stream. - - The stream to read the line of text from. - Set this to true, to resolve automatically - resolve possible literals. - A line of ASII-encoded text read from the specified - stream. - "Literals" are a special feature of IMAP, employed by some - server implementations. Please refer to RFC 3501 Section 4.3 for - details. - - - - Reads the specified number of bytes from the specified stream and - returns them as an ASCII-encoded string. - - The stream to read from. - The number of bytes to read. - The read bytes encoded as an ASCII string. - - - - Causes any buffered data to be written to the underlying device. - - - - - Throws NotSupportedException. - - This value is ignored. - This value is ignored. - Always throws a NotSupportedException. - - - - Sets the length of the underlying stream. - - A value that specifies the length of the - stream. - - - - Releases all resources used by the stream. - - True to release both managed and unmanaged - resources, false to release only unmanaged resources. - - - - Gets a boolean value that indicates whether the underlying stream is - readable. - - - - - Gets a boolean value that indicates whether the underlying stream is - seekable. - - - - - Gets a boolean value that indicates whether the underlying stream - supports time-outs. - - - - - Gets a boolean value that indicates whether the underlying stream is - writable. - - - - - Gets the length of the underlying stream. - - - - - Gets or sets the current position in the underlying stream. - - Setting this property - is not supported. - - - - The different states the FilterStream can be in. - - - - - The stream is reading the client's handshake message. - - - - - The stream is reading the client's payload data. - - - - - The stream is waiting for the server's response. - - - - - The stream has buffered the server's response and is satisfying - client reads from its buffer. - - - - - Represents a NegotiateStream handshake message. - - - - - This is the only permissible value according to specification. - - - - - This is the only permissible value according to specification. - - - - - Creates a new instance of the Handshake class using the specified type - and payload size. - - The type of handshake. - The size, in bytes, of the payload following - the handshake header. - - - - Private default constructor for deserializing. - - - - - Deserializes a handshake instance from the specified byte array. - - An array of bytes containing handshake data. - An initialized instance of the Handshake class deserialized - from the specified byte array. - Thrown if the specified byte - array does not contain valid handshake data. - - - - Serializes an instance of the Handshake class to a sequence of bytes. - - A sequence of bytes representing this Handshake instance. - - - - The type of the handshake message. - - - - - Specifies the major version of the NegotiateStream protocol - being used. - - - - - Specifies the minor version of the NegotiateStream protocol - being used. - - - - - Defines the size, in bytes, of the AuthPayload field, which immediately - follows the handshake. - - - - - Describes the different types of handshake messages. - - - - - The handshake has completed successfully. - - - - - An error occurred during the handshake. The AuthPayload field contains - an HRESULT. - - - - - The message is part of the handshake phase and is not the final message - from the host. The final Handshake message from a host is always - transferred in a HandshakeDone message. - - - - - Implements the Sasl SCRAM-SHA-1 authentication method as described in - RFC 5802. - - - - - The abstract base class from which all classes implementing a Sasl - authentication mechanism must derive. - - - - - Computes the client response to a challenge sent by the server. - - - The client response to the specified challenge. - - - - - - - - Retrieves the base64-encoded client response for the specified - base64-encoded challenge sent by the server. - - A base64-encoded string representing a challenge - sent by the server. - A base64-encoded string representing the client response to the - server challenge. - The IMAP, POP3 and SMTP authentication commands expect challenges - and responses to be base64-encoded. This method automatically decodes the - server challenge before passing it to the Sasl implementation and - encodes the client response to a base64-string before returning it to the - caller. - Thrown if the client response could - not be retrieved. Refer to the inner exception for error details. - - - - Retrieves the client response for the specified server challenge. - - A byte array containing the challenge sent by - the server. - An array of bytes representing the client response to the - server challenge. - - - - IANA name of the authentication mechanism. - - - - - True if the authentication exchange between client and server - has been completed. - - - - - A map of mechanism-specific properties which are needed by the - authentication mechanism to compute it's challenge-responses. - - - - - The client nonce value used during authentication. - - - - - Scram-Sha-1 involves several steps. - - - - - The salted password. This is needed for client authentication and later - on again for verifying the server signature. - - - - - The auth message is part of the authentication exchange and is needed for - authentication as well as for verifying the server signature. - - - - - Private constructor for use with Sasl.SaslFactory. - - - - - Internal constructor used for unit testing. - - The username to authenticate with. - The plaintext password to authenticate - with. - The client nonce value to use. - Thrown if the username - or the password parameter is null. - Thrown if the username - parameter is empty. - - - - Creates and initializes a new instance of the SaslScramSha1 - class using the specified username and password. - - The username to authenticate with. - The plaintext password to authenticate - with. - Thrown if the username - or the password parameter is null. - Thrown if the username - parameter is empty. - - - - Computes the client response to the specified SCRAM-SHA-1 challenge. - - The challenge sent by the server - The response to the SCRAM-SHA-1 challenge. - Thrown if the response could not - be computed. - - - - Computes the initial response sent by the client to the server. - - An array of bytes containing the initial client - response. - - - - Computes the "client-final-message" which completes the authentication - process. - - The "server-first-message" challenge received - from the server in response to the initial client response. - An array of bytes containing the client's challenge - response. - - - - Verifies the nonce value sent by the server. - - The nonce value sent by the server as part of the - server-first-message. - True if the nonce value is valid, otherwise false. - - - - Verifies the server signature which is sent by the server as the final - step of the authentication process. - - The server signature as a base64-encoded - string. - The client's response to the server. This will be an empty - byte array if verification was successful, or the '*' SASL cancellation - token. - - - - Parses the "server-first-message" received from the server. - - The challenge received from the server. - A collection of key/value pairs contained extracted from - the server message. - Thrown if the message parameter - is null. - - - - Computes the "Hi()"-formula which is part of the client's response - to the server challenge. - - The supplied password to use. - The salt received from the server. - The iteration count. - An array of bytes containing the result of the computation of the - "Hi()"-formula. - - Hi is, essentially, PBKDF2 with HMAC as the pseudorandom function (PRF) and with - dkLen == output length of HMAC() == output length of H(). (Refer to RFC 5802, p.6) - - - - - Applies the HMAC keyed hash algorithm using the specified key to - the specified input data. - - The key to use for initializing the HMAC - provider. - The input to compute the hashcode for. - The hashcode of the specified data input. - - - - Applies the HMAC keyed hash algorithm using the specified key to - the specified input string. - - The key to use for initializing the HMAC - provider. - The input string to compute the hashcode for. - The hashcode of the specified string. - - - - Applies the cryptographic hash function SHA-1 to the specified data - array. - - The data array to apply the hash function to. - The hash value for the specified byte array. - - - - Applies the exclusive-or operation to combine the specified byte array - a with the specified byte array b. - - The first byte array. - The second byte array. - An array of bytes of the same length as the input arrays - containing the result of the exclusive-or operation. - Thrown if either argument is - null. - Thrown if the input arrays - are not of the same length. - - - - Generates a random cnonce-value which is a "client-specified data string - which must be different each time a digest-response is sent". - - A random "cnonce-value" string. - - - - Prepares the specified string as is described in RFC 5802. - - A string value. - A "Saslprepped" string. - - - - True if the authentication exchange between client and server - has been completed. - - - - - The IANA name for the Scram-Sha-1 authentication mechanism as described - in RFC 5802. - - - - - The username to authenticate with. - - - - - The password to authenticate with. - - - - - Represents a MIME body part of a mail message that has multiple - parts. - - - - - Initializes a new instance of the Bodypart class with default - values. - - The part number as is expected by the - IMAP FETCH command. - - - - Returns a detailed description listing all properties of this - Bodypart instance. - - A string describing this instance of the Bodypart class - - - - The body part number which acts as part specifier for - the FETCH BODY command. - - - - - The MIME content-type of this body part. The content-type is - used to declare the general type of data. - - - - - The MIME content-subtype of this body part. The subtype - specifies a specific format for the type of data. - - - - - Parameter values present in the MIME content-type header - of this body part (for instance, 'charset'). - - - - - The MIME content-id of this body part, if any. This value - may be used for uniquely identifying MIME entities in - several contexts. - - - - - The MIME content-description of this body part. This value - may contain some descriptive information on the body part. - - - - - The MIME content-transfer-encoding mechanism used for - encoding this body part's data. - - - - - The size of this body part in bytes. Note that this size - is the size in its transfer encoding and not the resulting - size after any decoding. - - - - - The size of the body in text lines. This field is only - present in body parts with a content-type of text. - - - - - The computed MD5-Hash of the body part. This field is not - mandatory and may be empty. - - - - - The MIME content-disposition for this body part. This field - is not mandatory and may be empty. - - - - - A string giving the body language. This field is not mandatory - and may be empty. - - - - - A string list giving the body content URI. This field is not - mandatory and may be empty. - - - - - Provides a means for parsing the textual description of the body structure of a mail - message as is returned by an IMAP server for a "FETCH BODYSTRUCTURE" command. - - - They couldn't have made the BODYSTRUCTURE any more complicated and unnecessarily - hard to parse. I wonder what they were thinking when they came up with this. - - - - - Parses the body structure of a mail message as is returned by the IMAP server - in response to a FETCH BODYSTRUCTURE command. - - The body structure server response - An array of initialized Bodypart objects representing the body - structure of the mail message - Thrown if the passed string does not - contain a valid body structure and parsing failed. - - - - A Reader object initialized with the string containing the bodystructure - response. - - - - - Initializes a new instance of the Bodystructure class. - - - - - - Parses a bodypart entry from the body structure and advances the - read pointer. - - The designated part specifier by which the body - part is refered to by the server. - Set to true if the bodypart is enclosed - in parenthesis. - - - - - Parses the mandatory extra fields that are present if the bodypart is - of type message/rfc822 (see RFC 3501, p. 75). - - The bodypart instance the parsed fields will be - added to. - - - - Parses the optional fields of a bodypart entry from the body structure - and advances the read pointer. - - The bodypart instance the parsed fields will be - added to. - Set to true if the bodypart entry is enclosed - in parenthesis. - - - - Parses a list of bodypart entries as is outlined in the description of the - BODYPART response in RFC 3501. - - The nesting prefix that will be prefixed to the - bodyparts partNumber. - An array of initialized Bodypart objects parsed from the - list. - - - - Advances the read pointer to skip over a multipart entry. - - - - - Advances the read pointer to skip over an arbitrary - expression enclosed in parentheses. - - - - - Represents the content disposition as is presented in the BODYSTRUCTURE - response by the IMAP server. - - - - - Initializes a new instance of the ContentDisposition class with - default values. - - - - - Maps MIME content disposition string values to their corresponding - counter-parts of the ContentDispositionType enumeration. - - - - - The content disposition specifies the presentation style. - - - - - Additional attribute fields for specifying the name of a file, the creation - date and modification date, which can be used by the reader's mail user agent - to store the attachment. - - - - - Contains the name of the transmitted file if the content-disposition is of type - "Attachment" and if the name value was provided as part of the header information. - This field may be empty. - - - - - Possible values for the content disposition type which determines the presentation - style - - - - - The content disposition could not be determined. - - - - - An inline content disposition means that the content should be automatically - displayed when the message is displayed. - - - - - An attachment content disposition means that the content should not be displayed - automatically and requires some form of action from the user to open it. - - - - - Possible values for the "Encoding" property of the Bodypart class. The content - transfer encoding indicates whether or not a binary-to-text encoding - scheme has been used on top of the original encoding as specified within the - Content-Type header. - - - - - The content tranfer encoding could not be determined or is unknown. - - - - - Up to 998 bytes per line of the code range 1 - 127 with CR and LF only - allowed to appear as part of a CRLF line ending. - - - - - Up to 998 bytes per line with CR and LF only allowed to appear as part - of a CRLF line ending. - - - - - Any sequence of bytes. - - - - - Byte sequence is encoded using the quoted-printable encoding. - - - - - Byte sequence is encoded using Base64 encoding. - - - - - Possible values for the "Type" property of the Bodypart class. - For a detailed description of MIME Media Types refer to - RFC 2046. - - - - - The "text" media type is intended for sending material which - is principally textual in form. - - - - - A media type of "image" indicates that the body contains an image. - The subtype names the specific image format. - - - - - A media type of "audio" indicates that the body contains audio - data. - - - - - A media type of "video" indicates that the body contains a - time-varying-picture image, possibly with color and coordinated sound. - - - - - The "application" media type is to be used for discrete data which do - not fit in any of the other categories, and particularly for data to - be processed by some type of application program. - - - - - The "message" content type allows messages to contain other messages - or pointers to other messages. - - - - - The media type value is unknown or could not be determined. - - - - - A helper class for parsing the BODYSTRUCTURE response of an - IMAP FETCH command more conveniently. - - - - - Initializes a new instance of the Reader class that reads from the - specified string. - - The string to which the Reader instance should be - initialized. - - - - Reads the next character from the input string and advances the - character position by one character. - - The next character from the underlying string. - Thrown when reading is - attempted past the end of the underlying string. - - - - Returns the next available character but does not consume it. - - Set to true to skip any preceding - whitespace characters. - An integer representing the next character to be read, - or -1 if no more characters are available. - - - - Advances the character position until the specified character - is encountered. - - The character to skip to. - Thrown when reading is - attempted past the end of the underlying string. - - - - Advances the character position over any whitespace characters - and subsequently ensures the next read will not return a - whitespace character. - - Thrown when reading is - attempted past the end of the underlying string. - - - - Reads characters until the specified character is encountered. - - The character to read up to. - The read characters as a string value. - Thrown when reading is - attempted past the end of the underlying string. - - - - Reads a word from the underlying string. A word in this context - is a literal enclosed in double-quotes. - - The read word. - Thrown when reading is - attempted past the end of the underlying string. - - - - Reads an integer from the underlying string. - - The read integer value. - Thrown when reading is - attempted past the end of the underlying string. - - - - Reads a list from the underlying string. A list in this context - is a list of attribute/value literals (enclosed in double-quotes) - enclosed in parenthesis. - - The read list as a dictionary with the attribute names - as keys and attribute values as values. - Thrown when reading is - attempted past the end of the underlying string. - - - - Reads a disposition from the underlying string. A disposition in - this context is a list of attribute/value literals (enclosed in - double-quotes) preceded by a word enclosed in parenthesis. - - An initialized ContentDisposition instance representing - the parsed disposition. - Thrown when reading is - attempted past the end of the underlying string. - - - - The exception that is thrown when reading is attempted past the end - of a string. - - - - - Initializes a new instance of the EndOfStringException class - - - - - Initializes a new instance of the EndOfStringException class with its message - string set to . - - A description of the error. The content of message is intended - to be understood by humans. - - - - Initializes a new instance of the EndOfStringException class with its message - string set to and a reference to the inner exception that - is the cause of this exception. - - A description of the error. The content of message is intended - to be understood by humans. - The exception that is the cause of the current exception. - - - - Initializes a new instance of the EndOfStringException class with the specified - serialization and context information. - - An object that holds the serialized object data about the exception - being thrown. - An object that contains contextual information about the source - or destination. - - - - Defines the different means by which mail messages may be fetched from the server. - - - - - Fetches the entire mail message with all of its content. - - - - - Only the mail message headers will be retrieved, while the actual content will not be - downloaded. If this option is specified, only the header fields of the returned MailMessage - object will be initialized. - - - - - Retrieves the mail message, but will only download content that has a content-type of text. - This will retrieve text as well as HTML representation, while skipping inline content and - attachments. - - - - - Retrieves the mail message, but skips any content that is an attachment. - - - - - Provides data for IMAP idle error events. - - - - - Initializes a new instance of the IdleErrorEventArgs class. - - The exception that causes the event. - The instance of the ImapClient class that raised the event. - The exception parameter or the client parameter - is null. - - - - The exception that caused the error event. - - - - - The instance of the ImapClient class that raised the event. - - - - - Provides data for IMAP idle notification events. - - - - - Initializes a new instance of the IdleMessageEventArgs class and sets the - MessageCount attribute to the value of the - parameter. - - The number of messages in the selected mailbox. - The unique identifier (UID) of the newest message in the - mailbox. - The instance of the ImapClient class that raised the event. - - - - The total number of messages in the selected mailbox. - - - - - The unique identifier (UID) of the newest message in the mailbox. - - The UID can be passed to the GetMessage method in order to retrieve the mail - message from the server. - - - - The instance of the ImapClient class that raised the event. - - - - - Enables applications to communicate with a mail server using the Internet Message Access - Protocol (IMAP). - - - - - Attempts to establish an authenticated session with the server using the specified - credentials. - - The username with which to login in to the IMAP server. - The password with which to log in to the IMAP server. - The requested method of authentication. Can be one of the values - of the AuthMethod enumeration. - The username parameter or the password parameter - is null. - There was a failure writing to or reading from the - network. - The server rejected the supplied - credentials. - The specified authentication method is not - supported by the server. - - This example demonstrates how to authenticate with an IMAP server once a connection - has been established. Notice that you can also connect and login in one step - using one of the overloaded constructors. - - // Connect to Gmail's IMAP server on port 993 using SSL. - ImapClient Client = new ImapClient("imap.gmail.com", 993, true); - - try { - Client.Login("My_Username", "My_Password", AuthMethod.Auto); - } - catch(InvalidCredentialsException) { - Console.WriteLine("The server rejected the supplied credentials."); - } - - Client.Dispose(); - - - - - - Logs an authenticated client out of the server. After the logout sequence has been completed, - the server closes the connection with the client. - - An unexpected response has been received from - the server during the logout sequence. - Calling this method in non-authenticated state has no effect. - There was a failure writing to or reading from the - network. - The ImapClient object has been disposed. - - - - Returns an enumerable collection of capabilities the IMAP server supports. All strings in - the returned collection are guaranteed to be upper-case. - - An unexpected response has been received from - the server; The message property of the exception contains the error message returned by - the server. - There was a failure writing to or reading from the - network. - The ImapClient object has been disposed. - An enumerable collection of capabilities supported by the server. - This method may be called in non-authenticated state. - - - - Determines whether the specified capability is supported by the server. - - The IMAP capability to probe for (for example "IDLE"). - The capability parameter is null. - An unexpected response has been received from - the server; The message property of the exception contains the error message returned by - the server. - There was a failure writing to or reading from the - network. - The ImapClient object has been disposed. - true if the specified capability is supported by the server; Otherwise - false. - This method may be called in non-authenticated state. - - This example demonstrates how to connect and login to an IMAP server. - - // Connect to Gmail's IMAP server on port 993 using SSL. - ImapClient Client = null; - try { - Client = new ImapClient("imap.gmail.com", 993, "My_Username", - "My_Password", true, AuthMethod.Auto); - - // Check if the server supports IMAP IDLE. - if(Client.Supports("IDLE")) - Console.WriteLine("This server supports the IMAP4 IDLE specification"); - else - Console.WriteLine("This server does not support IMAP IDLE"); - } - catch(InvalidCredentialsException) { - Console.WriteLine("The server rejected the supplied credentials"); - } - finally { - // Release resources. - if(Client != null) - Client.Dispose(); - } - - - - - - Changes the name of the specified mailbox. - - The mailbox to rename. - The new name the mailbox will be renamed to. - The mailbox parameter or the - newName parameter is null. - The mailbox could not be renamed; The message - property of the exception contains the error message returned by the server. - There was a failure writing to or reading from the - network. - The ImapClient object has been disposed. - The method was called in non-authenticated - state, i.e. before logging in. - - - - Permanently removes the specified mailbox. - - The name of the mailbox to remove. - The mailbox parameter is null. - The specified mailbox could not be removed. - The message property of the exception contains the error message returned by the - server. - There was a failure writing to or reading from the - network. - The ImapClient object has been disposed. - The method was called in non-authenticated - state, i.e. before logging in. - - - - Creates a new mailbox with the specified name. - - The name of the mailbox to create. - The mailbox parameter is null. - The mailbox with the specified name could - not be created. The message property of the exception contains the error message returned - by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - Retrieves a list of all available and selectable mailboxes on the server. - - An enumerable collection of the names of all available and selectable - mailboxes. - The list of mailboxes could not be retrieved. - The message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - The mailbox name "INBOX" is a special name reserved to mean "the primary mailbox - for this user on this server". - - - - Permanently removes all messages that have the \Deleted flag set from the specified mailbox. - - The mailbox to remove all messages from that have the \Deleted flag - set. If this parameter is omitted, the value of the DefaultMailbox property is used to - determine the mailbox to operate on. - The expunge operation could not be completed. - The message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - - Retrieves status information (total number of messages, various attributes as well as quota - information) for the specified mailbox. - The mailbox to retrieve status information for. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - A MailboxInfo object containing status information for the mailbox. - The operation could not be completed because - the server returned an error. The message property of the exception contains the error message - returned by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - Not all IMAP servers support the retrieval of quota information. If it is not - possible to retrieve this information, the UsedStorage and FreeStorage properties of the - returned MailboxStatus instance are set to 0. - - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - // Get a list of all mailboxes. - foreach(string m in Client.ListMailboxes()) - { - MailboxInfo info = Client.GetMailboxInfo(m); - - Console.WriteLine(info.Name); - Console.WriteLine("Used storage: " + info.UsedStorage); - Console.WriteLine("Free storage: " + info.FreeStorage); - Console.WriteLine("Next UID: " + info.NextUID); - Console.WriteLine("Messages: " + info.Messages); - Console.WriteLine("Unread: " + info.Unread); - Console.WriteLine("Set Flags: "); - foreach (MailboxFlag f in info.Flags) - Console.Write(f.ToString() + ","); - Console.WriteLine(); - } - - Client.Dispose(); - - - - - - Searches the specified mailbox for messages that match the given search criteria. - - A search criteria expression; Only messages that match this - expression will be included in the result set returned by this method. - The mailbox that will be searched. If this parameter is omitted, the - value of the DefaultMailbox property is used to determine the mailbox to operate on. - The criteria parameter is null. - The search could not be completed. The message - property of the exception contains the error message returned by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - The search values contain characters beyond the - ASCII range and the server does not support handling non-ASCII strings. - An enumerable collection of unique identifiers (UIDs) which can be used with the - GetMessage family of methods to download the mail messages. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - - This example demonstrates how to use the search method to get a list of all - unread messages in the mailbox. - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_Username", - "My_Password", true, AuthMethod.Login); - - // Get a list of unique identifiers (UIDs) of all unread messages in the mailbox. - IEnumerable<uint> uids = Client.Search( SearchCondition.Unseen() ); - - // Fetch the messages and print out their subject lines. - foreach(uint uid in uids) { - MailMessage message = Client.GetMessage(uid); - - Console.WriteLine(message.Subject); - } - - // Free up any resources associated with this instance. - Client.Dispose(); - - - This example demonstrates how to perform a search using multiple search criteria. - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_Username", - "My_Password", true, AuthMethod.Login); - - // Get a list of unique identifiers (UIDs) of all messages sent before the 01.04.2012 - // and that are larger than 1 Kilobyte. - IEnumerable<uint> uids = Client.Search( SearchCondition.SentBefore(new DateTime(2012, 4, 1)) - .And( SearchCondition.Larger(1024) )); - - Console.WriteLine("Found " + uids.Count() + " messages"); - - // Free up any resources associated with this instance. - Client.Dispose(); - - - The following example demonstrates how to perform a search using characters outside - the ASCII range. - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_Username", - "My_Password", true, AuthMethod.Login); - - // Get a list of unique identifiers (UIDs) of all messages that have - // the Japanese expression "フーリエ変換" in their subject lines. - try { - IEnumerable<uint> uids = Client.Search(SearchCondition.Subject("フーリエ変換")); - - Console.WriteLine("Found " + uids.Count() + " messages"); - } catch(NotSupportedException e) { - // If this exception is thrown, the server does not support searching for characters - // outside the ASCII range. - Console.WriteLine("The server does not support searching for non-ASCII values."); - } - - // Free up any resources associated with this instance. - Client.Dispose(); - - - - - - Retrieves the mail message with the specified unique identifier (UID). - - The unique identifier of the mail message to retrieve. - Set this to true to set the \Seen flag for this message on the - server. - The mailbox the message will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - An initialized instance of the MailMessage class representing the fetched mail - message. - The mail message could not be fetched. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - // Find all messages in the mailbox that were sent from "John.Doe@gmail.com". - IEnumerable<uint> uids = Client.Search( SearchCondition.From("John.Doe@gmail.com") ); - - // Fetch the first message and print it's subject and body. - if(uids.Count() > 0) { - MailMessage msg = Client.GetMessage(uids.First()); - - Console.WriteLine("Subject: " + msg.Subject); - Console.WriteLine("Body: " + msg.Body); - } - - Client.Dispose(); - - - - - - Retrieves the mail message with the specified unique identifier (UID) using the specified - fetch-option. - - The unique identifier of the mail message to retrieve. - A value from the FetchOptions enumeration which allows - for fetching selective parts of a mail message. - Set this to true to set the \Seen flag for this message on the - server. - The mailbox the message will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - An initialized instance of the MailMessage class representing the fetched mail - message. - The mail message could not be fetched. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - If you need more fine-grained control over which parts of a mail message to fetch, - consider using one of the overloaded GetMessage methods. - - - - This example demonstrates how to fetch only the mail message headers of - a mail message, instead of the entire message. - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - // Find all messages in the mailbox that have "Hello" in the subject. - IEnumerable<uint> uids = Client.Search( SearchCondition.Subject("Hello") ); - - // Fetch the mail headers of the first message and print it's subject line. - if(uids.Count() > 0) { - MailMessage msg = Client.GetMessage(uids.First(), FetchOptions.HeadersOnly); - - Console.WriteLine("Subject: " + msg.Subject); - } - - Client.Dispose(); - - - - - - Retrieves the mail message with the specified unique identifier (UID) while only fetching - those parts of the message that satisfy the condition of the specified delegate. - - The unique identifier of the mail message to retrieve. - A delegate which will be invoked for every MIME body-part of the - mail message to determine whether the part should be fetched from the server or - skipped. - Set this to true to set the \Seen flag for this message on the - server. - The mailbox the message will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - An initialized instance of the MailMessage class representing the fetched mail - message. - The callback parameter is null. - The mail message could not be fetched. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - - This example demonstrates how to use the ExaminePartDelegate with the GetMessage - method to only download message parts with a size of 1 Megabyte or less. - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - // Find all messages in the inbox. - IEnumerable<uint> uids = Client.Search( SearchCondition.All() ); - - // Download each message but skip message parts that are larger than 1 Megabyte. - foreach(uint uid in uids) { - MailMessage msg = Client.GetMessage(uid, (Bodypart part) => { - if(part.Size > (1024 * 1024)) - return false; - else - return true; - } - ); - } - - Client.Dispose(); - - - - - - Retrieves the set of mail messages with the specified unique identifiers (UIDs). - - An enumerable collection of unique identifiers of the mail messages to - retrieve. - Set this to true to set the \Seen flag for the fetched messages on the - server. - The mailbox the messages will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - An enumerable collection of initialized instances of the MailMessage class - representing the fetched mail messages. - The uids parameter is null. - The mail messages could not be fetched. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - // Find all messages that have been sent since June the 1st. - IEnumerable<uint> uids = Client.Search( SearchCondition.SentSince( new DateTime(2012, 6, 1) ) ); - - // Fetch the messages and print out their subject lines. - IEnumerable<MailMessage> messages = Client.GetMessages( uids ); - - foreach(MailMessage m in messages) - Console.WriteLine("Subject: " + m.Subject); - - Client.Dispose(); - - - - - - Retrieves the set of mail messages with the specified unique identifiers (UIDs) while only - fetching those parts of the messages that satisfy the condition of the specified delegate. - - An enumerable collection of unique identifiers of the mail messages to - retrieve. - A delegate which will be invoked for every MIME body-part of each - mail message to determine whether the part should be fetched from the server or - skipped. - Set this to true to set the \Seen flag for the fetched messages on the - server. - The mailbox the messages will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - An enumerable collection of initialized instances of the MailMessage class - representing the fetched mail messages. - The uids parameter or the callback parameter is - null. - The mail messages could not be fetched. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - - - - - Retrieves the set of mail messages with the specified unique identifiers (UIDs) using the - specified fetch-option. - - An enumerable collection of unique identifiers of the mail messages to - retrieve. - A value from the FetchOptions enumeration which allows for fetching - selective parts of a mail message. - Set this to true to set the \Seen flag for the fetched messages on the - server. - The mailbox the messages will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - An enumerable collection of initialized instances of the MailMessage class - representing the fetched mail messages. - The uids parameter is null. - The mail messages could not be fetched. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - // Find all messages that have been sent since June the 1st. - IEnumerable<uint> uids = Client.Search( SearchCondition.SentSince( new DateTime(2012, 6, 1) ) ); - - // Retrieve the messages and print out their subject lines. If any of the messages are multipart - // messages, only those parts, that have a content-type of text will be fetched. - IEnumerable<MailMessage> messages = Client.GetMessages( uids, FetchOptions.TextOnly ); - - foreach(MailMessage m in messages) - Console.WriteLine("Subject: " + m.Subject); - - Client.Dispose(); - - - - - - Stores the specified mail message on the IMAP server. - - The mail message to store on the server. - Set this to true to set the \Seen flag for the message on the - server. - The mailbox the message will be stored in. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to store - the message in. - The unique identifier (UID) of the stored message. - The message parameter is null. - The mail message could not be stored. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - - - This example demonstrates how to store a mail message on an IMAP server. - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - MailMessage message = CreateSimpleMailMessage(); - uint uid = Client.StoreMessage(message); - - Console.WriteLine("The UID of the stored mail message is " + uid); - - Client.Dispose(); - - // ........... - - // This creates a simple mail message with a text/plain body and a PNG image - // as a file attachment. - // Consult the MSDN website for more details on the System.Net.Mail.Mailmessage class. - static MailMessage CreateSimpleMailMessage() { - MailMessage message = new MailMessage(); - - message.From = new MailAddress("someone@someplace.com"); - message.To.Add("john.doe@someplace.com"); - - message.Subject = "This is just a test!"; - message.Body = "This is the text/plain body. An additional HTML body " + - "can optionally be attached as an alternate view"; - - // Add the attachment. - Attachment attachment = new Attachment("some_image.png", "image/png"); - attachment.Name = "my_attached_image.png"; - message.Attachments.Add(attachment); - - return message; - } - - - - - - Stores the specified mail messages on the IMAP server. - - An enumerable collection of mail messages to store on the - server. - Set this to true to set the \Seen flag for each message on the - server. - The mailbox the messages will be stored in. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to store - the messages in. - An enumerable collection of unique identifiers (UID) representing the stored - messages on the server. - The messages parameter is null. - The mail messages could not be stored. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - - - - - Copies the mail message with the specified UID to the specified destination mailbox. - - The UID of the mail message to copy. - The name of the mailbox to copy the message to. - The mailbox the message will be copied from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - The destination parameter is null. - The mail message could not be copied to the - specified destination. The message property of the exception contains the error message - returned by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - - Copies the mail messages with the specified UIDs to the specified destination mailbox. - - An enumerable collection of UIDs of the mail messages to copy. - The name of the mailbox to copy the messages to. - The mailbox the message will be copied from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - When copying many messages, this method is more efficient than calling - for each individual message. - The uids parameter or the destination parameter is - null. - The specified collection of UIDs is empty. - The mail messages could not be copied to the - specified destination. The message property of the exception contains the error message - returned by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - - Moves the mail message with the specified UID to the specified destination mailbox. - - The UID of the mail message to move. - The name of the mailbox to move the message into. - The mailbox the message will be moved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - The destination parameter is null. - The mail message could not be moved to the - specified destination. The message property of the exception contains the error message - returned by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - - - Moves the mail messages with the specified UIDs to the specified destination mailbox. - - An enumerable collection of UIDs of the mail messages to move. - The name of the mailbox to move the messages into. - The mailbox the messages will be moved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - When moving many messages, this method is more efficient than calling - for each individual message. - The uids parameter or the destination parameter is - null. - The mail messages could not be moved to the - specified destination. The message property of the exception contains the error message - returned by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - - - Deletes the mail message with the specified UID. - - The UID of the mail message to delete. - The mailbox the message will be deleted from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - The mail message could not be deleted. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - - Deletes the mail messages with the specified UIDs. - - An enumerable collection of UIDs of the mail messages to delete. - The mailbox the messages will be deleted from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - When deleting many messages, this method is more efficient than calling - for each individual message. - The uids parameter is null. - The specified collection of UIDs is empty. - The mail messages could not be deleted. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - - Retrieves the IMAP message flag attributes for the mail message with the specified unique - identifier (UID). - - The UID of the mail message to retrieve the flag attributes for. - The mailbox the message will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - An enumerable collection of message flags set for the message with the specified - UID. - The mail message flags could not be retrieved. - The message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - - - - Sets the IMAP message flag attributes for the mail message with the specified unique - identifier (UID). - - The UID of the mail message to set the flag attributes for. - The mailbox that contains the mail message. If this parameter is null, - the value of the DefaultMailbox property is used to determine the mailbox to operate - on. - One or multiple message flags from the MessageFlag enumeration. - The mail message flags could not be set. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - This method replaces the current flag attributes of the message with the specified - new flags. If you wish to retain the old attributes, use the - method instead. - - - - - - - Adds the specified set of IMAP message flags to the existing flag attributes of the mail - message with the specified unique identifier (UID). - - The UID of the mail message to add the flag attributes to. - The mailbox that contains the mail message. If this parameter is null, - the value of the DefaultMailbox property is used to determine the mailbox to operate - on. - One or multiple message flags from the MessageFlag enumeration. - The mail message flags could not be added. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - This method adds the specified set of flags to the existing set of flag attributes - of the message. If you wish to replace the old attributes, use the - method instead. - - - - - - - Removes the specified set of IMAP message flags from the existing flag attributes of the - mail message with the specified unique identifier (UID). - - The UID of the mail message to remove the flag attributes for. - The mailbox that contains the mail message. If this parameter is null, - the value of the DefaultMailbox property is used to determine the mailbox to operate - on. - One or multiple message flags from the MessageFlag enumeration. - The mail message flags could not be removed. - The message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - This method removes the specified set of flags from the existing set of flag - attributes of the message. If you wish to replace the old attributes, use the - method instead. - - - - - - - The default mailbox to operate on. - - The property is being set and the value is - null. - The property is being set and the value is the empty - string. - The default value for this property is "INBOX" which is a special name reserved - to mean "the primary mailbox for this user on this server". - - - - Determines whether the client is authenticated with the server. - - - - - The event that is raised when a new mail message has been received by the server. - - To probe a server for IMAP IDLE support, the - method can be used, specifying "IDLE" for the capability parameter. - - Please note that the event handler will be executed on a threadpool thread. - - - This example demonstrates how to receive IMAP IDLE notifications. - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - // Make sure our server actually supports IMAP IDLE. - if(!Client.Supports("IDLE")) - throw new Exception("This server does not support IMAP IDLE"); - - // Our event handler will be called whenever a new message is received - // by the server. - Client.NewMessage += new EventHandler<IdleMessageEventArgs>(OnNewMessage); - - // ......... - - Client.Dispose(); - - // ........ - - void OnNewMessage(object sender, IdleMessageEventArgs e) { - Console.WriteLine("Received a new message!"); - Console.WriteLine("Total number of messages in the mailbox: " + - e.MessageCount); - } - - - - - - The event that is raised when a message has been deleted on the server. - - To probe a server for IMAP IDLE support, the - method can be used, specifying "IDLE" for the capability parameter. - - Please note that the event handler will be executed on a threadpool thread. - - - This example demonstrates how to receive IMAP IDLE notifications. - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - // Make sure our server actually supports IMAP IDLE. - if(!Client.Supports("IDLE")) - throw new Exception("This server does not support IMAP IDLE"); - - // Our event handler will be called whenever a message is deleted on the server. - Client.MessageDeleted += new EventHandler<IdleMessageEventArgs>(OnMessageDeleted); - - // ......... - - // Don't forget to dispose the client once you're done with it. - Client.Dispose(); - - // ........ - - void OnMessageDeleted(object sender, IdleMessageEventArgs e) { - Console.WriteLine("A mail message was deleted on the server!"); - Console.WriteLine("Total number of mail messages in the mailbox: " + - e.MessageCount); - } - - - - - - Enables applications to communicate with a mail server using the Internet Message Access - Protocol (IMAP). - - - - - This constructor is solely used for unit testing. - - A stream to initialize the ImapClient instance with. - - - - Initializes a new instance of the ImapClient class and connects to the specified port - on the specified host, optionally using the Secure Socket Layer (SSL) security protocol. - - The DNS name of the server to which you intend to connect. - The port number of the server to which you intend to connect. - Set to true to use the Secure Socket Layer (SSL) security protocol. - Delegate used for verifying the remote Secure Sockets - Layer (SSL) certificate which is used for authentication. Can be null if not needed. - The port parameter is not between MinPort - and MaxPort. - The hostname parameter is null. - An unexpected response has been received from - the server upon connecting. - There was a failure writing to or reading from the - network. - An error occurred while accessing the socket used for - establishing the connection to the IMAP server. Use the ErrorCode property to obtain the - specific error code. - An authentication - error occured while trying to establish a secure connection. - - This example shows how to establish a connection with an IMAP server - and print out the IMAP options, which the server supports. - - // Connect to Gmail's IMAP server on port 993 using SSL. - ImapClient Client = new ImapClient("imap.gmail.com", 993, true); - - // Print out the server's capabilities. - foreach(string s in Client.Capabilities()) - Console.WriteLine(s); - - Client.Dispose(); - - - - - - Initializes a new instance of the ImapClient class and connects to the specified port on - the specified host, optionally using the Secure Socket Layer (SSL) security protocol and - attempts to authenticate with the server using the specified authentication method and - credentials. - - The DNS name of the server to which you intend to connect. - The port number of the server to which you intend to connect. - The username with which to login in to the IMAP server. - The password with which to log in to the IMAP server. - The requested method of authentication. Can be one of the values - of the AuthMethod enumeration. - Set to true to use the Secure Socket Layer (SSL) security protocol. - Delegate used for verifying the remote Secure Sockets Layer - (SSL) certificate which is used for authentication. Can be null if not needed. - The port parameter is not between MinPort - and MaxPort. - The hostname parameter is null. - An unexpected response has been received from - the server upon connecting. - There was a failure writing to or reading from the - network. - The provided credentials were rejected by the - server. - An error occurred while accessing the socket used for - establishing the connection to the IMAP server. Use the ErrorCode property to obtain the - specific error code. - An authentication - error occured while trying to establish a secure connection. - - This example demonstrates how to connect and login to an IMAP server. - - // Connect to Gmail's IMAP server on port 993 using SSL. - ImapClient Client = null; - try { - Client = new ImapClient("imap.gmail.com", 993, "My_Username", - "My_Password", true, AuthMethod.Auto); - - // Check if the server supports IMAP IDLE. - if(Client.Supports("IDLE")) - Console.WriteLine("This server supports the IMAP4 IDLE specification"); - else - Console.WriteLine("This server does not support IMAP IDLE"); - } - catch(InvalidCredentialsException) { - Console.WriteLine("The server rejected the supplied credentials"); - } - finally { - // Release resources. - if(Client != null) - Client.Dispose(); - } - - - - - - Connects to the specified port on the specified host, optionally using the Secure Socket Layer - (SSL) security protocol. - - The DNS name of the server to which you intend to connect. - The port number of the server to which you intend to connect. - Set to true to use the Secure Socket Layer (SSL) security protocol. - Delegate used for verifying the remote Secure Sockets Layer (SSL) - certificate which is used for authentication. Can be null if not needed. - The port parameter is not between MinPort - and MaxPort. - The hostname parameter is null. - An unexpected response has been received - from the server upon connecting. - There was a failure writing to or reading from the - network. - An error occurred while accessing the socket used for - establishing the connection to the IMAP server. Use the ErrorCode property to obtain the - specific error code. - An authentication - error occured while trying to establish a secure connection. - - - - Determines whether the specified response is a valid IMAP OK response. - - A response string received from the server. - A tag if the response is associated with a command. - true if the response is a valid IMAP OK response; Otherwise false. - - - - Attempts to establish an authenticated session with the server using the specified - credentials. - - The username with which to login in to the IMAP server. - The password with which to log in to the IMAP server. - The requested method of authentication. Can be one of the values - of the AuthMethod enumeration. - The username parameter or the password parameter - is null. - There was a failure writing to or reading from the - network. - The server rejected the supplied - credentials. - The specified authentication method is not - supported by the server. - - This example demonstrates how to authenticate with an IMAP server once a connection - has been established. Notice that you can also connect and login in one step - using one of the overloaded constructors. - - // Connect to Gmail's IMAP server on port 993 using SSL. - ImapClient Client = new ImapClient("imap.gmail.com", 993, true); - - try { - Client.Login("My_Username", "My_Password", AuthMethod.Auto); - } - catch(InvalidCredentialsException) { - Console.WriteLine("The server rejected the supplied credentials."); - } - - Client.Dispose(); - - - - - - Performs authentication using the most secure authentication mechanism supported by the - server. - - The tag identifier to use for performing the authentication - commands. - The username with which to login in to the IMAP server. - The password with which to log in to the IMAP server. - The response sent by the server. - The order of preference of authentication types employed by this method is - Ntlm, Scram-Sha-1, Digest-Md5, followed by Cram-Md5 and finally plaintext Login as - a last resort. - - - - Performs an actual IMAP "LOGIN" command using the specified username and plain-text - password. - - The tag identifier to use for performing the authentication - commands. - The username with which to login in to the IMAP server. - The password with which to log in to the IMAP server. - The response sent by the server. - - - - Performs NTLM and Kerberos authentication via the Security Support Provider Interface (SSPI). - - The tag identifier to use for performing the authentication - commands. - The username with which to login in to the IMAP server. - The password with which to log in to the IMAP server. - True to authenticate using NTLM, otherwise GSSAPI (Kerberos) is - used. - The response sent by the server. - The specified authentication method is not - supported by the server. - - - - Performs authentication using a SASL authentication mechanism via IMAP's authenticate - command. - - The tag identifier to use for performing the authentication - commands. - The username with which to login in to the IMAP server. - The password with which to log in to the IMAP server. - The name of the SASL authentication mechanism to use. - The response sent by the server. - The authentication mechanism with the specified name could - not be found. - The specified authentication mechanism is not - supported by the server. - An unexpected response has been received from - the server. - - - - Logs an authenticated client out of the server. After the logout sequence has been completed, - the server closes the connection with the client. - - An unexpected response has been received from - the server during the logout sequence. - Calling this method in non-authenticated state has no effect. - There was a failure writing to or reading from the - network. - The ImapClient object has been disposed. - - - - Generates a unique identifier to prefix a command with, as is required by the IMAP protocol. - - A unique identifier string. - - - - Sends a command string to the server. This method blocks until the command has been - transmitted. - - The command to send to the server. The string is suffixed by CRLF - prior to sending. - - - - Sends a command string to the server and subsequently waits for a response, which is then - returned to the caller. This method blocks until the server response has been received. - - The command to send to the server. This is suffixed by CRLF prior - to sending. - Set to true to resolve possible literals returned by the - server (Refer to RFC 3501 Section 4.3 for details). - The response received by the server. - - - - Waits for a response from the server. This method blocks until a response has been received. - - Set to true to resolve possible literals returned by the - server (Refer to RFC 3501 Section 4.3 for details). - A response string from the server - The underlying socket is closed or there was a failure - reading from the network. - - - - Reads the specified amount of bytes from the server. This method blocks until the specified - amount of bytes has been read from the network stream. - - The number of bytes to read. - The read bytes as an ASCII-encoded string. - The underlying socket is closed or there was a failure - reading from the network. - - - - Returns an enumerable collection of capabilities the IMAP server supports. All strings in - the returned collection are guaranteed to be upper-case. - - An unexpected response has been received from - the server; The message property of the exception contains the error message returned by - the server. - There was a failure writing to or reading from the - network. - The ImapClient object has been disposed. - An enumerable collection of capabilities supported by the server. - This method may be called in non-authenticated state. - - - - Determines whether the specified capability is supported by the server. - - The IMAP capability to probe for (for example "IDLE"). - The capability parameter is null. - An unexpected response has been received from - the server; The message property of the exception contains the error message returned by - the server. - There was a failure writing to or reading from the - network. - The ImapClient object has been disposed. - true if the specified capability is supported by the server; Otherwise - false. - This method may be called in non-authenticated state. - - This example demonstrates how to connect and login to an IMAP server. - - // Connect to Gmail's IMAP server on port 993 using SSL. - ImapClient Client = null; - try { - Client = new ImapClient("imap.gmail.com", 993, "My_Username", - "My_Password", true, AuthMethod.Auto); - - // Check if the server supports IMAP IDLE. - if(Client.Supports("IDLE")) - Console.WriteLine("This server supports the IMAP4 IDLE specification"); - else - Console.WriteLine("This server does not support IMAP IDLE"); - } - catch(InvalidCredentialsException) { - Console.WriteLine("The server rejected the supplied credentials"); - } - finally { - // Release resources. - if(Client != null) - Client.Dispose(); - } - - - - - - Changes the name of the specified mailbox. - - The mailbox to rename. - The new name the mailbox will be renamed to. - The mailbox parameter or the - newName parameter is null. - The mailbox could not be renamed; The message - property of the exception contains the error message returned by the server. - There was a failure writing to or reading from the - network. - The ImapClient object has been disposed. - The method was called in non-authenticated - state, i.e. before logging in. - - - - Permanently removes the specified mailbox. - - The name of the mailbox to remove. - The mailbox parameter is null. - The specified mailbox could not be removed. - The message property of the exception contains the error message returned by the - server. - There was a failure writing to or reading from the - network. - The ImapClient object has been disposed. - The method was called in non-authenticated - state, i.e. before logging in. - - - - Creates a new mailbox with the specified name. - - The name of the mailbox to create. - The mailbox parameter is null. - The mailbox with the specified name could - not be created. The message property of the exception contains the error message returned - by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - Selects the specified mailbox so that the messages of the mailbox can be accessed. - - The mailbox to select. If this parameter is null, the - default mailbox is selected. - The specified mailbox could not be selected. - The message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - IMAP Idle must be paused or stopped before calling this method. - - - - Retrieves a list of all available and selectable mailboxes on the server. - - An enumerable collection of the names of all available and selectable - mailboxes. - The list of mailboxes could not be retrieved. - The message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - The mailbox name "INBOX" is a special name reserved to mean "the primary mailbox - for this user on this server". - - - - Permanently removes all messages that have the \Deleted flag set from the specified mailbox. - - The mailbox to remove all messages from that have the \Deleted flag - set. If this parameter is omitted, the value of the DefaultMailbox property is used to - determine the mailbox to operate on. - The expunge operation could not be completed. - The message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - - Retrieves status information (total number of messages, various attributes as well as quota - information) for the specified mailbox. - The mailbox to retrieve status information for. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - A MailboxInfo object containing status information for the mailbox. - The operation could not be completed because - the server returned an error. The message property of the exception contains the error message - returned by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - Not all IMAP servers support the retrieval of quota information. If it is not - possible to retrieve this information, the UsedStorage and FreeStorage properties of the - returned MailboxStatus instance are set to 0. - - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - // Get a list of all mailboxes. - foreach(string m in Client.ListMailboxes()) - { - MailboxInfo info = Client.GetMailboxInfo(m); - - Console.WriteLine(info.Name); - Console.WriteLine("Used storage: " + info.UsedStorage); - Console.WriteLine("Free storage: " + info.FreeStorage); - Console.WriteLine("Next UID: " + info.NextUID); - Console.WriteLine("Messages: " + info.Messages); - Console.WriteLine("Unread: " + info.Unread); - Console.WriteLine("Set Flags: "); - foreach (MailboxFlag f in info.Flags) - Console.Write(f.ToString() + ","); - Console.WriteLine(); - } - - Client.Dispose(); - - - - - - Retrieves the set of special-use flags associated with the specified mailbox. - - The mailbox to receive the special-use flags for. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - The operation could not be completed because - the server returned an error. The message property of the exception contains the error - message returned by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - An enumerable collection of special-use flags set on the specified - mailbox. - This feature is an optional extension to the IMAP protocol and as such some servers - may not report any flags at all. - - - - Retrieves status information (total number of messages, number of unread messages, etc.) for - the specified mailbox. - The mailbox to retrieve status information for. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - A MailboxStatus object containing status information for the mailbox. - The operation could not be completed because - the server returned an error. The message property of the exception contains the error - message returned by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - Searches the specified mailbox for messages that match the given search criteria. - - A search criteria expression; Only messages that match this - expression will be included in the result set returned by this method. - The mailbox that will be searched. If this parameter is omitted, the - value of the DefaultMailbox property is used to determine the mailbox to operate on. - The criteria parameter is null. - The search could not be completed. The message - property of the exception contains the error message returned by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - The search values contain characters beyond the - ASCII range and the server does not support handling non-ASCII strings. - An enumerable collection of unique identifiers (UIDs) which can be used with the - GetMessage family of methods to download the mail messages. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - - This example demonstrates how to use the search method to get a list of all - unread messages in the mailbox. - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_Username", - "My_Password", true, AuthMethod.Login); - - // Get a list of unique identifiers (UIDs) of all unread messages in the mailbox. - IEnumerable<uint> uids = Client.Search( SearchCondition.Unseen() ); - - // Fetch the messages and print out their subject lines. - foreach(uint uid in uids) { - MailMessage message = Client.GetMessage(uid); - - Console.WriteLine(message.Subject); - } - - // Free up any resources associated with this instance. - Client.Dispose(); - - - This example demonstrates how to perform a search using multiple search criteria. - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_Username", - "My_Password", true, AuthMethod.Login); - - // Get a list of unique identifiers (UIDs) of all messages sent before the 01.04.2012 - // and that are larger than 1 Kilobyte. - IEnumerable<uint> uids = Client.Search( SearchCondition.SentBefore(new DateTime(2012, 4, 1)) - .And( SearchCondition.Larger(1024) )); - - Console.WriteLine("Found " + uids.Count() + " messages"); - - // Free up any resources associated with this instance. - Client.Dispose(); - - - The following example demonstrates how to perform a search using characters outside - the ASCII range. - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_Username", - "My_Password", true, AuthMethod.Login); - - // Get a list of unique identifiers (UIDs) of all messages that have - // the Japanese expression "フーリエ変換" in their subject lines. - try { - IEnumerable<uint> uids = Client.Search(SearchCondition.Subject("フーリエ変換")); - - Console.WriteLine("Found " + uids.Count() + " messages"); - } catch(NotSupportedException e) { - // If this exception is thrown, the server does not support searching for characters - // outside the ASCII range. - Console.WriteLine("The server does not support searching for non-ASCII values."); - } - - // Free up any resources associated with this instance. - Client.Dispose(); - - - - - - Retrieves the mail message with the specified unique identifier (UID). - - The unique identifier of the mail message to retrieve. - Set this to true to set the \Seen flag for this message on the - server. - The mailbox the message will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - An initialized instance of the MailMessage class representing the fetched mail - message. - The mail message could not be fetched. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - // Find all messages in the mailbox that were sent from "John.Doe@gmail.com". - IEnumerable<uint> uids = Client.Search( SearchCondition.From("John.Doe@gmail.com") ); - - // Fetch the first message and print it's subject and body. - if(uids.Count() > 0) { - MailMessage msg = Client.GetMessage(uids.First()); - - Console.WriteLine("Subject: " + msg.Subject); - Console.WriteLine("Body: " + msg.Body); - } - - Client.Dispose(); - - - - - - Retrieves the mail message with the specified unique identifier (UID) using the specified - fetch-option. - - The unique identifier of the mail message to retrieve. - A value from the FetchOptions enumeration which allows - for fetching selective parts of a mail message. - Set this to true to set the \Seen flag for this message on the - server. - The mailbox the message will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - An initialized instance of the MailMessage class representing the fetched mail - message. - The mail message could not be fetched. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - If you need more fine-grained control over which parts of a mail message to fetch, - consider using one of the overloaded GetMessage methods. - - - - This example demonstrates how to fetch only the mail message headers of - a mail message, instead of the entire message. - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - // Find all messages in the mailbox that have "Hello" in the subject. - IEnumerable<uint> uids = Client.Search( SearchCondition.Subject("Hello") ); - - // Fetch the mail headers of the first message and print it's subject line. - if(uids.Count() > 0) { - MailMessage msg = Client.GetMessage(uids.First(), FetchOptions.HeadersOnly); - - Console.WriteLine("Subject: " + msg.Subject); - } - - Client.Dispose(); - - - - - - Retrieves the mail message with the specified unique identifier (UID) while only fetching - those parts of the message that satisfy the condition of the specified delegate. - - The unique identifier of the mail message to retrieve. - A delegate which will be invoked for every MIME body-part of the - mail message to determine whether the part should be fetched from the server or - skipped. - Set this to true to set the \Seen flag for this message on the - server. - The mailbox the message will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - An initialized instance of the MailMessage class representing the fetched mail - message. - The callback parameter is null. - The mail message could not be fetched. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - - This example demonstrates how to use the ExaminePartDelegate with the GetMessage - method to only download message parts with a size of 1 Megabyte or less. - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - // Find all messages in the inbox. - IEnumerable<uint> uids = Client.Search( SearchCondition.All() ); - - // Download each message but skip message parts that are larger than 1 Megabyte. - foreach(uint uid in uids) { - MailMessage msg = Client.GetMessage(uid, (Bodypart part) => { - if(part.Size > (1024 * 1024)) - return false; - else - return true; - } - ); - } - - Client.Dispose(); - - - - - - Retrieves the set of mail messages with the specified unique identifiers (UIDs). - - An enumerable collection of unique identifiers of the mail messages to - retrieve. - Set this to true to set the \Seen flag for the fetched messages on the - server. - The mailbox the messages will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - An enumerable collection of initialized instances of the MailMessage class - representing the fetched mail messages. - The uids parameter is null. - The mail messages could not be fetched. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - // Find all messages that have been sent since June the 1st. - IEnumerable<uint> uids = Client.Search( SearchCondition.SentSince( new DateTime(2012, 6, 1) ) ); - - // Fetch the messages and print out their subject lines. - IEnumerable<MailMessage> messages = Client.GetMessages( uids ); - - foreach(MailMessage m in messages) - Console.WriteLine("Subject: " + m.Subject); - - Client.Dispose(); - - - - - - Retrieves the set of mail messages with the specified unique identifiers (UIDs) while only - fetching those parts of the messages that satisfy the condition of the specified delegate. - - An enumerable collection of unique identifiers of the mail messages to - retrieve. - A delegate which will be invoked for every MIME body-part of each - mail message to determine whether the part should be fetched from the server or - skipped. - Set this to true to set the \Seen flag for the fetched messages on the - server. - The mailbox the messages will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - An enumerable collection of initialized instances of the MailMessage class - representing the fetched mail messages. - The uids parameter or the callback parameter is - null. - The mail messages could not be fetched. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - - - - - Retrieves the set of mail messages with the specified unique identifiers (UIDs) using the - specified fetch-option. - - An enumerable collection of unique identifiers of the mail messages to - retrieve. - A value from the FetchOptions enumeration which allows for fetching - selective parts of a mail message. - Set this to true to set the \Seen flag for the fetched messages on the - server. - The mailbox the messages will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - An enumerable collection of initialized instances of the MailMessage class - representing the fetched mail messages. - The uids parameter is null. - The mail messages could not be fetched. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - // Find all messages that have been sent since June the 1st. - IEnumerable<uint> uids = Client.Search( SearchCondition.SentSince( new DateTime(2012, 6, 1) ) ); - - // Retrieve the messages and print out their subject lines. If any of the messages are multipart - // messages, only those parts, that have a content-type of text will be fetched. - IEnumerable<MailMessage> messages = Client.GetMessages( uids, FetchOptions.TextOnly ); - - foreach(MailMessage m in messages) - Console.WriteLine("Subject: " + m.Subject); - - Client.Dispose(); - - - - - - Stores the specified mail message on the IMAP server. - - The mail message to store on the server. - Set this to true to set the \Seen flag for the message on the - server. - The mailbox the message will be stored in. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to store - the message in. - The unique identifier (UID) of the stored message. - The message parameter is null. - The mail message could not be stored. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - - - This example demonstrates how to store a mail message on an IMAP server. - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - MailMessage message = CreateSimpleMailMessage(); - uint uid = Client.StoreMessage(message); - - Console.WriteLine("The UID of the stored mail message is " + uid); - - Client.Dispose(); - - // ........... - - // This creates a simple mail message with a text/plain body and a PNG image - // as a file attachment. - // Consult the MSDN website for more details on the System.Net.Mail.Mailmessage class. - static MailMessage CreateSimpleMailMessage() { - MailMessage message = new MailMessage(); - - message.From = new MailAddress("someone@someplace.com"); - message.To.Add("john.doe@someplace.com"); - - message.Subject = "This is just a test!"; - message.Body = "This is the text/plain body. An additional HTML body " + - "can optionally be attached as an alternate view"; - - // Add the attachment. - Attachment attachment = new Attachment("some_image.png", "image/png"); - attachment.Name = "my_attached_image.png"; - message.Attachments.Add(attachment); - - return message; - } - - - - - - Stores the specified mail messages on the IMAP server. - - An enumerable collection of mail messages to store on the - server. - Set this to true to set the \Seen flag for each message on the - server. - The mailbox the messages will be stored in. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to store - the messages in. - An enumerable collection of unique identifiers (UID) representing the stored - messages on the server. - The messages parameter is null. - The mail messages could not be stored. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - - - - - Retrieves the mail header for the mail message with the specified unique identifier (UID). - - The UID of the mail message to retrieve the mail header for. - Set this to true to set the \Seen flag for the fetched messages on the - server. - The mailbox the messages will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - A string containing the raw mail header of the mail message with the specified - UID. - The mail header could not be fetched. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - Retrieves the body structure for the mail message with the specified unique identifier (UID). - - The UID of the mail message to retrieve the body structure for. - The mailbox the messages will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - A string containing the raw body structure of the mail message with the specified - UID. - The body structure could not be fetched. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - A body structure is a textual description of the layout of a mail message. It is - described in some detail in RFC 3501 under 7.4.2 FETCH response. - - - - Retrieves the MIME body-part with the specified part number of the multipart message with - the specified unique identifier (UID). - - The UID of the mail message to retrieve a MIME body part for. - The part number of the body part to fetch. - Set this to true to set the \Seen flag for the fetched messages on the - server. - The mailbox the messages will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - A string containing the specified body part of the mail message with the specified - UID. - The body part could not be fetched. The message - property of the exception contains the error message returned by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - Retrieves the raw MIME/RFC822 mail message data for the mail message with the specified UID. - - The UID of the mail message to retrieve as a MIME/RFC822 string. - Set this to true to set the \Seen flag for the fetched message on the - server. - The mailbox the message will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - A string containing the raw MIME/RFC822 data of the mail message with the - specified UID. - The mail message data could not be fetched. - The message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - Retrieves the highest UID in the specified mailbox. - - The mailbox to find the highest UID for. If this parameter is null, - the value of the DefaultMailbox property is used to determine the mailbox to operate - on. - The highest unique identifier value (UID) in the mailbox. - The UID could not be determined. The message - property of the exception contains the error message returned by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - The highest UID usually corresponds to the newest message in a mailbox. - - - - Copies the mail message with the specified UID to the specified destination mailbox. - - The UID of the mail message to copy. - The name of the mailbox to copy the message to. - The mailbox the message will be copied from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - The destination parameter is null. - The mail message could not be copied to the - specified destination. The message property of the exception contains the error message - returned by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - - Copies the mail messages with the specified UIDs to the specified destination mailbox. - - An enumerable collection of UIDs of the mail messages to copy. - The name of the mailbox to copy the messages to. - The mailbox the message will be copied from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - When copying many messages, this method is more efficient than calling - for each individual message. - The uids parameter or the destination parameter is - null. - The specified collection of UIDs is empty. - The mail messages could not be copied to the - specified destination. The message property of the exception contains the error message - returned by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - - Moves the mail message with the specified UID to the specified destination mailbox. - - The UID of the mail message to move. - The name of the mailbox to move the message into. - The mailbox the message will be moved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - The destination parameter is null. - The mail message could not be moved to the - specified destination. The message property of the exception contains the error message - returned by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - - - Moves the mail messages with the specified UIDs to the specified destination mailbox. - - An enumerable collection of UIDs of the mail messages to move. - The name of the mailbox to move the messages into. - The mailbox the messages will be moved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - When moving many messages, this method is more efficient than calling - for each individual message. - The uids parameter or the destination parameter is - null. - The mail messages could not be moved to the - specified destination. The message property of the exception contains the error message - returned by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - - - Deletes the mail message with the specified UID. - - The UID of the mail message to delete. - The mailbox the message will be deleted from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - The mail message could not be deleted. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - - Deletes the mail messages with the specified UIDs. - - An enumerable collection of UIDs of the mail messages to delete. - The mailbox the messages will be deleted from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - When deleting many messages, this method is more efficient than calling - for each individual message. - The uids parameter is null. - The specified collection of UIDs is empty. - The mail messages could not be deleted. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - - Retrieves the IMAP message flag attributes for the mail message with the specified unique - identifier (UID). - - The UID of the mail message to retrieve the flag attributes for. - The mailbox the message will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - An enumerable collection of message flags set for the message with the specified - UID. - The mail message flags could not be retrieved. - The message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - - - - Sets the IMAP message flag attributes for the mail message with the specified unique - identifier (UID). - - The UID of the mail message to set the flag attributes for. - The mailbox that contains the mail message. If this parameter is null, - the value of the DefaultMailbox property is used to determine the mailbox to operate - on. - One or multiple message flags from the MessageFlag enumeration. - The mail message flags could not be set. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - This method replaces the current flag attributes of the message with the specified - new flags. If you wish to retain the old attributes, use the - method instead. - - - - - - - Adds the specified set of IMAP message flags to the existing flag attributes of the mail - message with the specified unique identifier (UID). - - The UID of the mail message to add the flag attributes to. - The mailbox that contains the mail message. If this parameter is null, - the value of the DefaultMailbox property is used to determine the mailbox to operate - on. - One or multiple message flags from the MessageFlag enumeration. - The mail message flags could not be added. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - This method adds the specified set of flags to the existing set of flag attributes - of the message. If you wish to replace the old attributes, use the - method instead. - - - - - - - Removes the specified set of IMAP message flags from the existing flag attributes of the - mail message with the specified unique identifier (UID). - - The UID of the mail message to remove the flag attributes for. - The mailbox that contains the mail message. If this parameter is null, - the value of the DefaultMailbox property is used to determine the mailbox to operate - on. - One or multiple message flags from the MessageFlag enumeration. - The mail message flags could not be removed. - The message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - This method removes the specified set of flags from the existing set of flag - attributes of the message. If you wish to replace the old attributes, use the - method instead. - - - - - - - Starts receiving of IMAP IDLE notifications from the IMAP server. - - An unexpected program condition occured. - The IDLE operation could not be completed. The - message property of the exception contains the error message returned by the - server. - The server does not support the IMAP4 IDLE - command. - There was a failure writing to or reading from the - network. - The ImapClient object has been disposed. - The method was called in non-authenticated - state, i.e. before logging in. - Calling this method when already receiving idle notifications has no - effect. - - - - - - - Stops receiving IMAP IDLE notifications from the IMAP server. - - The IDLE operation could not be completed. The - message property of the exception contains the error message returned by the - server. - The server does not support the IMAP4 IDLE - command. - There was a failure writing to or reading from the - network. - The ImapClient object has been disposed. - The method was called in non-authenticated - state, i.e. before logging in. - Calling this method when not receiving idle notifications has no effect. - - - - - - Temporarily pauses receiving IMAP IDLE notifications from the IMAP server. - - The IDLE operation could not be completed. The - message property of the exception contains the error message returned by the - server. - The server does not support the IMAP4 IDLE - command. - There was a failure writing to or reading from the - network. - The ImapClient object has been disposed. - The method was called in non-authenticated - state, i.e. before logging in. - To resume receiving IDLE notifications ResumeIdling must be called. - - - - - - - Resumes receiving IMAP IDLE notifications from the IMAP server. - - An unexpected program condition occured. - The IDLE operation could not be completed. The - message property of the exception contains the error message returned by the - server. - The server does not support the IMAP4 IDLE - command. - There was a failure writing to or reading from the - network. - The ImapClient object has been disposed. - The method was called in non-authenticated - state, i.e. before logging in. - - - - - The main idle loop. Waits for incoming IMAP IDLE notifications and dispatches - them as events. This runs in its own thread whenever IMAP IDLE - notifications are being received. - - - - - Blocks on a queue and wakes up whenever a new notification is put into the queue. The - notification is then examined and dispatched as an event. - - - - - Issues a NOOP command to the IMAP server. Called in the context of a System.Timer event - when IDLE notifications are being received. - - This is needed by the IMAP IDLE mechanism to give the server an indication that the - connection is still active. - - - - - Retrieves IMAP QUOTA information for the specified mailbox. - - The mailbox to retrieve QUOTA information for. If this parameter is - null, the value of the DefaultMailbox property is used to determine the mailbox to operate - on. - An enumerable collection of MailboxQuota objects describing usage and limits of the - quota roots for the mailbox. - The quota operation could not be completed. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The IMAP4 QUOTA extension is not supported by - the server. - The method was called in non-authenticated - state, i.e. before logging in. - - - - Releases all resources used by the current instance of the ImapClient class. - - - - - Releases all resources used by the current instance of the ImapClient class, optionally - disposing of managed resource. - - true to dispose of managed resources, otherwise false. - - - - Asserts the instance has not been disposed of and is in a valid state. - - The ImapClient object has been - disposed. - The method was called in non-authenticated - state, i.e. before logging in. - - - - The default mailbox to operate on. - - The property is being set and the value is - null. - The property is being set and the value is the empty - string. - The default value for this property is "INBOX" which is a special name reserved - to mean "the primary mailbox for this user on this server". - - - - Determines whether the client is authenticated with the server. - - - - - The event that is raised when a new mail message has been received by the server. - - To probe a server for IMAP IDLE support, the - method can be used, specifying "IDLE" for the capability parameter. - - Please note that the event handler will be executed on a threadpool thread. - - - This example demonstrates how to receive IMAP IDLE notifications. - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - // Make sure our server actually supports IMAP IDLE. - if(!Client.Supports("IDLE")) - throw new Exception("This server does not support IMAP IDLE"); - - // Our event handler will be called whenever a new message is received - // by the server. - Client.NewMessage += new EventHandler<IdleMessageEventArgs>(OnNewMessage); - - // ......... - - Client.Dispose(); - - // ........ - - void OnNewMessage(object sender, IdleMessageEventArgs e) { - Console.WriteLine("Received a new message!"); - Console.WriteLine("Total number of messages in the mailbox: " + - e.MessageCount); - } - - - - - - The event that is raised when a message has been deleted on the server. - - To probe a server for IMAP IDLE support, the - method can be used, specifying "IDLE" for the capability parameter. - - Please note that the event handler will be executed on a threadpool thread. - - - This example demonstrates how to receive IMAP IDLE notifications. - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - // Make sure our server actually supports IMAP IDLE. - if(!Client.Supports("IDLE")) - throw new Exception("This server does not support IMAP IDLE"); - - // Our event handler will be called whenever a message is deleted on the server. - Client.MessageDeleted += new EventHandler<IdleMessageEventArgs>(OnMessageDeleted); - - // ......... - - // Don't forget to dispose the client once you're done with it. - Client.Dispose(); - - // ........ - - void OnMessageDeleted(object sender, IdleMessageEventArgs e) { - Console.WriteLine("A mail message was deleted on the server!"); - Console.WriteLine("Total number of mail messages in the mailbox: " + - e.MessageCount); - } - - - - - - The event that is raised when an I/O exception occurs in the idle-thread. - - - An I/O exception can occur if the underlying network connection has been reset or the - server unexpectedly closed the connection. - - - - - A delegate which is invoked during a call to GetMessage or GetMessages for every MIME part in - a multipart mail message. The delegate can examine the MIME body part and decide to either - include it in the returned mail message or dismiss it. - - A MIME body part of a mail message which consists of multiple parts. - true to include the body part in the returned MailMessage object, or false to skip - it. - - - - The exception that is thrown when an unexpected response is received from the server. - - - - - Initializes a new instance of the BadServerResponseException class - - - - - Initializes a new instance of the BadServerResponseException class with its message - string set to . - - A description of the error. The content of message is intended - to be understood by humans. - - - - Initializes a new instance of the BadServerResponseException class with its message - string set to and a reference to the inner exception that - is the cause of this exception. - - A description of the error. The content of message is intended - to be understood by humans. - The exception that is the cause of the current exception. - - - - Initializes a new instance of the BadServerResponseException class with the specified - serialization and context information. - - An object that holds the serialized object data about the exception - being thrown. - An object that contains contextual information about the source - or destination. - - - - The exception that is thrown when the supplied credentials were rejected by the server. - - - - - Initializes a new instance of the InvalidCredentialsException class - - - - - Initializes a new instance of the InvalidCredentialsException class with its message - string set to . - - A description of the error. The content of message is intended - to be understood by humans. - - - - Initializes a new instance of the InvalidCredentialsException class with its message - string set to and a reference to the inner exception that - is the cause of this exception. - - A description of the error. The content of message is intended - to be understood by humans. - The exception that is the cause of the current exception. - - - - Initializes a new instance of the InvalidCredentialsException class with the specified - serialization and context information. - - An object that holds the serialized object data about the exception - being thrown. - An object that contains contextual information about the source - or destination. - - - - The exception that is thrown when a client has not authenticated with the server and - attempts to call a method which can only be called when authenticated. - - - - - Initializes a new instance of the NotAuthenticatedException class - - - - - Initializes a new instance of the NotAuthenticatedException class with its message - string set to . - - A description of the error. The content of message is intended - to be understood by humans. - - - - Initializes a new instance of the NotAuthenticatedException class with its message - string set to and a reference to the inner exception that - is the cause of this exception. - - A description of the error. The content of message is intended - to be understood by humans. - The exception that is the cause of the current exception. - - - - Initializes a new instance of the NotAuthenticatedException class with the specified - serialization and context information. - - An object that holds the serialized object data about the exception - being thrown. - An object that contains contextual information about the source - or destination. - - - - Provides access to status information such as the total number of messages and quota - information for a mailbox. - - - The terms "mailbox" and "folder" can be used interchangeably and refer to the IMAP concept of - multiple server-side directories into which messages can be stored (such as "Inbox", - "Sent Items", "Trash", etc.). - - - - - Initializes a new instance of the MailboxInfo class with the specified values. - - The IMAP name of the mailbox. - The IMAP flags set on this mailbox. - The number of messages in the mailbox. - The number of unread messages in the mailbox. - The next unique identifier (UID) of the mailbox. - The amount of used storage of the mailbox, in bytes. - The amount of free storage of the mailbox, in bytes. - - - - Returns the name of the mailbox. - - The name of the mailbox - - - - The name of the mailbox. - - - - - An enumerable collection of flags set on the mailbox. - - - - - The total number of messages in the mailbox. - - - - - The number of unread (unseen) messages in the mailbox. - - - - - The next unique identifier value of the mailbox. - - - - - The amount of used storage in the mailbox, measured in bytes. - - Not all IMAP servers support the retrieval of quota information. If it is not - possible to retrieve the amount of used storage, this property will be 0. - - - - - The amount of free storage in the mailbox, measured in bytes. - - Not all IMAP servers support the retrieval of quota information. If it is not - possible to retrieve the amount of free storage, this property will be 0. - - - - - Defines possible attributes for mailboxes. - - - - An IMAP mailbox can have a number of flags (read: attributes) set on it, indicating its - designated purpose (such as "Spam" or "Drafts"). - - - This is especially convenient when dealing with international mailbox names, because, by - examining the associated flags, the mailbox purpose can be determined, even if the mailbox - name provides no useful indication. - - - Unfortunately, as with many things IMAP, reporting the flags described here is an optional - extension (XLIST) to the IMAP protocol and as such may or may not be supported by an IMAP - server. - - - - - - The mailbox presents a view on all messages in the user's message store. - - - - - The mailbox is used to archive messages. The meaning of an "archival" mailbox is server - dependent. - - - - - The mailbox is used to hold draft messages, typically these are messages that are being - composed but have not yet been sent. - - - - - The mailbox is used to hold copies of messages that have been sent. - - - - - The mailbox is where messages deemed to be junk mail (spam) are held. - - - - - The mailbox is used to hold messages that have been deleted or marked for deletion. - - - - - Represents an IMAP QUOTA entry for a resource which typically consists of a resource name, - the current usage of the resource, and the resource limit. - - - - - Initializes a new instance of the MailboxQuota class with the specified values. - - The name of the resource this MailboxQuota instance describes. - The current usage of the resource in units of 1024 bytes. - The limit of the resource in units of 1024 bytes. - - - - The name of the resource this MailboxQuota instance describes. - - - - - The current usage of the resource this MailboxQuota instance describes, in bytes. - - - - - The limit of the resource this MailboxQuota instance describes, in bytes. - - - - - Represents the status information of a mailbox which can be constructed from the server - response to a STATUS command. - - - - - Initializes a new MailboxStatus instance with the specified number of total and unread - messages. - - The total number of messages in the mailbox. - The number of unread (unseen) messages in the mailbox. - The next unique identifier value of the mailbox - - - - The next unique identifier value of the mailbox. - - - - - The total number of messages in the mailbox. - - - - - The number of unread (unseen) messages in the mailbox. - - - - - Adds extension methods to the MailMessage class of the .NET Framework. - - - Most of the methods are only used internally and are not visible outside of the - S22.Imap assembly. - - - - - Returns the date and time the mail message was composed. - - The MailMessage instance to return the date and time for. - The date and time the mail message was composed, or null if the mail message - does not contain any date information. - - - - Constructs a textual representation of a mail message from the specified MailMessage - instance compliant with the RFC822 and MIME standards. - - The MailMessage instance to construct the textual representation - from. - An RFC822/MIME-compliant string representing the specified mail message. - The From property is null or has not been - properly initialized. - - - - Builds a RFC822/MIME-compliant mail header from the specified MailMessage instance and - returns it as a NameValueCollection. - - The MailMessage instance to build the header from. - A NameValueCollection representing the RFC822/MIME mail header fields. - - - - A map for mapping the values of the MailPriority enumeration to their corresponding MIME - priority values as defined in RFC2156. - - - - - A map for mapping the values of the MailPriority enumeration to their corresponding MIME - importance values as defined in RFC2156. - - - - - Takes a unicode string and encodes it using Q-encoding. - - The string to encode. - The input string encoded as Q-encoded string containing only ASCII - characters. - - - - Takes a unicode string and encodes it using Base64-encoding. - - The string to encode. - The input string encoded as Base64-encoded string containing only ASCII - characters. - - - - Creates an address string from the specified MailAddress instance in compliance with the - address specification as outlined in RFC2822 under section 3.4 - - The MailAddress instance to create the address string from. - An address string as is used in RFC822 mail headers. - - - - Generates a unique sequence of characters for indicating a boundary between parts in a - multipart message. - - A unique content boundary string. - - - - Builds an RFC822/MIME-compliant mail body from the specified MailMessage instance and - returns it as a formatted string. - - The MailMessage instance to build the mail body from. - The RFC822/MIME mail header to use for constructing the mail - body. - An RFC822/MIME-compliant mail body as a string. - According to RFC2822 each line of a mail message should at max be 78 characters in - length excluding carriage return and newline characters. This method accounts for that and - ensures line breaks are inserted to meet this requirement. - - - - Adds a body part to the specified Stringbuilder object composed from the Body and - BodyEncoding properties of the MailMessage class. - - The Stringbuilder to append the body part to. - The MailMessage instance to build the body part from. - The RFC822/MIME mail header to use for constructing the mail body. - Set to true to append body headers before adding the actual body - part content. - - - - Creates a MIME body part from an entry of the AlternateView or Attachments collection of a - MailMessage instance and appends it to the specified Stringbuilder instance. - - The Stringbuilder instance to append the body part to. - An entry from either the AlternateView or the Attachments collection of - a MailMessage instance. - - - - Creates a nested multipart/alternative part which contains all entries from the - AlternateViews collection of the specified MailMessage instance as well as the body part - for the Body and BodyEncoding properties of the specified MailMessage instance. - - The StringBuilder instance to append to. - The MailMessage instance whose AlternateView collection will be added to the - nested multipart/alternative part. - The RFC822/MIME mail header to use for constructing the mail body. - This is used if the MailMessage instance contains both alternative views and - attachments. In this case the created RFC822/MIME mail message will contain nested body - parts. - - - - Creates a nested multipart/mixed part which contains all entries from the Attachments - collection of the specified MailMessage instance. - - The StringBuilder instance to append to. - The MailMessage instance whose Attachments collection will be added to the - nested multipart/mixed part. - This is used if the MailMessage instance contains both alternative views and - attachments. In this case the created RFC822/MIME mail message will contain nested body - parts. - - - - A helper class for reading mail message data and building a MailMessage instance out of it. - - - - - Creates a new empty instance of the MailMessage class from a string containing a raw mail - message header. - - The mail header to create the MailMessage instance from. - A MailMessage instance with initialized Header fields but without any - content. - - - - Creates a new instance of the MailMessage class from a string containing raw RFC822/MIME - mail message data. - - The mail message data to create the MailMessage instance from. - An initialized instance of the MailMessage class. - This is used when fetching entire messages instead of the partial-fetch mechanism - because it saves redundant round-trips to the server. - - - - Parses the mail header of a mail message and returns it as a NameValueCollection. - - The mail header to parse. - A NameValueCollection containing the header fields as keys with their respective - values as values. - - - - Strips RFC822/MIME comments from the specified string. - - The string to strip comments from. - A new string stripped of any comments. - - - - Parses a MIME header field which can contain multiple 'parameter = value' - pairs (such as Content-Type: text/html; charset=iso-8859-1). - - The header field to parse. - A NameValueCollection containing the parameter names as keys with the respective - parameter values as values. - The value of the actual field disregarding the 'parameter = value' pairs is stored - in the collection under the key "value" (in the above example of Content-Type, this would - be "text/html"). - - - - Parses a mail header address-list field such as To, Cc and Bcc which can contain multiple - email addresses. - - The address-list field to parse - An array of MailAddress objects representing the parsed mail addresses. - - - - Splits the specified address-list into individual parts consisting of a mail address and - optionally a display-name. - - The address-list to split into parts. - An enumerable collection of parts. - - - - Parses a mail message identifier from a string. - - The field to parse the message id from - The field argument does not contain a valid message - identifier. - The parsed message id. - A message identifier (msg-id) is a globally unique identifier for a - message. - - - - Parses the priority of a mail message which can be specified as part of the header - information. - - The mail header priority value. The value can be null in which case - a "normal priority" is returned. - A value from the MailPriority enumeration corresponding to the specified mail - priority. If the passed priority value is null or invalid, a normal priority is assumed and - MailPriority.Normal is returned. - - - - Sets the address fields (From, To, CC, etc.) of a MailMessage object using the specified - mail message header information. - - The MailMessage instance to operate on. - A collection of mail and MIME headers. - - - - Adds a body part to an existing MailMessage instance. - - Extension method for the MailMessage class. - The body part to add to the MailMessage instance. - The content of the body part. - - - - Creates an instance of the Attachment class used by the MailMessage class to store mail - message attachments. - - The MIME body part to create the attachment from. - An array of bytes composing the content of the attachment. - An initialized instance of the Attachment class. - - - - Creates an instance of the AlternateView class used by the MailMessage class to store - alternate views of the mail message's content. - - The MIME body part to create the alternate view from. - An array of bytes composing the content of the alternate view. - An initialized instance of the AlternateView class. - - - - Parses the body part of a MIME/RFC822 mail message. - - The body of the mail message. - The header of the mail message whose body will be parsed. - An array of initialized MIMEPart instances representing the body parts of the mail - message. - - - - Parses the body of a multipart MIME mail message. - - An instance of the StringReader class initialized with a string - containing the body of the mail message. - The boundary value as is present as part of the Content-Type header - field in multipart mail messages. - An array of initialized MIMEPart instances representing the various parts of the - MIME mail message. - - - - Glue method to create a bodypart from a MIMEPart instance. - - The MIMEPart instance to create the bodypart instance from. - An initialized instance of the Bodypart class. - - - - Defines possible attributes for mail messages on an IMAP server. - - - - - Indicates that the message has been read. - - - - - Indicates that the message has been answered. - - - - - Indicates that the message is "flagged" for urgent/special attention. - - - - - Indicates that the message has been marked as "deleted" and will be removed upon the next - call to the Expunge method. - - - - - Indicates that the message has not completed composition and is marked as a draft. - - - - - Indicates that the message has recently arrived in the mailbox. - - - - - Represents a part of a MIME multi-part message. Each part consists of its own content header - and a content body. - - - - - A collection containing the content header information as key-value pairs. - - - - - A string containing the content body of the part. - - - - - A thread-safe Queue. - - - - - Adds an object to the end of the queue. - - The object to add to the queue. - - - - Removes and returns the object at the beginning of the queue. If the queue is empty, the - method blocks the calling thread until an object is put into the queue by another thread. - - The object that was removed from the beginning of the queue. - - - - Adds extension methods to the BinaryReader class to simplify the - deserialization of NTLM messages. - - - - - Reads an ASCII-string of the specified length from this instance. - - Extension method for the BinaryReader class. - The number of bytes to read from the underlying - stream. - A string decoded from the bytes read from the underlying - stream using the ASCII character set. - - - - The NTLM flags which are contained in a bitfield within the header of - an NTLM message. - - - - - Indicates that Unicode strings are supported for use in security - buffer data. - - - - - Indicates that OEM strings are supported for use in security - buffer data. - - - - - Requests that the server's authentication realm be included in - the Type 2 message. - - - - - Specifies that authenticated communication between the client and - server should carry a digital signature (message integrity). - - - - - Specifies that authenticated communication between the client and - server should be encrypted (message confidentiality). - - - - - Indicates that datagram authentication is being used. - - - - - Indicates that the Lan Manager Session Key should be used for signing - and sealing authenticated communications. - - - - - This flag's usage has not been identified. - - - - - Indicates that NTLM authentication is being used. - - - - - Sent by the client in the Type 3 message to indicate that an anonymous - context has been established. This also affects the response fields. - - - - - Sent by the client in the Type 1 message to indicate that the name of - the domain in which the client workstation has membership is included - in the message. This is used by the server to determine whether the - client is eligible for local authentication. - - - - - Sent by the client in the Type 1 message to indicate that the client - workstation's name is included in the message. This is used by the - server to determine whether the client is eligible for local - authentication. - - - - - Sent by the server to indicate that the server and client are on the - same machine. Implies that the client may use the established local - credentials for authentication instead of calculating a response to - the challenge. - - - - - Indicates that authenticated communication between the client and - server should be signed with a "dummy" signature. - - - - - Sent by the server in the Type 2 message to indicate that the target - authentication realm is a domain. - - - - - Sent by the server in the Type 2 message to indicate that the target - authentication realm is a server. - - - - - Sent by the server in the Type 2 message to indicate that the target - authentication realm is a share. Presumably, this is for share-level - authentication. Usage is unclear. - - - - - Indicates that the NTLM2 signing and sealing scheme should be used for - protecting authenticated communications. Note that this refers to a - particular session security scheme, and is not related to the use of - NTLMv2 authentication. This flag can, however, have an effect on the - response calculations. - - - - - This flag's usage has not been identified. - - - - - This flag's usage has not been identified. - - - - - This flag's usage has not been identified. - - - - - Sent by the server in the Type 2 message to indicate that it is including - a Target Information block in the message. The Target Information block - is used in the calculation of the NTLMv2 response. - - - - - Indicates that 128-bit encryption is supported. - - - - - Indicates that the client will provide an encrypted master key in the - "Session Key" field of the Type 3 message. - - - - - Indicates that 56-bit encryption is supported. - - - - - Represents the data contained in the target information block of an - NTLM type 2 message. - - - - - The server name. - - - - - The domain name. - - - - - The fully-qualified DNS host name. - - - - - The fully-qualified DNS domain name. - - - - - Describes the different versions of the Type 2 message that have - been observed. - - - - - The version is unknown. - - - - - This form is seen in older Win9x-based systems. - - - - - This form is seen in most out-of-box shipping versions of Windows. - - - - - This form was introduced in a relatively recent Service Pack, and - is seen on currently-patched versions of Windows 2000, Windows XP, - and Windows 2003. - - - - - Indicates the type of data in Type 2 target information blocks. - - - - - Signals the end of the target information block. - - - - - The data in the information block contains the server name. - - - - - The data in the information block contains the domain name. - - - - - The data in the information block contains the DNS hostname. - - - - - The data in the information block contans the DNS domain name. - - - - - Computes the MD4 hash value for the input data. - Courtesy of Keith Wood. - - - - - Describes the different types of NTLM messages. - - - - - An NTLM type 1 message is the initial client response to the - server. - - - - - An NTLM type 2 message is the challenge sent by the server in - response to an NTLM type 1 message. - - - - - An NTLM type 3 message is the challenge response sent by the client - in response to an NTLM type 2 message. - - - - - Indicates the version and build number of the operating system. - - - - - Default constructor. - - - - - Creates a new instance of the OSVersion class using the specified - values. - - The major version of the operating - system. - The minor version of the operating - system. - The build number of the operating systen. - - - - Serializes this instance of the OSVersion class to an array of - bytes. - - An array of bytes representing this instance of the OSVersion - class. - - - - The major version number of the operating system. - - - - - The minor version number of the operating system. - - - - - The build number of the operating system. - - - - - Contains methods for calculating the various Type 3 challenge - responses. - - - - - Computes the LM-response to the challenge sent as part of an - NTLM type 2 message. - - The challenge sent by the server. - The user account password. - An array of bytes representing the response to the - specified challenge. - - - - Computes the NTLM-response to the challenge sent as part of an - NTLM type 2 message. - - The challenge sent by the server. - The user account password. - An array of bytes representing the response to the - specified challenge. - - - - Computes the NTLMv2-response to the challenge sent as part of an - NTLM type 2 message. - - The name of the authentication target. - The user account name to authenticate with. - The user account password. - The target information block from - the NTLM type 2 message. - The challenge sent by the server. - A random 8-byte client nonce. - An array of bytes representing the response to the - specified challenge. - - - - Computes the LMv2-response to the challenge sent as part of an - NTLM type 2 message. - - The name of the authentication target. - The user account to authenticate with. - The user account password. - The challenge sent by the server. - A random 8-byte client nonce. - An array of bytes representing the response to the - specified challenge. - - - - Creates the LM Hash of the specified password. - - The password to create the LM Hash of. - The LM Hash of the given password, used in the calculation - of the LM Response. - Thrown if the password argument - is null. - - - - Creates a DES encryption key from the specified key material. - - The key material to create the DES encryption - key from. - An offset into the byte array at which to - extract the key material from. - A 56-bit DES encryption key as an array of bytes. - - - - Applies odd parity to the specified byte array. - - The byte array to apply odd parity to. - A reference to the byte array. - - - - Creates the LM Response from the specified hash and Type 2 challenge. - - An LM or NTLM hash. - The server challenge from the Type 2 - message. - The challenge response as an array of bytes. - Thrown if the hash or the - challenge parameter is null. - - - - Creates the NTLM Hash of the specified password. - - The password to create the NTLM hash of. - The NTLM hash for the specified password. - Thrown if the password - parameter is null. - - - - Creates the NTLMv2 Hash of the specified target, username - and password values. - - The name of the authentication target as is - specified in the target name field of the NTLM type 3 message. - The user account name. - The password for the user account. - The NTLMv2 hash for the specified input values. - Thrown if the username or - the password parameter is null. - - - - Returns the current time as the number of tenths of a microsecond - since January 1, 1601. - - The current time as the number of tenths of a microsecond - since January 1, 1601. - - - - Creates the "blob" data block which is part of the NTLMv2 challenge - response. - - The target information block from - the NTLM type 2 message. - A random 8-byte client nonce. - The blob, used in the calculation of the NTLMv2 Response. - - - - Creates the LMv2 Response from the given NTLMv2 hash, client data, and - Type 2 challenge. - - The NTLMv2 Hash. - The client data (blob or client nonce). - The server challenge from the Type 2 message. - The response which is either for NTLMv2 or LMv2, depending - on the client data. - - - - Represents an NTLM security buffer, which is a structure used to point - to a buffer of binary data within an NTLM message. - - - - - Creates a new instance of the SecurityBuffer class using the specified - values. - - The length of the buffer described by this instance - of the SecurityBuffer class. - The offset at which the buffer starts, in bytes. - Thrown if the length value exceeds - the maximum value allowed. The security buffer structure stores the - length value as a 2-byte short value. - - - - Creates a new instance of the SecurityBuffer class using the specified - values. - - The data of the buffer described by this instance - of the SecurityBuffer class. - The offset at which the buffer starts, in bytes. - Thrown if the length of the data - buffer exceeds the maximum value allowed. The security buffer structure - stores the buffer length value as a 2-byte short value. - - - - Serializes this instance of the SecurityBuffer into an array of bytes. - - A byte array representing this instance of the SecurityBuffer - class. - - - - The length of the buffer content in bytes (may be zero). - - - - - The allocated space for the buffer in bytes (typically the same as - the length). - - - - - The offset from the beginning of the NTLM message to the start of - the buffer, in bytes. - - - - - Represents an NTLM Type 1 Message. - - - - - The NTLM message signature which is always "NTLMSSP". - - - - - The NTML message type which is always 1 for an NTLM Type 1 message. - - - - - Creates a new instance of the Type1Message class using the specified - domain and workstation names. - - The domain in which the client's workstation has - membership. - The client's workstation name. - Thrown if the domain or the - workstation parameter is null. - Thrown if the domain - or the workstation name exceeds the maximum allowed string - length. - The domain as well as the workstation name is restricted - to ASCII characters and must not be longer than 65536 characters. - - - - - Serializes this instance of the Type1 class to an array of bytes. - - An array of bytes representing this instance of the Type1 - class. - - - - The NTLM flags set on this instance. - - - - - The supplied domain name as an array of bytes in the ASCII - range. - - - - - The offset within the message where the domain name data starts. - - - - - The supplied workstation name as an array of bytes in the - ASCII range. - - - - - The offset within the message where the workstation name data starts. - - - - - The length of the supplied workstation name as a 16-bit short value. - - - - - Contains information about the client's OS version. - - - - - Represents an NTLM Type 2 Message. - - - - - The NTLM message signature which is always "NTLMSSP". - - - - - The NTML message type which is always 2 for an NTLM Type 2 message. - - - - - Private constructor. - - - - - Deserializes a Type 2 message instance from the specified buffer - of bytes. - - The buffer containing a sequence of bytes - representing an NTLM Type 2 message. - An initialized instance of the Type2 class. - Thrown if an error occurs - during deserialization of the Type 2 message. - - - - Determines the version of an NTLM type 2 message. - - The target offset field of the NTLM - type 2 message. - A value from the Type2Version enumeration. - - - - Reads the OS information data present in version 3 of an NTLM - type 2 message from the specified BinaryReader. - - The BinaryReader instance to read from. - An initialized instance of the OSVersion class. - - - - Reads the target information data present in version 2 and 3 of - an NTLM type 2 message from the specified BinaryReader. - - The BinaryReader instance to read from. - An initialized instance of the Type2TargetInformation - class. - - - - Retrieves the target name from the specified byte array. - - A byte array containing the target name. - If true the target name will be decoded - using UTF-16 unicode encoding. - - - - - The challenge is an 8-byte block of random data. - - - - - The target name of the authentication target. - - - - - The NTLM flags set on this message. - - - - - The SSPI context handle when a local call is being made, - otherwise null. - - - - - Contains the data present in the OS version structure. - - - - - The version of this Type 2 message instance. - - - - - Contains the data present in the target information block. - - - - - Contains the raw data present in the target information block. - - - - - Represents an NTLM Type 3 Message. - - - - - The NTLM message signature which is always "NTLMSSP". - - - - - The NTML message type which is always 3 for an NTLM Type 3 message. - - - - - Creates a new instance of an NTLM type 3 message using the specified - values. - - The Windows account name to use for - authentication. - The Windows account password to use for - authentication. - The challenge received from the server as part - of the NTLM type 2 message. - The client's workstation name. - Set to true to send an NTLMv2 challenge - response. - The authentication realm in which the - authenticating account has membership. - The target information block from - the NTLM type 2 message. - The target name is a domain name for domain accounts, or - a server name for local machine accounts. All security buffers will - be encoded as Unicode. - - - - Creates a new instance of an NTLM type 3 message using the specified - values. - - The Windows account name to use for - authentication. - The Windows account password to use for - authentication. - The challenge received from the server as part - of the NTLM type 2 message. - Set this to true, if Unicode encoding has been - negotiated between client and server. - The client's workstation name. - Set to true to send an NTLMv2 challenge - response. - The authentication realm in which the - authenticating account has membership. - The target information block from - the NTLM type 2 message. - The target name is a domain name for domain accounts, or - a server name for local machine accounts. - Thrown if the username, password - or challenge parameters are null. - - - - Serializes this instance of the Type3 class to an array of bytes. - - An array of bytes representing this instance of the Type3 - class. - - - - Returns a random 8-byte cnonce value. - - A random 8-byte cnonce value. - - - - The NTLM flags set on this instance. - - - - - The "Lan Manager" challenge response. - - - - - The offset at which the LM challenge response data starts. - - - - - The NTLM challenge response. - - - - - The offset at which the NTLM challenge response data starts. - - - - - The authentication realm in which the authenticating account - has membership. - - - - - The offset at which the target name data starts. - - - - - The authenticating account name. - - - - - The offset at which the username data starts. - - - - - The client workstation's name. - - - - - The offset at which the client workstation's name data starts. - - - - - The session key value which is used by the session security mechanism - during key exchange. - - - - - The offset at which the session key data starts. - - - - - Contains the data present in the OS version structure. - - - - - The encoding used for transmitting the contents of the various - security buffers. - - - - - Implements the Sasl Cram-Md5 authentication method as described in - RFC 2195. - - - - - Private constructor for use with Sasl.SaslFactory. - - - - - Creates and initializes a new instance of the SaslCramMd5 class - using the specified username and password. - - The username to authenticate with. - The plaintext password to authenticate - with. - Thrown if the username - or the password parameter is null. - Thrown if the username - parameter is empty. - - - - Computes the client response to the specified Cram-Md5 challenge. - - The challenge sent by the server - The response to the Cram-Md5 challenge. - Thrown if the response could not - be computed. - - - - True if the authentication exchange between client and server - has been completed. - - - - - The IANA name for the Cram-Md5 authentication mechanism as described - in RFC 2195. - - - - - The username to authenticate with. - - - - - The password to authenticate with. - - - - - Implements the Sasl Cram-Md5 authentication method as described in - RFC 2831. - - - - - The client nonce value used during authentication. - - - - - Cram-Md5 involves several steps. - - - - - Private constructor for use with Sasl.SaslFactory. - - - - - Internal constructor used for unit testing. - - The username to authenticate with. - The plaintext password to authenticate - with. - The client nonce value to use. - Thrown if the username - or the password parameter is null. - Thrown if the username - parameter is empty. - - - - Creates and initializes a new instance of the SaslDigestMd5 class - using the specified username and password. - - The username to authenticate with. - The plaintext password to authenticate - with. - Thrown if the username - or the password parameter is null. - Thrown if the username - parameter is empty. - - - - Computes the client response to the specified Digest-Md5 challenge. - - The challenge sent by the server - The response to the Digest-Md5 challenge. - Thrown if the response could not - be computed. - - - - Parses the challenge string sent by the server in response to a Digest-Md5 - authentication request. - - The challenge sent by the server as part of - "Step One" of the Digest-Md5 authentication mechanism. - An initialized NameValueCollection instance made up of the - attribute/value pairs contained in the challenge. - Thrown if the challenge parameter - is null. - Refer to RFC 2831 section 2.1.1 for a detailed description of the - format of the challenge sent by the server. - - - - Computes the "response-value" hex-string which is part of the - Digest-MD5 challenge-response. - - A collection containing the attributes - and values of the challenge sent by the server. - The cnonce value to use for computing - the response-value. - The "digest-uri" string to use for - computing the response-value. - The username to use for computing the - response-value. - The password to use for computing the - response-value. - A string containing a hash-value which is part of the - response sent by the client. - Refer to RFC 2831, section 2.1.2.1 for a detailed - description of the computation of the response-value. - - - - Calculates the MD5 hash value for the specified string. - - The string to calculate the MD5 hash value for. - The encoding to employ for encoding the - characters in the specified string into a sequence of bytes for - which the MD5 hash will be calculated. - An MD5 hash as a 32-character hex-string. - Thrown if the input string - is null. - - - - Encloses the specified string in double-quotes. - - The string to enclose in double-quote characters. - The enclosed string. - - - - Generates a random cnonce-value which is a "client-specified data string - which must be different each time a digest-response is sent". - - A random "cnonce-value" string. - - - - True if the authentication exchange between client and server - has been completed. - - - - - The IANA name for the Digest-Md5 authentication mechanism as described - in RFC 2195. - - - - - The username to authenticate with. - - - - - The password to authenticate with. - - - - - Implements the Sasl NTLM authentication method which is used in various - Microsoft network protocol implementations. - - Implemented with the help of the excellent documentation on - NTLM composed by Eric Glass. - - - - NTLM involves several steps. - - - - - Private constructor for use with Sasl.SaslFactory. - - - - - Creates and initializes a new instance of the SaslNtlm class - using the specified username and password. - - The username to authenticate with. - The plaintext password to authenticate - with. - Thrown if the username - or the password parameter is null. - Thrown if the username - parameter is empty. - - - - Computes the client response to the specified NTLM challenge. - - The challenge sent by the server - The response to the NTLM challenge. - Thrown if the response could not - be computed. - - - - Computes the initial client response to an NTLM challenge. - - The challenge sent by the server. Since - NTLM expects an initial client response, this will usually be - empty. - The initial response to the NTLM challenge. - Thrown if the response could not - be computed. - - - - Computes the actual challenge response to an NTLM challenge - which is sent as part of an NTLM type 2 message. - - The challenge sent by the server. - The response to the NTLM challenge. - Thrown if the challenge - response could not be computed. - - - - True if the authentication exchange between client and server - has been completed. - - - - - The IANA name for the NTLM authentication mechanism. - - - - - The username to authenticate with. - - - - - The password to authenticate with. - - - - - Implements the Sasl NTLMv2 authentication method which addresses - some of the security issues present in NTLM version 1. - - - - - Private constructor for use with Sasl.SaslFactory. - - - - - Creates and initializes a new instance of the SaslNtlmv2 class - using the specified username and password. - - The username to authenticate with. - The plaintext password to authenticate - with. - Thrown if the username - or the password parameter is null. - Thrown if the username - parameter is empty. - - - - Computes the client response to the specified NTLM challenge. - - The challenge sent by the server - The response to the NTLM challenge. - Thrown if the response could not - be computed. - - - - Computes the actual challenge response to an NTLM challenge - which is sent as part of an NTLM type 2 message. - - The challenge sent by the server. - The response to the NTLM challenge. - Thrown if the challenge - response could not be computed. - - - - Implements the Sasl OAuth authentication method. - - - - - Private constructor for use with Sasl.SaslFactory. - - - - - Creates and initializes a new instance of the SaslOAuth class - using the specified username and password. - - The username to authenticate with. - Thrown if the accessToken - parameter is null. - Thrown if the accessToken - parameter is empty. - - - - Computes the client response for a OAuth challenge. - - The challenge sent by the server. - The response to the OAuth challenge. - Thrown if the response could not - be computed. - - - - True if the authentication exchange between client and server - has been completed. - - - - - The IANA name for the OAuth authentication mechanism. - - - - - The access token to authenticate with. - - - - - Implements the Sasl OAuth 2.0 authentication method. - - - - - The server sends an error response in case authentication fails - which must be acknowledged. - - - - - Private constructor for use with Sasl.SaslFactory. - - - - - Creates and initializes a new instance of the SaslOAuth class - using the specified username and password. - - The username to authenticate with. - The username to authenticate with. - Thrown if the username - or the accessToken parameter is null. - Thrown if the username or - the accessToken parameter is empty. - - - - Computes the client response to an XOAUTH2 challenge. - - The challenge sent by the server. - The response to the OAuth2 challenge. - Thrown if the response could not - be computed. - - - - Computes the initial client response to an XOAUTH2 challenge. - - The challenge sent by the server. - The response to the OAuth2 challenge. - Thrown if the response could not - be computed. - - - - True if the authentication exchange between client and server - has been completed. - - - - - The IANA name for the OAuth 2.0 authentication mechanism. - - - - - The username to authenticate with. - - - - - The access token to authenticate with. - - - - - Implements the Sasl Plain authentication method as described in - RFC 4616. - - - - - Private constructor for use with Sasl.SaslFactory. - - - - - Creates and initializes a new instance of the SaslPlain class - using the specified username and password. - - The username to authenticate with. - The plaintext password to authenticate - with. - Thrown if the username - or the password parameter is null. - Thrown if the username - parameter is empty. - - - - Computes the client response for a plain-challenge. - - The challenge sent by the server. For the - "plain" mechanism this will usually be empty. - The response for the "plain"-challenge. - Thrown if the response could not - be computed. - - - - True if the authentication exchange between client and server - has been completed. - - - - - The IANA name for the Plain authentication mechanism as described - in RFC 4616. - - - - - The username to authenticate with. - - - - - The plain-text password to authenticate with. - - - - - The exception is thrown when a Sasl-related error or unexpected condition occurs. - - - - - Initializes a new instance of the SaslException class - - - - - Initializes a new instance of the SaslException class with its message - string set to . - - A description of the error. The content of message is intended - to be understood by humans. - - - - Initializes a new instance of the SaslException class with its message - string set to and a reference to the inner exception that - is the cause of this exception. - - A description of the error. The content of message is intended - to be understood by humans. - The exception that is the cause of the current exception. - - - - Initializes a new instance of the SaslException class with the specified - serialization and context information. - - An object that holds the serialized object data about the exception - being thrown. - An object that contains contextual information about the source - or destination. - - - - A factory class for producing instances of Sasl mechanisms. - - - - - Creates an instance of the Sasl mechanism with the specified - name. - - The name of the Sasl mechanism of which an - instance will be created. - An instance of the Sasl mechanism with the specified name. - Thrown if the name parameter - is null. - Thrown if the Sasl mechanism with the - specified name is not registered with Sasl.SaslFactory. - - - - Registers a Sasl mechanism with the factory using the specified name. - - The name with which to register the Sasl mechanism - with the factory class. - The type of the class implementing the Sasl mechanism. - The implementing class must be a subclass of Sasl.SaslMechanism. - Thrown if the name or the t - parameter is null. - Thrown if the class represented - by the specified type does not derive from Sasl.SaslMechanism. - Thrown if the Sasl mechanism could not - be registered with the factory. Refer to the inner exception for error - details. - - - - Static class constructor. Initializes static properties. - - - - - A dictionary of Sasl mechanisms registered with the factory class. - - - - - Represents chainable search conditions that can be used with the Search method. - - - - - Finds all messages in the mailbox. - - A SearchCondition object representing the "all" search criterion. - - - - Finds messages that contain the specified string in the header or body of the message. - - String to search messages for. - A SearchCondition object representing the "text" search criterion. - The text parameter is null. - - - - Finds messages that contain the specified string in the envelope structure's BCC field. - - String to search the envelope structure's BCC field for. - A SearchCondition object representing the "BCC" search criterion. - The text parameter is null. - - - - Finds messages whose internal date (disregarding time and timezone) is earlier than the - specified date. - - The date to compare the message's internal date with. - A SearchCondition object representing the "Before" search criterion. - - - - Finds messages that contain the specified string in the body of the message. - - String to search the message body for. - A SearchCondition object representing the "Body" search criterion. - The text parameter is null. - - - - Finds messages that contain the specified string in the envelope structure's CC field. - - String to search the envelope structure's CC field for. - A SearchCondition object representing the "CC" search criterion. - The text parameter is null. - - - - Finds messages that contain the specified string in the envelope structure's FROM field. - - String to search the envelope structure's FROM field for. - A SearchCondition object representing the "FROM" search criterion. - The text parameter is null. - - - - Finds messages that have a header with the specified field-name and that contains the - specified string in the text of the header. - - field-name of the header to search for. - String to search for in the text of the header. - A SearchCondition object representing the "HEADER" search criterion. - - If the string to search is zero-length, this matches all messages that have a header line - with the specified field-name regardless of the contents. - - The name parameter or the text parameter is - null. - - - - Finds messages with the specified keyword flag set. - - The keyword flag to search for. - A SearchCondition object representing the "KEYWORD" search criterion. - The text parameter is null. - - - - Finds messages with a size larger than the specified number of bytes. - - Minimum size, in bytes a message must have to be included in the search - result. - A SearchCondition object representing the "LARGER" search criterion. - - - - Finds messages with a size smaller than the specified number of bytes. - - Maximum size, in bytes a message must have to be included in the search - result. - A SearchCondition object representing the "SMALLER" search criterion. - - - - Finds messages whose Date: header (disregarding time and timezone) is earlier than the - specified date. - - The date to compare the Date: header field with. - A SearchCondition object representing the "SENTBEFORE" search criterion. - - - - Finds messages whose Date: header (disregarding time and timezone) is within the specified - date. - - The date to compare the Date: header field with. - A SearchCondition object representing the "SENTON" search criterion. - - - - Finds messages whose Date: header (disregarding time and timezone) is within or later than - the specified date. - - The date to compare the Date: header field with. - A SearchCondition object representing the "SENTSINCE" search criterion. - - - - Finds messages that contain the specified string in the envelope structure's SUBJECT field. - - String to search the envelope structure's SUBJECT field for. - A SearchCondition object representing the "SUBJECT" search criterion. - The text parameter is null. - - - - Finds messages that contain the specified string in the envelope structure's TO field. - - String to search the envelope structure's TO field for. - A SearchCondition object representing the "TO" search criterion. - The text parameter is null. - - - - Finds messages with unique identifiers corresponding to the specified unique identifier set. - - One or several unique identifiers (UID). - A SearchCondition object representing the "UID" search criterion. - - - - Finds messages with a unique identifier greater than the specified unique identifier. - - A unique identifier (UID). - A SearchCondition object representing the "UID" search criterion. - - Because of the nature of the IMAP search mechanism, the result set will always contain the - UID of the last message in the mailbox, even if said UID is smaller than the UID specified. - - - - - Finds messages with a unique identifier less than the specified unique identifier. - - A unique identifier (UID). - A SearchCondition object representing the "UID" search criterion. - - - - Finds messages that do not have the specified keyword flag set. - - The IMAP keyword flag to search for. - A SearchCondition object representing the "UNKEYWORD" search criterion. - The text parameter is null. - - - - Finds messages that have the \Answered flag set. - - A SearchCondition object representing the "ANSWERED" search criterion. - - - - Finds messages that have the \Deleted flag set. - - A SearchCondition object representing the "DELETED" search criterion. - - - - Finds messages that have the \Draft flag set. - - A SearchCondition object representing the "DRAFT" search criterion. - - - - Finds messages that have the \Flagged flag set. - - A SearchCondition object representing the "FLAGGED" search criterion. - - - - Finds messages that have the \Recent flag set but not the \Seen flag. - - A SearchCondition object representing the "NEW" search criterion. - - - - Finds messages that do not have the \Recent flag set. - - A SearchCondition object representing the "OLD" search criterion. - - - - Finds messages that have the \Recent flag set. - - A SearchCondition object representing the "RECENT" search criterion. - - - - Finds messages that have the \Seen flag set. - - A SearchCondition object representing the "SEEN" search criterion. - - - - Finds messages that do not have the \Answered flag set. - - A SearchCondition object representing the "UNANSWERED" search criterion. - - - - Finds messages that do not have the \Deleted flag set. - - A SearchCondition object representing the "UNDELETED" search criterion. - - - - Finds messages that do not have the \Draft flag set. - - A SearchCondition object representing the "UNDRAFT" search criterion. - - - - Finds messages that do not have the \Flagged flag set. - - A SearchCondition object representing the "UNFLAGGED" search criterion. - - - - Finds messages that do not have the \Seen flag set. - - A SearchCondition object representing the "UNSEEN" search criterion. - - - - Logically ANDs multiple search conditions, meaning a message will only be included in the - search result if both of the ANDed conditions are met. - - A search condition to logically AND this SearchCondition instance - with. - A new SearchCondition instance which can be further chained with other search - conditions. - The other parameter is null. - - - - Logically negates search conditions, meaning a message will only be included in the search - result if the specified conditions are not met. - - A search condition that must not be met by a message for it to be - included in the search result set. - A new SearchCondition instance which can be further chained with other search - conditions. - The other parameter is null. - - - - Logically ORs multiple search conditions, meaning a message will be included in the search - result if it meets at least either of the conditions. - - A search condition to logically OR this SearchCondition instance - with. - A new SearchCondition instance which can be further chained with other search - conditions. - The other parameter is null. - - - - Joins two SearchCondition objects into a new one using the specified logical operator. - - The logical operator to use for joining the search conditions. - Possible values are "OR", "NOT" and the empty string "" which denotes a logical AND. - The first SearchCondition object - The second SearchCondition object - A new SearchCondition object representing the two search conditions joined by the - specified logical operator. - - - - Concatenates the members of a collection, using the specified separator between each - member. - - The type of the members of values. - The string to use as a separator. - A collection that contains the objects to concatenate. - A string that consists of the members of values delimited by the separator - string. If values has no members, the method returns System.String.Empty. - The values parameter is null. - This is already part of the String class in .NET 4.0 and newer but is needed - for backwards compatibility with .NET 3.5. - - - - Constructs a string from the SearchCondition object using the proper syntax as is required - for the IMAP SEARCH command. - - A string representing this SearchCondition instance that can be used with the IMAP - SEARCH command. - - - - The search keys which can be used with the IMAP SEARCH command, as are defined in section - 6.4.4 of RFC 3501. - - - - - A static utility class containing methods for decoding encoded non-ASCII data as well as - extension methods for some classes of the base class library. - - - - - Returns a copy of the string enclosed in double-quotes and with escaped CRLF, back-slash - and double-quote characters (as is expected by some commands of the IMAP protocol). - - Extends the System.String class - A copy of the string enclosed in double-quotes and properly escaped as is required - by the IMAP protocol. - - - - Returns true if the string contains only ASCII characters. - - Extension method for the String class. - true if the string contains only ASCII characters; Otherwise false. - - - - Splits a string into chunks of the specified number of characters. - - Extension method for the String class. - The length of a chunk, measured in characters. - An array of string chunks. - - - - Determines whether the specified string occurs within this string. - - Extension method for the String class. - The string to seek. - One of the enumeration values that specifies the rules for the - search. - true if the value parameter occurs within this string, or if value is the empty - string (""); otherwise, false. - The value parameter is null. - - - - Raises the event. Ensures the event is only raised, if it is not null. - - Extends System.EventHandler class. - Extends System.EventHandler class. - The sender of the event. - The event arguments associated with this event. - - - - Throws an ArgumentNullException if the given data item is null. - - The item to check for nullity. - The name to use when throwing an exception, if necessary. - Courtesy of Jon Skeet. - - - - Throws an ArgumentNullException if the given data item is null. - - The item to check for nullity. - Courtesy of Jon Skeet. - - - - Throws an ArgumentNullException if the given string is null or throws an ArgumentException - if the given string is empty. - - The string to check for nullity and emptiness. - - - - Throws an ArgumentNullException if the given string is null or throws an ArgumentException - if the given string is empty. - - The string to check for nullity and emptiness. - The name to use when throwing an exception, if necessary. - - - - Reads an unsigned short value from the underlying stream, optionally using big-endian byte - ordering. - - Extension method for BinaryReader. - Set to true to interpret the short value as big endian value. - The 16-byte unsigned short value read from the underlying stream. - - - - Decodes a string composed of one or several MIME 'encoded-words'. - - A string to composed of one or several MIME 'encoded-words'. - An unknown encoding (other than Q-Encoding or Base64) is - encountered. - A concatenation of all enconded-words in the passed string - - - - Internal function reuse to add separation between multiple 'encoded-word's correctly. - - - - - The regular expression for matching encoded-words. This also accounts for the extension for - including language information (as defined in RFC2231). - - - - - Decodes a MIME 'encoded-word' string. - - The encoded word to decode - An unknown encoding (other than Q-Encoding or Base64) is - encountered. - A decoded string - MIME encoded-word syntax is a way to encode strings that contain non-ASCII data. - Commonly used encodings for the encoded-word sytax are Q-Encoding and Base64. For an - in-depth description, refer to RFC 2047. - - - - Takes a Q-encoded string and decodes it using the specified encoding. - - The Q-encoded string to decode. - The encoding to use for encoding the returned string. - The string is not a valid Q-encoded string. - The Q-decoded string. - - - - Takes a quoted-printable encoded string and decodes it using the specified encoding. - - The quoted-printable-encoded string to decode. - The encoding to use for encoding the returned string. - The string is not a valid quoted-printable encoded - string. - A quoted-printable decoded string. - - - - Decodes the specified MIME parameter value. - - The MIME parameter value to decode. - The decoded MIME parameter value. - The specified value is not a valid Rfc2231-encoded - string. - Refer to RFC2231 for the details of the encoding mechanism. - - - - Takes a Base64-encoded string and decodes it. - - The Base64-encoded string to decode. - A byte array containing the Base64-decoded bytes of the input string. - The value parameter is null. - The length of value, ignoring white-space - characters, is not zero or a multiple of 4, or the format of value is invalid, or the value - contains a non-base-64 character, more than two padding characters, or a non-white - space-character among the padding characters. - - - - Takes a UTF-16 encoded string and encodes it as modified UTF-7. - - The string to encode. - A UTF-7 encoded string - IMAP uses a modified version of UTF-7 for encoding international mailbox names. For - details, refer to RFC 3501 section 5.1.3 (Mailbox International Naming Convention). - - - - Takes a modified UTF-7 encoded string and decodes it. - - The UTF-7 encoded string to decode. - A UTF-16 encoded "standard" C# string - The input string is not a properly UTF-7 encoded - string. - IMAP uses a modified version of UTF-7 for encoding international mailbox names. For - details, refer to RFC 3501 section 5.1.3 (Mailbox International Naming Convention). - - - - This just wraps Encoding.GetEncoding in a try-catch block to ensure it never fails. If the - encoding can not be determined ASCII is returned as a default. - - The code page name of the preferred encoding. Any value returned by - System.Text.Encoding.WebName is a valid input. - The System.Text.Encoding associated with the specified code page or Encoding.ASCII - if the specified code page could not be resolved. - - - - Converts the specified enumerable collection of UIDs into an IMAP sequence-set. - - An enumerable collection of UIDs. - An IMAP sequence-set suitable for use with IMAP commands. - The uids parameter is null. - The specified collection of UIDs is empty. - Refer to RFC3501, 9.Formal Syntax "sequence-set" for a description of IMAP - sequence-sets. - - - diff --git a/App/packages/S22.Imap.3.6.0.0/lib/net35/S22.Imap.dll b/App/packages/S22.Imap.3.6.0.0/lib/net35/S22.Imap.dll deleted file mode 100644 index 360f335f3f0f9bbb4fd04f6be2ae08e655885cde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 114688 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

E!f)+c{WV_dr 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 diff --git a/App/packages/S22.Imap.3.6.0.0/lib/net40/S22.Imap.XML b/App/packages/S22.Imap.3.6.0.0/lib/net40/S22.Imap.XML deleted file mode 100644 index 9995b3c..0000000 --- a/App/packages/S22.Imap.3.6.0.0/lib/net40/S22.Imap.XML +++ /dev/null @@ -1,7178 +0,0 @@ - - - - S22.Imap - - - -

- Defines supported means of authenticating with an IMAP server. - - - - - Automatically selects the most-secure authentication mechanism supported by the server. - - - - - Login using plaintext password authentication; This is supported by most servers. - - - - - Login using the SASL PLAIN authentication mechanism. - - - - - Login using the CRAM-MD5 authentication mechanism. - - - - - Login using the DIGEST-MD5 authentication mechanism. - - - - - Login using OAuth via the SASL XOAuth mechanism. - - - - - Login using OAuth 2.0 via the SASL XOAUTH2 mechanism. - - - - - Login using the NTLM authentication mechanism. - - - - - Login using the NTLMv2 authentication mechanism. - - - - - Login using the NTLM/NTLMv2 authentication mechanism via Microsoft's Security Support - Provider Interface (SSPI). - - - - - Login using Kerberos authentication via the SASL GSSAPI mechanism. - - - - - Login using the SCRAM-SHA-1 authentication mechanism. - - - - - Login using the Secure Remote Password (SRP) authentication mechanism. - - The SRP mechanism is only available when targeting .NET 4.0 or newer. - - - - A utility class modeled after the BCL StringBuilder to simplify - building binary-data messages. - - - - - The actual byte buffer. - - - - - The current position in the buffer. - - - - - Resizes the internal byte buffer. - - Amount in bytes by which to increase the - size of the buffer. - - - - Appends one or several byte values to this instance. - - Byte values to append. - A reference to the calling instance. - - - - Appends the specified number of bytes from the specified buffer - starting at the specified offset to this instance. - - The buffer to append bytes from. - The offset into the buffert at which to start - reading bytes from. - The number of bytes to read from the buffer. - A reference to the calling instance. - - - - Appends the specified 32-bit integer value to this instance. - - A 32-bit integer value to append. - Set this to true, to append the value as - big-endian. - A reference to the calling instance. - - - - Appends the specified 16-bit short value to this instance. - - A 16-bit short value to append. - Set this to true, to append the value as - big-endian. - A reference to the calling instance. - - - - Appends the specified 16-bit unsigend short value to this instance. - - A 16-bit unsigend short value to append. - Set this to true, to append the value as - big-endian. - A reference to the calling instance. - - - - Appends the specified 32-bit unsigned integer value to this instance. - - A 32-bit unsigned integer value to append. - Set this to true, to append the value as - big-endian. - A reference to the calling instance. - - - - Appends the specified 64-bit integer value to this instance. - - A 64-bit integer value to append. - Set this to true, to append the value as - big-endian. - A reference to the calling instance. - - - - Appends the specified string using the specified encoding to this - instance. - - The string vale to append. - The encoding to use for decoding the string value - into a sequence of bytes. If this is null, ASCII encoding is used as a - default. - A reference to the calling instance. - - - - Returns the ByteBuilder's content as an array of bytes. - - An array of bytes. - - - - Removes all bytes from the current ByteBuilder instance. - - - - - The length of the underlying data buffer. - - - - - A filter stream sitting between Negotiate- and NetworkStream to - enable managed NTLM/GSSAPI authentication. - - - We use a filter for hooking into the NegotiateStream protocol rather - than p/invoking SSPI directly as that would require unmanaged - code privileges (internally NegotiateStream uses an SSPI wrapper). - - NegotiateStream - FilterStream - NetworkStream. - - - - - A buffer for accumulating handshake data until an entire handshake - has been read. - - - - - A buffer for accumulating the payload data following the handshake - data. - - - - - The latest handshake header sent by the client. - - - - - The buffer from which client reads will be satisfied. - - - - - The number of bytes the client has already consumed/read - from the receivedData buffer. - - - - - The current state of the filter stream. - - - - - Determines whether this instance should close the inner stream - when disposed. - - - - - An error code as specified by the NegotiateStream protocol which is - handed to the NegotiateStream instance in case authentication - unexpectedly fails. - - - - - Gets the stream used by this FilterStream for sending and - receiving data. - - - - - Initializes a new instance of the FilterStream class using the - specified Stream. - - A Stream object used by the FilterStream for sending - and receiving data. - Set to true to indicate that closing this - FilterStream has no effect on innerstream, or set to false to - indicate that closing this FilterStream also closes innerStream. - - - - Reads data from this stream and stores it in the specified array. - - A byte array that receives the bytes read from - the stream. - The zero-based index into the buffer at which to - begin storing the data read from this stream. - The the maximum number of bytes to read from the - stream. - The the number of bytes read from the underlying stream. When - there is no more data to be read, returns 0. - The read operation failed. - - - - Reads the server response from the underlying inner stream. - - - - - Write the specified number of bytes to the underlying stream using the - specified buffer and offset. - - A byte array that supplies the bytes written to - the stream. - The zero-based index in the buffer at which to - begin reading bytes to be written to the stream. - The number of bytes to read from buffer. - The write operation failed. - - - - Reads the client's handshake from the specified buffer. - - A byte array from which the handshake data - will be read. - The zero-based index in the buffer at which to - begin reading bytes. - The number of bytes to read from buffer. - True if the handshake has been read completely, otherwise - false. - - - - Reads the payload from the specified buffer. - - A byte array from which the payload data - will be read. - The zero-based index in the buffer at which to - begin reading bytes. - The number of bytes to read from buffer. - True if all of the payload data has been read, otherwise - false. - - - - Sends the accumulated payload data to the server. - - true if the client is done sending data, otherwise - false. - - - - Reads a line of ASCII-encoded text terminated by a CRLF from the - specified stream. - - The stream to read the line of text from. - Set this to true, to resolve automatically - resolve possible literals. - A line of ASII-encoded text read from the specified - stream. - "Literals" are a special feature of IMAP, employed by some - server implementations. Please refer to RFC 3501 Section 4.3 for - details. - - - - Reads the specified number of bytes from the specified stream and - returns them as an ASCII-encoded string. - - The stream to read from. - The number of bytes to read. - The read bytes encoded as an ASCII string. - - - - Causes any buffered data to be written to the underlying device. - - - - - Throws NotSupportedException. - - This value is ignored. - This value is ignored. - Always throws a NotSupportedException. - - - - Sets the length of the underlying stream. - - A value that specifies the length of the - stream. - - - - Releases all resources used by the stream. - - True to release both managed and unmanaged - resources, false to release only unmanaged resources. - - - - Gets a boolean value that indicates whether the underlying stream is - readable. - - - - - Gets a boolean value that indicates whether the underlying stream is - seekable. - - - - - Gets a boolean value that indicates whether the underlying stream - supports time-outs. - - - - - Gets a boolean value that indicates whether the underlying stream is - writable. - - - - - Gets the length of the underlying stream. - - - - - Gets or sets the current position in the underlying stream. - - Setting this property - is not supported. - - - - The different states the FilterStream can be in. - - - - - The stream is reading the client's handshake message. - - - - - The stream is reading the client's payload data. - - - - - The stream is waiting for the server's response. - - - - - The stream has buffered the server's response and is satisfying - client reads from its buffer. - - - - - Represents a NegotiateStream handshake message. - - - - - This is the only permissible value according to specification. - - - - - This is the only permissible value according to specification. - - - - - Creates a new instance of the Handshake class using the specified type - and payload size. - - The type of handshake. - The size, in bytes, of the payload following - the handshake header. - - - - Private default constructor for deserializing. - - - - - Deserializes a handshake instance from the specified byte array. - - An array of bytes containing handshake data. - An initialized instance of the Handshake class deserialized - from the specified byte array. - Thrown if the specified byte - array does not contain valid handshake data. - - - - Serializes an instance of the Handshake class to a sequence of bytes. - - A sequence of bytes representing this Handshake instance. - - - - The type of the handshake message. - - - - - Specifies the major version of the NegotiateStream protocol - being used. - - - - - Specifies the minor version of the NegotiateStream protocol - being used. - - - - - Defines the size, in bytes, of the AuthPayload field, which immediately - follows the handshake. - - - - - Describes the different types of handshake messages. - - - - - The handshake has completed successfully. - - - - - An error occurred during the handshake. The AuthPayload field contains - an HRESULT. - - - - - The message is part of the handshake phase and is not the final message - from the host. The final Handshake message from a host is always - transferred in a HandshakeDone message. - - - - - Implements the Sasl SCRAM-SHA-1 authentication method as described in - RFC 5802. - - - - - The abstract base class from which all classes implementing a Sasl - authentication mechanism must derive. - - - - - Computes the client response to a challenge sent by the server. - - - The client response to the specified challenge. - - - - - - - - Retrieves the base64-encoded client response for the specified - base64-encoded challenge sent by the server. - - A base64-encoded string representing a challenge - sent by the server. - A base64-encoded string representing the client response to the - server challenge. - The IMAP, POP3 and SMTP authentication commands expect challenges - and responses to be base64-encoded. This method automatically decodes the - server challenge before passing it to the Sasl implementation and - encodes the client response to a base64-string before returning it to the - caller. - Thrown if the client response could - not be retrieved. Refer to the inner exception for error details. - - - - Retrieves the client response for the specified server challenge. - - A byte array containing the challenge sent by - the server. - An array of bytes representing the client response to the - server challenge. - - - - IANA name of the authentication mechanism. - - - - - True if the authentication exchange between client and server - has been completed. - - - - - A map of mechanism-specific properties which are needed by the - authentication mechanism to compute it's challenge-responses. - - - - - The client nonce value used during authentication. - - - - - Scram-Sha-1 involves several steps. - - - - - The salted password. This is needed for client authentication and later - on again for verifying the server signature. - - - - - The auth message is part of the authentication exchange and is needed for - authentication as well as for verifying the server signature. - - - - - Private constructor for use with Sasl.SaslFactory. - - - - - Internal constructor used for unit testing. - - The username to authenticate with. - The plaintext password to authenticate - with. - The client nonce value to use. - Thrown if the username - or the password parameter is null. - Thrown if the username - parameter is empty. - - - - Creates and initializes a new instance of the SaslScramSha1 - class using the specified username and password. - - The username to authenticate with. - The plaintext password to authenticate - with. - Thrown if the username - or the password parameter is null. - Thrown if the username - parameter is empty. - - - - Computes the client response to the specified SCRAM-SHA-1 challenge. - - The challenge sent by the server - The response to the SCRAM-SHA-1 challenge. - Thrown if the response could not - be computed. - - - - Computes the initial response sent by the client to the server. - - An array of bytes containing the initial client - response. - - - - Computes the "client-final-message" which completes the authentication - process. - - The "server-first-message" challenge received - from the server in response to the initial client response. - An array of bytes containing the client's challenge - response. - - - - Verifies the nonce value sent by the server. - - The nonce value sent by the server as part of the - server-first-message. - True if the nonce value is valid, otherwise false. - - - - Verifies the server signature which is sent by the server as the final - step of the authentication process. - - The server signature as a base64-encoded - string. - The client's response to the server. This will be an empty - byte array if verification was successful, or the '*' SASL cancellation - token. - - - - Parses the "server-first-message" received from the server. - - The challenge received from the server. - A collection of key/value pairs contained extracted from - the server message. - Thrown if the message parameter - is null. - - - - Computes the "Hi()"-formula which is part of the client's response - to the server challenge. - - The supplied password to use. - The salt received from the server. - The iteration count. - An array of bytes containing the result of the computation of the - "Hi()"-formula. - - Hi is, essentially, PBKDF2 with HMAC as the pseudorandom function (PRF) and with - dkLen == output length of HMAC() == output length of H(). (Refer to RFC 5802, p.6) - - - - - Applies the HMAC keyed hash algorithm using the specified key to - the specified input data. - - The key to use for initializing the HMAC - provider. - The input to compute the hashcode for. - The hashcode of the specified data input. - - - - Applies the HMAC keyed hash algorithm using the specified key to - the specified input string. - - The key to use for initializing the HMAC - provider. - The input string to compute the hashcode for. - The hashcode of the specified string. - - - - Applies the cryptographic hash function SHA-1 to the specified data - array. - - The data array to apply the hash function to. - The hash value for the specified byte array. - - - - Applies the exclusive-or operation to combine the specified byte array - a with the specified byte array b. - - The first byte array. - The second byte array. - An array of bytes of the same length as the input arrays - containing the result of the exclusive-or operation. - Thrown if either argument is - null. - Thrown if the input arrays - are not of the same length. - - - - Generates a random cnonce-value which is a "client-specified data string - which must be different each time a digest-response is sent". - - A random "cnonce-value" string. - - - - Prepares the specified string as is described in RFC 5802. - - A string value. - A "Saslprepped" string. - - - - True if the authentication exchange between client and server - has been completed. - - - - - The IANA name for the Scram-Sha-1 authentication mechanism as described - in RFC 5802. - - - - - The username to authenticate with. - - - - - The password to authenticate with. - - - - - Implements the Sasl Secure Remote Password (SRP) authentication - mechanism as is described in the IETF SRP 08 draft. - - - This requires .NET Framework 4 because it makes use of the System.Numeric namespace - which has only been part of .NET since version 4. - - Some notes: - - Don't bother with the example given in the IETF 08 draft - document (7.5 Example); It is broken. - - Integrity and confidentiality protection is not implemented. - In fact, the "mandatory"-option is not supported at all. - - - - - SRP involves several steps. - - - - - The negotiated hash algorithm which will be used to perform any - message digest calculations. - - - - - The public key computed as part of the authentication exchange. - - - - - The client's private key used for calculating the client evidence. - - - - - The secret key shared between client and server. - - - - - The client evidence calculated as part of the authentication exchange. - - - - - The options chosen by the client, picked from the list of options - advertised by the server. - - - - - Private constructor for use with Sasl.SaslFactory. - - - - - Internal constructor used for unit testing. - - The username to authenticate with. - The plaintext password to authenticate - with. - The client private key to use. - Thrown if the username - or the password parameter is null. - Thrown if the username - parameter is empty. - - - - Creates and initializes a new instance of the SaslSrp class using - the specified username and password. - - The username to authenticate with. - The plaintext password to authenticate - with. - Thrown if the username - or the password parameter is null. - Thrown if the username - parameter is empty. - - - - Computes the client response to the specified SRP challenge. - - The challenge sent by the server - The response to the SRP challenge. - Thrown if the response could not - be computed. - - - - Computes the initial response sent by the client to the server. - - An array of bytes containing the initial client - response. - - - - Computes the client response containing the client's public key and - evidence. - - The challenge containing the protocol elements - received from the server in response to the initial client - response. - An array of bytes containing the client's challenge - response. - Thrown if the server specified any - mandatory options which are not supported. - - - - Verifies the server signature which is sent by the server as the final - step of the authentication process. - - The server signature as a base64-encoded - string. - The client's response to the server. This will be an empty - byte array if verification was successful, or the '*' SASL cancellation - token. - - - - Selects a message digest algorithm from the specified list of - supported algorithms. - - A tuple containing the name of the selected message digest - algorithm as well as the type. - Thrown if none of the algorithms - specified in the list parameter is supported. - - - - True if the authentication exchange between client and server - has been completed. - - - - - The IANA name for the SRP authentication mechanism. - - - - - The username to authenticate with. - - - - - The password to authenticate with. - - - - - The authorization id (userid in draft jargon). - - - - - Represents the initial client-response sent to the server to initiate - the authentication exchange. - - - - - Creates a new instance of the ClientMessage1 class using the specified - username. - - The username to authenticate with. - The authorization id to authenticate with. - Thrown if the username parameter - is null. - - - - Serializes this instance of the ClientMessage1 class into a sequence of - bytes according to the requirements of the SRP specification. - - A sequence of bytes representing this instance of the - ClientMessage1 class. - Thrown if the cummultative length - of the serialized data fields exceeds the maximum number of bytes - allowed as per SRP specification. - SRP specification imposes a limit of 2,147,483,643 bytes on - the serialized data. - - - - The username to authenticate with. - - SRP specification imposes a limit of 65535 bytes - on this field. - - - - The authorization identity to authenticate with. - - SRP specification imposes a limit of 65535 bytes - on this field. - - - - The session identifier of a previous session whose parameters the - client wishes to re-use. - - SRP specification imposes a limit of 65535 bytes - on this field. If the client wishes to initialize a new session, - this parameter must be set to the empty string. - - - - The client's nonce used in deriving a new shared context key from - the shared context key of the previous session. - - SRP specification imposes a limit of 255 bytes on this - field. If not needed, it must be set to an empty byte array. - - - - Represents the second client-response sent to the server as part of - the SRP authentication exchange. - - - - - Creates and initializes a new instance of the ClientMessage2 class. - - - - - Creates and initializes a new instance of the ClientMessage2 class using - the specified public key and client proof. - - The client's public key. - The calculated client proof. - Thrown if either the public key - or the proof parameter is null. - - - - Serializes this instance of the ClientMessage2 class into a sequence of - bytes according to the requirements of the SRP specification. - - A sequence of bytes representing this instance of the - ClientMessage2 class. - Thrown if the cummultative length - of the serialized data fields exceeds the maximum number of bytes - allowed as per SRP specification. - SRP specification imposes a limit of 2,147,483,643 bytes on - the serialized data. - - - - Serializes the client's options collection into a comma-seperated - options string. - - A comma-seperated string containing the client's chosen - options. - - - - The client's ephemeral public key. - - - - - The evidence which proves to the server client-knowledge of the shared - context key. - - - - - The options list indicating the security services chosen by the client. - - - - - The initial vector the server will use to set up its encryption - context, if confidentiality protection will be employed. - - - - - Adds extension methods to the BinaryReader class to simplify the - deserialization of SRP messages. - - - - - Reads an unsigned integer value from the underlying stream, - optionally using big endian byte ordering. - - Extension method for BinaryReader. - Set to true to interpret the integer value - as big endian value. - The 32-byte unsigned integer value read from the underlying - stream. - - - - Reads an unsigned short value from the underlying stream, optionally - using big endian byte ordering. - - Extension method for BinaryReader. - Set to true to interpret the short value - as big endian value. - The 16-byte unsigned short value read from the underlying - stream. - - - - Reads a "multi-precision integer" from this instance. - - Extension method for the BinaryReader class. - An instance of the Mpi class decoded from the bytes read - from the underlying stream. - - - - Reads an "octet-sequence" from this instance. - - Extension method for the BinaryReader class. - An instance of the OctetSequence class decoded from the bytes - read from the underlying stream. - - - - Reads an UTF-8 string from this instance. - - Extension method for the BinaryReader class. - An instance of the Utf8String class decoded from the bytes - read from the underlying stream. - - - - Contains helper methods for calculating the various components of the - SRP authentication exchange. - - - - - The trace source used for informational and debug messages. - - - - - Determines whether the specified modulus is valid. - - The modulus to validate. - True if the specified modulus is valid, otherwise - false. - - - - Determines whether the specified generator is valid. - - The generator to validate. - True if the specified generator is valid, otherwise - false. - - - - Generates a random "multi-precision integer" which will act as the - client's private key. - - The client's ephemeral private key as a "multi-precision - integer". - - - - Calculates the client's ephemeral public key. - - The generator sent by the server. - The safe prime modulus sent by - the server. - The client's private key. - The client's ephemeral public key as a - "multi-precision integer". - - A = Client Public Key - g = Generator - a = Client Private Key - N = Safe Prime Modulus - - - - - Calculates the shared context key K from the given parameters. - - The user's password salt. - The username to authenticate with. - The password to authenticate with. - The client's ephemeral public key. - The server's ephemeral public key. - The client's private key. - The generator sent by the server. - The safe prime modulus sent by the - server. - The negotiated hash algorithm to use - for the calculations. - The shared context key K as a "multi-precision - integer". - - A = Client Public Key - B = Server Public Key - N = Safe Prime Modulus - U = Username - p = Password - s = User's Password Salt - a = Client Private Key - g = Generator - K = Shared Public Key - - - - - Computes the client evidence from the given parameters. - - The safe prime modulus sent by the - server. - The generator sent by the server. - The username to authenticate with. - The client's password salt. - The client's ephemeral public key. - The server's ephemeral public key. - The shared context key. - The authorization identity. - The raw options string as received from the - server. - The message digest algorithm to use for - calculating the client proof. - The client proof as an array of bytes. - - - - Computes the server evidence from the given parameters. - - The client's ephemeral public key. - - The shared context key. - The authorization identity. - The raw options string as sent by the - client. - The session id sent by the server. - The time-to-live value for the session id sent - by the server. - The message digest algorithm to use for - calculating the server proof. - The server proof as an array of bytes. - - - - Applies the exclusive-or operation to combine the specified byte array - a with the specified byte array b. - - The first byte array. - The second byte array. - An array of bytes of the same length as the input arrays - containing the result of the exclusive-or operation. - Thrown if either argument is - null. - Thrown if the input arrays - are not of the same length. - - - - Recommended values for the safe prime modulus (Refer to Appendix A. - "Modulus and Generator Values" of the IETF SRP draft). - - - - - Represents a "multi-precision integer" (MPI) as is described in the - SRP specification (3.2 Multi-Precision Integers, p.5). - - Multi-Precision Integers, or MPIs, are positive integers used - to hold large integers used in cryptographic computations. - - - - Creates a new "multi-precision integer" from the specified array - of bytes. - - A big-endian sequence of bytes forming the - integer value of the multi-precision integer. - - - - Creates a new "multi-precision integer" from the specified BigInteger - instance. - - The BigInteger instance to initialize the MPI - with. - - - - Returns a sequence of bytes in big-endian order forming the integer - value of this "multi-precision integer" instance. - - Returns a sequence of bytes in big-endian order representing - this "multi-precision integer" instance. - - - - Serializes the "multi-precision integer" into a sequence of bytes - according to the requirements of the SRP specification. - - A big-endian sequence of bytes representing the integer - value of the MPI. - - - - The underlying BigInteger instance used to represent this - "multi-precision integer". - - - - - Represents an "octet-sequence" as is described in the SRP specification - (3.3 Octet sequences, p.6). - - - - - Creates a new instance of the OctetSequence class using the specified - byte array. - - The sequence of bytes to initialize this instance - of the OctetSequence class with. - - - - Serializes this instance of the OctetSequence class into a sequence of - bytes according to the requirements of the SRP specification. - - A sequence of bytes representing this instance of the - OctetSequence class. - Thrown if the length of the byte - sequence exceeds the maximum number of bytes allowed as per SRP - specification. - SRP specification imposes a limit of 255 bytes on the - length of the underlying byte array. - - - - The underlying byte array forming this instance of the OctetSequence - class. - - - - - Represents the first message sent by the server in response to an - initial client-response. - - - - - Deserializes a new instance of the ServerMessage1 class from the - specified buffer of bytes. - - The byte buffer to deserialize the ServerMessage1 - instance from. - An instance of the ServerMessage1 class deserialized from the - specified byte array. - Thrown if the byte buffer does not - contain valid data. - - - - Parses the options string sent by the server. - - A comma-delimited options string. - An initialized instance of the NameValueCollection class - containing the parsed server options. - - - - The safe prime modulus sent by the server. - - - - - The generator sent by the server. - - - - - The user's password salt. - - - - - The server's ephemeral public key. - - - - - The options list indicating available security services. - - - - - The raw options as received from the server. - - - - - Represents the second message sent by the server as part of the SRP - authentication exchange. - - - - - Deserializes a new instance of the ServerMessage2 class from the - specified buffer of bytes. - - The byte buffer to deserialize the ServerMessage2 - instance from. - An instance of the ServerMessage2 class deserialized from the - specified byte array. - Thrown if the byte buffer does not - contain valid data. - - - - The evidence which proves to the client server-knowledge of the shared - context key. - - - - - The initial vector the client will use to set up its encryption - context, if confidentiality protection will be employed. - - - - - The session identifier the server has given to this session. - - - - - The time period for which this session's parameters may be re-usable. - - - - - Represents an UTF-8 string as is described in the SRP specification - (3.5 Text, p.6). - - - - - The value of the UTF-8 string. - - - - - Creates a new instance of the Utf8String class using the specified - string value. - - The string to initialize the Utf8String instance - with. - - - - Serializes this instance of the Utf8String class into a sequence of - bytes according to the requirements of the SRP specification. - - A sequence of bytes representing this instance of the - Utf8String class. - Thrown if the string value exceeds - the maximum number of bytes allowed as per SRP specification. - SRP specification imposes a limit of 65535 bytes on the - string data after it has been encoded into a sequence of bytes - using an encoding of UTF-8. - - - - Represents a MIME body part of a mail message that has multiple - parts. - - - - - Initializes a new instance of the Bodypart class with default - values. - - The part number as is expected by the - IMAP FETCH command. - - - - Returns a detailed description listing all properties of this - Bodypart instance. - - A string describing this instance of the Bodypart class - - - - The body part number which acts as part specifier for - the FETCH BODY command. - - - - - The MIME content-type of this body part. The content-type is - used to declare the general type of data. - - - - - The MIME content-subtype of this body part. The subtype - specifies a specific format for the type of data. - - - - - Parameter values present in the MIME content-type header - of this body part (for instance, 'charset'). - - - - - The MIME content-id of this body part, if any. This value - may be used for uniquely identifying MIME entities in - several contexts. - - - - - The MIME content-description of this body part. This value - may contain some descriptive information on the body part. - - - - - The MIME content-transfer-encoding mechanism used for - encoding this body part's data. - - - - - The size of this body part in bytes. Note that this size - is the size in its transfer encoding and not the resulting - size after any decoding. - - - - - The size of the body in text lines. This field is only - present in body parts with a content-type of text. - - - - - The computed MD5-Hash of the body part. This field is not - mandatory and may be empty. - - - - - The MIME content-disposition for this body part. This field - is not mandatory and may be empty. - - - - - A string giving the body language. This field is not mandatory - and may be empty. - - - - - A string list giving the body content URI. This field is not - mandatory and may be empty. - - - - - Provides a means for parsing the textual description of the body structure of a mail - message as is returned by an IMAP server for a "FETCH BODYSTRUCTURE" command. - - - They couldn't have made the BODYSTRUCTURE any more complicated and unnecessarily - hard to parse. I wonder what they were thinking when they came up with this. - - - - - Parses the body structure of a mail message as is returned by the IMAP server - in response to a FETCH BODYSTRUCTURE command. - - The body structure server response - An array of initialized Bodypart objects representing the body - structure of the mail message - Thrown if the passed string does not - contain a valid body structure and parsing failed. - - - - A Reader object initialized with the string containing the bodystructure - response. - - - - - Initializes a new instance of the Bodystructure class. - - - - - - Parses a bodypart entry from the body structure and advances the - read pointer. - - The designated part specifier by which the body - part is refered to by the server. - Set to true if the bodypart is enclosed - in parenthesis. - - - - - Parses the mandatory extra fields that are present if the bodypart is - of type message/rfc822 (see RFC 3501, p. 75). - - The bodypart instance the parsed fields will be - added to. - - - - Parses the optional fields of a bodypart entry from the body structure - and advances the read pointer. - - The bodypart instance the parsed fields will be - added to. - Set to true if the bodypart entry is enclosed - in parenthesis. - - - - Parses a list of bodypart entries as is outlined in the description of the - BODYPART response in RFC 3501. - - The nesting prefix that will be prefixed to the - bodyparts partNumber. - An array of initialized Bodypart objects parsed from the - list. - - - - Advances the read pointer to skip over a multipart entry. - - - - - Advances the read pointer to skip over an arbitrary - expression enclosed in parentheses. - - - - - Represents the content disposition as is presented in the BODYSTRUCTURE - response by the IMAP server. - - - - - Initializes a new instance of the ContentDisposition class with - default values. - - - - - Maps MIME content disposition string values to their corresponding - counter-parts of the ContentDispositionType enumeration. - - - - - The content disposition specifies the presentation style. - - - - - Additional attribute fields for specifying the name of a file, the creation - date and modification date, which can be used by the reader's mail user agent - to store the attachment. - - - - - Contains the name of the transmitted file if the content-disposition is of type - "Attachment" and if the name value was provided as part of the header information. - This field may be empty. - - - - - Possible values for the content disposition type which determines the presentation - style - - - - - The content disposition could not be determined. - - - - - An inline content disposition means that the content should be automatically - displayed when the message is displayed. - - - - - An attachment content disposition means that the content should not be displayed - automatically and requires some form of action from the user to open it. - - - - - Possible values for the "Encoding" property of the Bodypart class. The content - transfer encoding indicates whether or not a binary-to-text encoding - scheme has been used on top of the original encoding as specified within the - Content-Type header. - - - - - The content tranfer encoding could not be determined or is unknown. - - - - - Up to 998 bytes per line of the code range 1 - 127 with CR and LF only - allowed to appear as part of a CRLF line ending. - - - - - Up to 998 bytes per line with CR and LF only allowed to appear as part - of a CRLF line ending. - - - - - Any sequence of bytes. - - - - - Byte sequence is encoded using the quoted-printable encoding. - - - - - Byte sequence is encoded using Base64 encoding. - - - - - Possible values for the "Type" property of the Bodypart class. - For a detailed description of MIME Media Types refer to - RFC 2046. - - - - - The "text" media type is intended for sending material which - is principally textual in form. - - - - - A media type of "image" indicates that the body contains an image. - The subtype names the specific image format. - - - - - A media type of "audio" indicates that the body contains audio - data. - - - - - A media type of "video" indicates that the body contains a - time-varying-picture image, possibly with color and coordinated sound. - - - - - The "application" media type is to be used for discrete data which do - not fit in any of the other categories, and particularly for data to - be processed by some type of application program. - - - - - The "message" content type allows messages to contain other messages - or pointers to other messages. - - - - - The media type value is unknown or could not be determined. - - - - - A helper class for parsing the BODYSTRUCTURE response of an - IMAP FETCH command more conveniently. - - - - - Initializes a new instance of the Reader class that reads from the - specified string. - - The string to which the Reader instance should be - initialized. - - - - Reads the next character from the input string and advances the - character position by one character. - - The next character from the underlying string. - Thrown when reading is - attempted past the end of the underlying string. - - - - Returns the next available character but does not consume it. - - Set to true to skip any preceding - whitespace characters. - An integer representing the next character to be read, - or -1 if no more characters are available. - - - - Advances the character position until the specified character - is encountered. - - The character to skip to. - Thrown when reading is - attempted past the end of the underlying string. - - - - Advances the character position over any whitespace characters - and subsequently ensures the next read will not return a - whitespace character. - - Thrown when reading is - attempted past the end of the underlying string. - - - - Reads characters until the specified character is encountered. - - The character to read up to. - The read characters as a string value. - Thrown when reading is - attempted past the end of the underlying string. - - - - Reads a word from the underlying string. A word in this context - is a literal enclosed in double-quotes. - - The read word. - Thrown when reading is - attempted past the end of the underlying string. - - - - Reads an integer from the underlying string. - - The read integer value. - Thrown when reading is - attempted past the end of the underlying string. - - - - Reads a list from the underlying string. A list in this context - is a list of attribute/value literals (enclosed in double-quotes) - enclosed in parenthesis. - - The read list as a dictionary with the attribute names - as keys and attribute values as values. - Thrown when reading is - attempted past the end of the underlying string. - - - - Reads a disposition from the underlying string. A disposition in - this context is a list of attribute/value literals (enclosed in - double-quotes) preceded by a word enclosed in parenthesis. - - An initialized ContentDisposition instance representing - the parsed disposition. - Thrown when reading is - attempted past the end of the underlying string. - - - - The exception that is thrown when reading is attempted past the end - of a string. - - - - - Initializes a new instance of the EndOfStringException class - - - - - Initializes a new instance of the EndOfStringException class with its message - string set to . - - A description of the error. The content of message is intended - to be understood by humans. - - - - Initializes a new instance of the EndOfStringException class with its message - string set to and a reference to the inner exception that - is the cause of this exception. - - A description of the error. The content of message is intended - to be understood by humans. - The exception that is the cause of the current exception. - - - - Initializes a new instance of the EndOfStringException class with the specified - serialization and context information. - - An object that holds the serialized object data about the exception - being thrown. - An object that contains contextual information about the source - or destination. - - - - Defines the different means by which mail messages may be fetched from the server. - - - - - Fetches the entire mail message with all of its content. - - - - - Only the mail message headers will be retrieved, while the actual content will not be - downloaded. If this option is specified, only the header fields of the returned MailMessage - object will be initialized. - - - - - Retrieves the mail message, but will only download content that has a content-type of text. - This will retrieve text as well as HTML representation, while skipping inline content and - attachments. - - - - - Retrieves the mail message, but skips any content that is an attachment. - - - - - Provides data for IMAP idle error events. - - - - - Initializes a new instance of the IdleErrorEventArgs class. - - The exception that causes the event. - The instance of the ImapClient class that raised the event. - The exception parameter or the client parameter - is null. - - - - The exception that caused the error event. - - - - - The instance of the ImapClient class that raised the event. - - - - - Provides data for IMAP idle notification events. - - - - - Initializes a new instance of the IdleMessageEventArgs class and sets the - MessageCount attribute to the value of the - parameter. - - The number of messages in the selected mailbox. - The unique identifier (UID) of the newest message in the - mailbox. - The instance of the ImapClient class that raised the event. - - - - The total number of messages in the selected mailbox. - - - - - The unique identifier (UID) of the newest message in the mailbox. - - The UID can be passed to the GetMessage method in order to retrieve the mail - message from the server. - - - - The instance of the ImapClient class that raised the event. - - - - - Enables applications to communicate with a mail server using the Internet Message Access - Protocol (IMAP). - - - - - Attempts to establish an authenticated session with the server using the specified - credentials. - - The username with which to login in to the IMAP server. - The password with which to log in to the IMAP server. - The requested method of authentication. Can be one of the values - of the AuthMethod enumeration. - The username parameter or the password parameter - is null. - There was a failure writing to or reading from the - network. - The server rejected the supplied - credentials. - The specified authentication method is not - supported by the server. - - This example demonstrates how to authenticate with an IMAP server once a connection - has been established. Notice that you can also connect and login in one step - using one of the overloaded constructors. - - // Connect to Gmail's IMAP server on port 993 using SSL. - ImapClient Client = new ImapClient("imap.gmail.com", 993, true); - - try { - Client.Login("My_Username", "My_Password", AuthMethod.Auto); - } - catch(InvalidCredentialsException) { - Console.WriteLine("The server rejected the supplied credentials."); - } - - Client.Dispose(); - - - - - - Logs an authenticated client out of the server. After the logout sequence has been completed, - the server closes the connection with the client. - - An unexpected response has been received from - the server during the logout sequence. - Calling this method in non-authenticated state has no effect. - There was a failure writing to or reading from the - network. - The ImapClient object has been disposed. - - - - Returns an enumerable collection of capabilities the IMAP server supports. All strings in - the returned collection are guaranteed to be upper-case. - - An unexpected response has been received from - the server; The message property of the exception contains the error message returned by - the server. - There was a failure writing to or reading from the - network. - The ImapClient object has been disposed. - An enumerable collection of capabilities supported by the server. - This method may be called in non-authenticated state. - - - - Determines whether the specified capability is supported by the server. - - The IMAP capability to probe for (for example "IDLE"). - The capability parameter is null. - An unexpected response has been received from - the server; The message property of the exception contains the error message returned by - the server. - There was a failure writing to or reading from the - network. - The ImapClient object has been disposed. - true if the specified capability is supported by the server; Otherwise - false. - This method may be called in non-authenticated state. - - This example demonstrates how to connect and login to an IMAP server. - - // Connect to Gmail's IMAP server on port 993 using SSL. - ImapClient Client = null; - try { - Client = new ImapClient("imap.gmail.com", 993, "My_Username", - "My_Password", true, AuthMethod.Auto); - - // Check if the server supports IMAP IDLE. - if(Client.Supports("IDLE")) - Console.WriteLine("This server supports the IMAP4 IDLE specification"); - else - Console.WriteLine("This server does not support IMAP IDLE"); - } - catch(InvalidCredentialsException) { - Console.WriteLine("The server rejected the supplied credentials"); - } - finally { - // Release resources. - if(Client != null) - Client.Dispose(); - } - - - - - - Changes the name of the specified mailbox. - - The mailbox to rename. - The new name the mailbox will be renamed to. - The mailbox parameter or the - newName parameter is null. - The mailbox could not be renamed; The message - property of the exception contains the error message returned by the server. - There was a failure writing to or reading from the - network. - The ImapClient object has been disposed. - The method was called in non-authenticated - state, i.e. before logging in. - - - - Permanently removes the specified mailbox. - - The name of the mailbox to remove. - The mailbox parameter is null. - The specified mailbox could not be removed. - The message property of the exception contains the error message returned by the - server. - There was a failure writing to or reading from the - network. - The ImapClient object has been disposed. - The method was called in non-authenticated - state, i.e. before logging in. - - - - Creates a new mailbox with the specified name. - - The name of the mailbox to create. - The mailbox parameter is null. - The mailbox with the specified name could - not be created. The message property of the exception contains the error message returned - by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - Retrieves a list of all available and selectable mailboxes on the server. - - An enumerable collection of the names of all available and selectable - mailboxes. - The list of mailboxes could not be retrieved. - The message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - The mailbox name "INBOX" is a special name reserved to mean "the primary mailbox - for this user on this server". - - - - Permanently removes all messages that have the \Deleted flag set from the specified mailbox. - - The mailbox to remove all messages from that have the \Deleted flag - set. If this parameter is omitted, the value of the DefaultMailbox property is used to - determine the mailbox to operate on. - The expunge operation could not be completed. - The message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - - Retrieves status information (total number of messages, various attributes as well as quota - information) for the specified mailbox. - The mailbox to retrieve status information for. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - A MailboxInfo object containing status information for the mailbox. - The operation could not be completed because - the server returned an error. The message property of the exception contains the error message - returned by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - Not all IMAP servers support the retrieval of quota information. If it is not - possible to retrieve this information, the UsedStorage and FreeStorage properties of the - returned MailboxStatus instance are set to 0. - - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - // Get a list of all mailboxes. - foreach(string m in Client.ListMailboxes()) - { - MailboxInfo info = Client.GetMailboxInfo(m); - - Console.WriteLine(info.Name); - Console.WriteLine("Used storage: " + info.UsedStorage); - Console.WriteLine("Free storage: " + info.FreeStorage); - Console.WriteLine("Next UID: " + info.NextUID); - Console.WriteLine("Messages: " + info.Messages); - Console.WriteLine("Unread: " + info.Unread); - Console.WriteLine("Set Flags: "); - foreach (MailboxFlag f in info.Flags) - Console.Write(f.ToString() + ","); - Console.WriteLine(); - } - - Client.Dispose(); - - - - - - Searches the specified mailbox for messages that match the given search criteria. - - A search criteria expression; Only messages that match this - expression will be included in the result set returned by this method. - The mailbox that will be searched. If this parameter is omitted, the - value of the DefaultMailbox property is used to determine the mailbox to operate on. - The criteria parameter is null. - The search could not be completed. The message - property of the exception contains the error message returned by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - The search values contain characters beyond the - ASCII range and the server does not support handling non-ASCII strings. - An enumerable collection of unique identifiers (UIDs) which can be used with the - GetMessage family of methods to download the mail messages. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - - This example demonstrates how to use the search method to get a list of all - unread messages in the mailbox. - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_Username", - "My_Password", true, AuthMethod.Login); - - // Get a list of unique identifiers (UIDs) of all unread messages in the mailbox. - IEnumerable<uint> uids = Client.Search( SearchCondition.Unseen() ); - - // Fetch the messages and print out their subject lines. - foreach(uint uid in uids) { - MailMessage message = Client.GetMessage(uid); - - Console.WriteLine(message.Subject); - } - - // Free up any resources associated with this instance. - Client.Dispose(); - - - This example demonstrates how to perform a search using multiple search criteria. - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_Username", - "My_Password", true, AuthMethod.Login); - - // Get a list of unique identifiers (UIDs) of all messages sent before the 01.04.2012 - // and that are larger than 1 Kilobyte. - IEnumerable<uint> uids = Client.Search( SearchCondition.SentBefore(new DateTime(2012, 4, 1)) - .And( SearchCondition.Larger(1024) )); - - Console.WriteLine("Found " + uids.Count() + " messages"); - - // Free up any resources associated with this instance. - Client.Dispose(); - - - The following example demonstrates how to perform a search using characters outside - the ASCII range. - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_Username", - "My_Password", true, AuthMethod.Login); - - // Get a list of unique identifiers (UIDs) of all messages that have - // the Japanese expression "フーリエ変換" in their subject lines. - try { - IEnumerable<uint> uids = Client.Search(SearchCondition.Subject("フーリエ変換")); - - Console.WriteLine("Found " + uids.Count() + " messages"); - } catch(NotSupportedException e) { - // If this exception is thrown, the server does not support searching for characters - // outside the ASCII range. - Console.WriteLine("The server does not support searching for non-ASCII values."); - } - - // Free up any resources associated with this instance. - Client.Dispose(); - - - - - - Retrieves the mail message with the specified unique identifier (UID). - - The unique identifier of the mail message to retrieve. - Set this to true to set the \Seen flag for this message on the - server. - The mailbox the message will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - An initialized instance of the MailMessage class representing the fetched mail - message. - The mail message could not be fetched. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - // Find all messages in the mailbox that were sent from "John.Doe@gmail.com". - IEnumerable<uint> uids = Client.Search( SearchCondition.From("John.Doe@gmail.com") ); - - // Fetch the first message and print it's subject and body. - if(uids.Count() > 0) { - MailMessage msg = Client.GetMessage(uids.First()); - - Console.WriteLine("Subject: " + msg.Subject); - Console.WriteLine("Body: " + msg.Body); - } - - Client.Dispose(); - - - - - - Retrieves the mail message with the specified unique identifier (UID) using the specified - fetch-option. - - The unique identifier of the mail message to retrieve. - A value from the FetchOptions enumeration which allows - for fetching selective parts of a mail message. - Set this to true to set the \Seen flag for this message on the - server. - The mailbox the message will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - An initialized instance of the MailMessage class representing the fetched mail - message. - The mail message could not be fetched. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - If you need more fine-grained control over which parts of a mail message to fetch, - consider using one of the overloaded GetMessage methods. - - - - This example demonstrates how to fetch only the mail message headers of - a mail message, instead of the entire message. - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - // Find all messages in the mailbox that have "Hello" in the subject. - IEnumerable<uint> uids = Client.Search( SearchCondition.Subject("Hello") ); - - // Fetch the mail headers of the first message and print it's subject line. - if(uids.Count() > 0) { - MailMessage msg = Client.GetMessage(uids.First(), FetchOptions.HeadersOnly); - - Console.WriteLine("Subject: " + msg.Subject); - } - - Client.Dispose(); - - - - - - Retrieves the mail message with the specified unique identifier (UID) while only fetching - those parts of the message that satisfy the condition of the specified delegate. - - The unique identifier of the mail message to retrieve. - A delegate which will be invoked for every MIME body-part of the - mail message to determine whether the part should be fetched from the server or - skipped. - Set this to true to set the \Seen flag for this message on the - server. - The mailbox the message will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - An initialized instance of the MailMessage class representing the fetched mail - message. - The callback parameter is null. - The mail message could not be fetched. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - - This example demonstrates how to use the ExaminePartDelegate with the GetMessage - method to only download message parts with a size of 1 Megabyte or less. - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - // Find all messages in the inbox. - IEnumerable<uint> uids = Client.Search( SearchCondition.All() ); - - // Download each message but skip message parts that are larger than 1 Megabyte. - foreach(uint uid in uids) { - MailMessage msg = Client.GetMessage(uid, (Bodypart part) => { - if(part.Size > (1024 * 1024)) - return false; - else - return true; - } - ); - } - - Client.Dispose(); - - - - - - Retrieves the set of mail messages with the specified unique identifiers (UIDs). - - An enumerable collection of unique identifiers of the mail messages to - retrieve. - Set this to true to set the \Seen flag for the fetched messages on the - server. - The mailbox the messages will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - An enumerable collection of initialized instances of the MailMessage class - representing the fetched mail messages. - The uids parameter is null. - The mail messages could not be fetched. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - // Find all messages that have been sent since June the 1st. - IEnumerable<uint> uids = Client.Search( SearchCondition.SentSince( new DateTime(2012, 6, 1) ) ); - - // Fetch the messages and print out their subject lines. - IEnumerable<MailMessage> messages = Client.GetMessages( uids ); - - foreach(MailMessage m in messages) - Console.WriteLine("Subject: " + m.Subject); - - Client.Dispose(); - - - - - - Retrieves the set of mail messages with the specified unique identifiers (UIDs) while only - fetching those parts of the messages that satisfy the condition of the specified delegate. - - An enumerable collection of unique identifiers of the mail messages to - retrieve. - A delegate which will be invoked for every MIME body-part of each - mail message to determine whether the part should be fetched from the server or - skipped. - Set this to true to set the \Seen flag for the fetched messages on the - server. - The mailbox the messages will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - An enumerable collection of initialized instances of the MailMessage class - representing the fetched mail messages. - The uids parameter or the callback parameter is - null. - The mail messages could not be fetched. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - - - - - Retrieves the set of mail messages with the specified unique identifiers (UIDs) using the - specified fetch-option. - - An enumerable collection of unique identifiers of the mail messages to - retrieve. - A value from the FetchOptions enumeration which allows for fetching - selective parts of a mail message. - Set this to true to set the \Seen flag for the fetched messages on the - server. - The mailbox the messages will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - An enumerable collection of initialized instances of the MailMessage class - representing the fetched mail messages. - The uids parameter is null. - The mail messages could not be fetched. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - // Find all messages that have been sent since June the 1st. - IEnumerable<uint> uids = Client.Search( SearchCondition.SentSince( new DateTime(2012, 6, 1) ) ); - - // Retrieve the messages and print out their subject lines. If any of the messages are multipart - // messages, only those parts, that have a content-type of text will be fetched. - IEnumerable<MailMessage> messages = Client.GetMessages( uids, FetchOptions.TextOnly ); - - foreach(MailMessage m in messages) - Console.WriteLine("Subject: " + m.Subject); - - Client.Dispose(); - - - - - - Stores the specified mail message on the IMAP server. - - The mail message to store on the server. - Set this to true to set the \Seen flag for the message on the - server. - The mailbox the message will be stored in. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to store - the message in. - The unique identifier (UID) of the stored message. - The message parameter is null. - The mail message could not be stored. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - - - This example demonstrates how to store a mail message on an IMAP server. - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - MailMessage message = CreateSimpleMailMessage(); - uint uid = Client.StoreMessage(message); - - Console.WriteLine("The UID of the stored mail message is " + uid); - - Client.Dispose(); - - // ........... - - // This creates a simple mail message with a text/plain body and a PNG image - // as a file attachment. - // Consult the MSDN website for more details on the System.Net.Mail.Mailmessage class. - static MailMessage CreateSimpleMailMessage() { - MailMessage message = new MailMessage(); - - message.From = new MailAddress("someone@someplace.com"); - message.To.Add("john.doe@someplace.com"); - - message.Subject = "This is just a test!"; - message.Body = "This is the text/plain body. An additional HTML body " + - "can optionally be attached as an alternate view"; - - // Add the attachment. - Attachment attachment = new Attachment("some_image.png", "image/png"); - attachment.Name = "my_attached_image.png"; - message.Attachments.Add(attachment); - - return message; - } - - - - - - Stores the specified mail messages on the IMAP server. - - An enumerable collection of mail messages to store on the - server. - Set this to true to set the \Seen flag for each message on the - server. - The mailbox the messages will be stored in. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to store - the messages in. - An enumerable collection of unique identifiers (UID) representing the stored - messages on the server. - The messages parameter is null. - The mail messages could not be stored. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - - - - - Copies the mail message with the specified UID to the specified destination mailbox. - - The UID of the mail message to copy. - The name of the mailbox to copy the message to. - The mailbox the message will be copied from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - The destination parameter is null. - The mail message could not be copied to the - specified destination. The message property of the exception contains the error message - returned by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - - Copies the mail messages with the specified UIDs to the specified destination mailbox. - - An enumerable collection of UIDs of the mail messages to copy. - The name of the mailbox to copy the messages to. - The mailbox the message will be copied from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - When copying many messages, this method is more efficient than calling - for each individual message. - The uids parameter or the destination parameter is - null. - The specified collection of UIDs is empty. - The mail messages could not be copied to the - specified destination. The message property of the exception contains the error message - returned by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - - Moves the mail message with the specified UID to the specified destination mailbox. - - The UID of the mail message to move. - The name of the mailbox to move the message into. - The mailbox the message will be moved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - The destination parameter is null. - The mail message could not be moved to the - specified destination. The message property of the exception contains the error message - returned by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - - - Moves the mail messages with the specified UIDs to the specified destination mailbox. - - An enumerable collection of UIDs of the mail messages to move. - The name of the mailbox to move the messages into. - The mailbox the messages will be moved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - When moving many messages, this method is more efficient than calling - for each individual message. - The uids parameter or the destination parameter is - null. - The mail messages could not be moved to the - specified destination. The message property of the exception contains the error message - returned by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - - - Deletes the mail message with the specified UID. - - The UID of the mail message to delete. - The mailbox the message will be deleted from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - The mail message could not be deleted. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - - Deletes the mail messages with the specified UIDs. - - An enumerable collection of UIDs of the mail messages to delete. - The mailbox the messages will be deleted from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - When deleting many messages, this method is more efficient than calling - for each individual message. - The uids parameter is null. - The specified collection of UIDs is empty. - The mail messages could not be deleted. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - - Retrieves the IMAP message flag attributes for the mail message with the specified unique - identifier (UID). - - The UID of the mail message to retrieve the flag attributes for. - The mailbox the message will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - An enumerable collection of message flags set for the message with the specified - UID. - The mail message flags could not be retrieved. - The message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - - - - Sets the IMAP message flag attributes for the mail message with the specified unique - identifier (UID). - - The UID of the mail message to set the flag attributes for. - The mailbox that contains the mail message. If this parameter is null, - the value of the DefaultMailbox property is used to determine the mailbox to operate - on. - One or multiple message flags from the MessageFlag enumeration. - The mail message flags could not be set. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - This method replaces the current flag attributes of the message with the specified - new flags. If you wish to retain the old attributes, use the - method instead. - - - - - - - Adds the specified set of IMAP message flags to the existing flag attributes of the mail - message with the specified unique identifier (UID). - - The UID of the mail message to add the flag attributes to. - The mailbox that contains the mail message. If this parameter is null, - the value of the DefaultMailbox property is used to determine the mailbox to operate - on. - One or multiple message flags from the MessageFlag enumeration. - The mail message flags could not be added. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - This method adds the specified set of flags to the existing set of flag attributes - of the message. If you wish to replace the old attributes, use the - method instead. - - - - - - - Removes the specified set of IMAP message flags from the existing flag attributes of the - mail message with the specified unique identifier (UID). - - The UID of the mail message to remove the flag attributes for. - The mailbox that contains the mail message. If this parameter is null, - the value of the DefaultMailbox property is used to determine the mailbox to operate - on. - One or multiple message flags from the MessageFlag enumeration. - The mail message flags could not be removed. - The message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - This method removes the specified set of flags from the existing set of flag - attributes of the message. If you wish to replace the old attributes, use the - method instead. - - - - - - - The default mailbox to operate on. - - The property is being set and the value is - null. - The property is being set and the value is the empty - string. - The default value for this property is "INBOX" which is a special name reserved - to mean "the primary mailbox for this user on this server". - - - - Determines whether the client is authenticated with the server. - - - - - The event that is raised when a new mail message has been received by the server. - - To probe a server for IMAP IDLE support, the - method can be used, specifying "IDLE" for the capability parameter. - - Please note that the event handler will be executed on a threadpool thread. - - - This example demonstrates how to receive IMAP IDLE notifications. - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - // Make sure our server actually supports IMAP IDLE. - if(!Client.Supports("IDLE")) - throw new Exception("This server does not support IMAP IDLE"); - - // Our event handler will be called whenever a new message is received - // by the server. - Client.NewMessage += new EventHandler<IdleMessageEventArgs>(OnNewMessage); - - // ......... - - Client.Dispose(); - - // ........ - - void OnNewMessage(object sender, IdleMessageEventArgs e) { - Console.WriteLine("Received a new message!"); - Console.WriteLine("Total number of messages in the mailbox: " + - e.MessageCount); - } - - - - - - The event that is raised when a message has been deleted on the server. - - To probe a server for IMAP IDLE support, the - method can be used, specifying "IDLE" for the capability parameter. - - Please note that the event handler will be executed on a threadpool thread. - - - This example demonstrates how to receive IMAP IDLE notifications. - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - // Make sure our server actually supports IMAP IDLE. - if(!Client.Supports("IDLE")) - throw new Exception("This server does not support IMAP IDLE"); - - // Our event handler will be called whenever a message is deleted on the server. - Client.MessageDeleted += new EventHandler<IdleMessageEventArgs>(OnMessageDeleted); - - // ......... - - // Don't forget to dispose the client once you're done with it. - Client.Dispose(); - - // ........ - - void OnMessageDeleted(object sender, IdleMessageEventArgs e) { - Console.WriteLine("A mail message was deleted on the server!"); - Console.WriteLine("Total number of mail messages in the mailbox: " + - e.MessageCount); - } - - - - - - Enables applications to communicate with a mail server using the Internet Message Access - Protocol (IMAP). - - - - - This constructor is solely used for unit testing. - - A stream to initialize the ImapClient instance with. - - - - Initializes a new instance of the ImapClient class and connects to the specified port - on the specified host, optionally using the Secure Socket Layer (SSL) security protocol. - - The DNS name of the server to which you intend to connect. - The port number of the server to which you intend to connect. - Set to true to use the Secure Socket Layer (SSL) security protocol. - Delegate used for verifying the remote Secure Sockets - Layer (SSL) certificate which is used for authentication. Can be null if not needed. - The port parameter is not between MinPort - and MaxPort. - The hostname parameter is null. - An unexpected response has been received from - the server upon connecting. - There was a failure writing to or reading from the - network. - An error occurred while accessing the socket used for - establishing the connection to the IMAP server. Use the ErrorCode property to obtain the - specific error code. - An authentication - error occured while trying to establish a secure connection. - - This example shows how to establish a connection with an IMAP server - and print out the IMAP options, which the server supports. - - // Connect to Gmail's IMAP server on port 993 using SSL. - ImapClient Client = new ImapClient("imap.gmail.com", 993, true); - - // Print out the server's capabilities. - foreach(string s in Client.Capabilities()) - Console.WriteLine(s); - - Client.Dispose(); - - - - - - Initializes a new instance of the ImapClient class and connects to the specified port on - the specified host, optionally using the Secure Socket Layer (SSL) security protocol and - attempts to authenticate with the server using the specified authentication method and - credentials. - - The DNS name of the server to which you intend to connect. - The port number of the server to which you intend to connect. - The username with which to login in to the IMAP server. - The password with which to log in to the IMAP server. - The requested method of authentication. Can be one of the values - of the AuthMethod enumeration. - Set to true to use the Secure Socket Layer (SSL) security protocol. - Delegate used for verifying the remote Secure Sockets Layer - (SSL) certificate which is used for authentication. Can be null if not needed. - The port parameter is not between MinPort - and MaxPort. - The hostname parameter is null. - An unexpected response has been received from - the server upon connecting. - There was a failure writing to or reading from the - network. - The provided credentials were rejected by the - server. - An error occurred while accessing the socket used for - establishing the connection to the IMAP server. Use the ErrorCode property to obtain the - specific error code. - An authentication - error occured while trying to establish a secure connection. - - This example demonstrates how to connect and login to an IMAP server. - - // Connect to Gmail's IMAP server on port 993 using SSL. - ImapClient Client = null; - try { - Client = new ImapClient("imap.gmail.com", 993, "My_Username", - "My_Password", true, AuthMethod.Auto); - - // Check if the server supports IMAP IDLE. - if(Client.Supports("IDLE")) - Console.WriteLine("This server supports the IMAP4 IDLE specification"); - else - Console.WriteLine("This server does not support IMAP IDLE"); - } - catch(InvalidCredentialsException) { - Console.WriteLine("The server rejected the supplied credentials"); - } - finally { - // Release resources. - if(Client != null) - Client.Dispose(); - } - - - - - - Connects to the specified port on the specified host, optionally using the Secure Socket Layer - (SSL) security protocol. - - The DNS name of the server to which you intend to connect. - The port number of the server to which you intend to connect. - Set to true to use the Secure Socket Layer (SSL) security protocol. - Delegate used for verifying the remote Secure Sockets Layer (SSL) - certificate which is used for authentication. Can be null if not needed. - The port parameter is not between MinPort - and MaxPort. - The hostname parameter is null. - An unexpected response has been received - from the server upon connecting. - There was a failure writing to or reading from the - network. - An error occurred while accessing the socket used for - establishing the connection to the IMAP server. Use the ErrorCode property to obtain the - specific error code. - An authentication - error occured while trying to establish a secure connection. - - - - Determines whether the specified response is a valid IMAP OK response. - - A response string received from the server. - A tag if the response is associated with a command. - true if the response is a valid IMAP OK response; Otherwise false. - - - - Attempts to establish an authenticated session with the server using the specified - credentials. - - The username with which to login in to the IMAP server. - The password with which to log in to the IMAP server. - The requested method of authentication. Can be one of the values - of the AuthMethod enumeration. - The username parameter or the password parameter - is null. - There was a failure writing to or reading from the - network. - The server rejected the supplied - credentials. - The specified authentication method is not - supported by the server. - - This example demonstrates how to authenticate with an IMAP server once a connection - has been established. Notice that you can also connect and login in one step - using one of the overloaded constructors. - - // Connect to Gmail's IMAP server on port 993 using SSL. - ImapClient Client = new ImapClient("imap.gmail.com", 993, true); - - try { - Client.Login("My_Username", "My_Password", AuthMethod.Auto); - } - catch(InvalidCredentialsException) { - Console.WriteLine("The server rejected the supplied credentials."); - } - - Client.Dispose(); - - - - - - Performs authentication using the most secure authentication mechanism supported by the - server. - - The tag identifier to use for performing the authentication - commands. - The username with which to login in to the IMAP server. - The password with which to log in to the IMAP server. - The response sent by the server. - The order of preference of authentication types employed by this method is - Ntlm, Scram-Sha-1, Digest-Md5, followed by Cram-Md5 and finally plaintext Login as - a last resort. - - - - Performs an actual IMAP "LOGIN" command using the specified username and plain-text - password. - - The tag identifier to use for performing the authentication - commands. - The username with which to login in to the IMAP server. - The password with which to log in to the IMAP server. - The response sent by the server. - - - - Performs NTLM and Kerberos authentication via the Security Support Provider Interface (SSPI). - - The tag identifier to use for performing the authentication - commands. - The username with which to login in to the IMAP server. - The password with which to log in to the IMAP server. - True to authenticate using NTLM, otherwise GSSAPI (Kerberos) is - used. - The response sent by the server. - The specified authentication method is not - supported by the server. - - - - Performs authentication using a SASL authentication mechanism via IMAP's authenticate - command. - - The tag identifier to use for performing the authentication - commands. - The username with which to login in to the IMAP server. - The password with which to log in to the IMAP server. - The name of the SASL authentication mechanism to use. - The response sent by the server. - The authentication mechanism with the specified name could - not be found. - The specified authentication mechanism is not - supported by the server. - An unexpected response has been received from - the server. - - - - Logs an authenticated client out of the server. After the logout sequence has been completed, - the server closes the connection with the client. - - An unexpected response has been received from - the server during the logout sequence. - Calling this method in non-authenticated state has no effect. - There was a failure writing to or reading from the - network. - The ImapClient object has been disposed. - - - - Generates a unique identifier to prefix a command with, as is required by the IMAP protocol. - - A unique identifier string. - - - - Sends a command string to the server. This method blocks until the command has been - transmitted. - - The command to send to the server. The string is suffixed by CRLF - prior to sending. - - - - Sends a command string to the server and subsequently waits for a response, which is then - returned to the caller. This method blocks until the server response has been received. - - The command to send to the server. This is suffixed by CRLF prior - to sending. - Set to true to resolve possible literals returned by the - server (Refer to RFC 3501 Section 4.3 for details). - The response received by the server. - - - - Waits for a response from the server. This method blocks until a response has been received. - - Set to true to resolve possible literals returned by the - server (Refer to RFC 3501 Section 4.3 for details). - A response string from the server - The underlying socket is closed or there was a failure - reading from the network. - - - - Reads the specified amount of bytes from the server. This method blocks until the specified - amount of bytes has been read from the network stream. - - The number of bytes to read. - The read bytes as an ASCII-encoded string. - The underlying socket is closed or there was a failure - reading from the network. - - - - Returns an enumerable collection of capabilities the IMAP server supports. All strings in - the returned collection are guaranteed to be upper-case. - - An unexpected response has been received from - the server; The message property of the exception contains the error message returned by - the server. - There was a failure writing to or reading from the - network. - The ImapClient object has been disposed. - An enumerable collection of capabilities supported by the server. - This method may be called in non-authenticated state. - - - - Determines whether the specified capability is supported by the server. - - The IMAP capability to probe for (for example "IDLE"). - The capability parameter is null. - An unexpected response has been received from - the server; The message property of the exception contains the error message returned by - the server. - There was a failure writing to or reading from the - network. - The ImapClient object has been disposed. - true if the specified capability is supported by the server; Otherwise - false. - This method may be called in non-authenticated state. - - This example demonstrates how to connect and login to an IMAP server. - - // Connect to Gmail's IMAP server on port 993 using SSL. - ImapClient Client = null; - try { - Client = new ImapClient("imap.gmail.com", 993, "My_Username", - "My_Password", true, AuthMethod.Auto); - - // Check if the server supports IMAP IDLE. - if(Client.Supports("IDLE")) - Console.WriteLine("This server supports the IMAP4 IDLE specification"); - else - Console.WriteLine("This server does not support IMAP IDLE"); - } - catch(InvalidCredentialsException) { - Console.WriteLine("The server rejected the supplied credentials"); - } - finally { - // Release resources. - if(Client != null) - Client.Dispose(); - } - - - - - - Changes the name of the specified mailbox. - - The mailbox to rename. - The new name the mailbox will be renamed to. - The mailbox parameter or the - newName parameter is null. - The mailbox could not be renamed; The message - property of the exception contains the error message returned by the server. - There was a failure writing to or reading from the - network. - The ImapClient object has been disposed. - The method was called in non-authenticated - state, i.e. before logging in. - - - - Permanently removes the specified mailbox. - - The name of the mailbox to remove. - The mailbox parameter is null. - The specified mailbox could not be removed. - The message property of the exception contains the error message returned by the - server. - There was a failure writing to or reading from the - network. - The ImapClient object has been disposed. - The method was called in non-authenticated - state, i.e. before logging in. - - - - Creates a new mailbox with the specified name. - - The name of the mailbox to create. - The mailbox parameter is null. - The mailbox with the specified name could - not be created. The message property of the exception contains the error message returned - by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - Selects the specified mailbox so that the messages of the mailbox can be accessed. - - The mailbox to select. If this parameter is null, the - default mailbox is selected. - The specified mailbox could not be selected. - The message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - IMAP Idle must be paused or stopped before calling this method. - - - - Retrieves a list of all available and selectable mailboxes on the server. - - An enumerable collection of the names of all available and selectable - mailboxes. - The list of mailboxes could not be retrieved. - The message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - The mailbox name "INBOX" is a special name reserved to mean "the primary mailbox - for this user on this server". - - - - Permanently removes all messages that have the \Deleted flag set from the specified mailbox. - - The mailbox to remove all messages from that have the \Deleted flag - set. If this parameter is omitted, the value of the DefaultMailbox property is used to - determine the mailbox to operate on. - The expunge operation could not be completed. - The message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - - Retrieves status information (total number of messages, various attributes as well as quota - information) for the specified mailbox. - The mailbox to retrieve status information for. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - A MailboxInfo object containing status information for the mailbox. - The operation could not be completed because - the server returned an error. The message property of the exception contains the error message - returned by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - Not all IMAP servers support the retrieval of quota information. If it is not - possible to retrieve this information, the UsedStorage and FreeStorage properties of the - returned MailboxStatus instance are set to 0. - - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - // Get a list of all mailboxes. - foreach(string m in Client.ListMailboxes()) - { - MailboxInfo info = Client.GetMailboxInfo(m); - - Console.WriteLine(info.Name); - Console.WriteLine("Used storage: " + info.UsedStorage); - Console.WriteLine("Free storage: " + info.FreeStorage); - Console.WriteLine("Next UID: " + info.NextUID); - Console.WriteLine("Messages: " + info.Messages); - Console.WriteLine("Unread: " + info.Unread); - Console.WriteLine("Set Flags: "); - foreach (MailboxFlag f in info.Flags) - Console.Write(f.ToString() + ","); - Console.WriteLine(); - } - - Client.Dispose(); - - - - - - Retrieves the set of special-use flags associated with the specified mailbox. - - The mailbox to receive the special-use flags for. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - The operation could not be completed because - the server returned an error. The message property of the exception contains the error - message returned by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - An enumerable collection of special-use flags set on the specified - mailbox. - This feature is an optional extension to the IMAP protocol and as such some servers - may not report any flags at all. - - - - Retrieves status information (total number of messages, number of unread messages, etc.) for - the specified mailbox. - The mailbox to retrieve status information for. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - A MailboxStatus object containing status information for the mailbox. - The operation could not be completed because - the server returned an error. The message property of the exception contains the error - message returned by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - Searches the specified mailbox for messages that match the given search criteria. - - A search criteria expression; Only messages that match this - expression will be included in the result set returned by this method. - The mailbox that will be searched. If this parameter is omitted, the - value of the DefaultMailbox property is used to determine the mailbox to operate on. - The criteria parameter is null. - The search could not be completed. The message - property of the exception contains the error message returned by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - The search values contain characters beyond the - ASCII range and the server does not support handling non-ASCII strings. - An enumerable collection of unique identifiers (UIDs) which can be used with the - GetMessage family of methods to download the mail messages. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - - This example demonstrates how to use the search method to get a list of all - unread messages in the mailbox. - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_Username", - "My_Password", true, AuthMethod.Login); - - // Get a list of unique identifiers (UIDs) of all unread messages in the mailbox. - IEnumerable<uint> uids = Client.Search( SearchCondition.Unseen() ); - - // Fetch the messages and print out their subject lines. - foreach(uint uid in uids) { - MailMessage message = Client.GetMessage(uid); - - Console.WriteLine(message.Subject); - } - - // Free up any resources associated with this instance. - Client.Dispose(); - - - This example demonstrates how to perform a search using multiple search criteria. - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_Username", - "My_Password", true, AuthMethod.Login); - - // Get a list of unique identifiers (UIDs) of all messages sent before the 01.04.2012 - // and that are larger than 1 Kilobyte. - IEnumerable<uint> uids = Client.Search( SearchCondition.SentBefore(new DateTime(2012, 4, 1)) - .And( SearchCondition.Larger(1024) )); - - Console.WriteLine("Found " + uids.Count() + " messages"); - - // Free up any resources associated with this instance. - Client.Dispose(); - - - The following example demonstrates how to perform a search using characters outside - the ASCII range. - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_Username", - "My_Password", true, AuthMethod.Login); - - // Get a list of unique identifiers (UIDs) of all messages that have - // the Japanese expression "フーリエ変換" in their subject lines. - try { - IEnumerable<uint> uids = Client.Search(SearchCondition.Subject("フーリエ変換")); - - Console.WriteLine("Found " + uids.Count() + " messages"); - } catch(NotSupportedException e) { - // If this exception is thrown, the server does not support searching for characters - // outside the ASCII range. - Console.WriteLine("The server does not support searching for non-ASCII values."); - } - - // Free up any resources associated with this instance. - Client.Dispose(); - - - - - - Retrieves the mail message with the specified unique identifier (UID). - - The unique identifier of the mail message to retrieve. - Set this to true to set the \Seen flag for this message on the - server. - The mailbox the message will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - An initialized instance of the MailMessage class representing the fetched mail - message. - The mail message could not be fetched. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - // Find all messages in the mailbox that were sent from "John.Doe@gmail.com". - IEnumerable<uint> uids = Client.Search( SearchCondition.From("John.Doe@gmail.com") ); - - // Fetch the first message and print it's subject and body. - if(uids.Count() > 0) { - MailMessage msg = Client.GetMessage(uids.First()); - - Console.WriteLine("Subject: " + msg.Subject); - Console.WriteLine("Body: " + msg.Body); - } - - Client.Dispose(); - - - - - - Retrieves the mail message with the specified unique identifier (UID) using the specified - fetch-option. - - The unique identifier of the mail message to retrieve. - A value from the FetchOptions enumeration which allows - for fetching selective parts of a mail message. - Set this to true to set the \Seen flag for this message on the - server. - The mailbox the message will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - An initialized instance of the MailMessage class representing the fetched mail - message. - The mail message could not be fetched. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - If you need more fine-grained control over which parts of a mail message to fetch, - consider using one of the overloaded GetMessage methods. - - - - This example demonstrates how to fetch only the mail message headers of - a mail message, instead of the entire message. - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - // Find all messages in the mailbox that have "Hello" in the subject. - IEnumerable<uint> uids = Client.Search( SearchCondition.Subject("Hello") ); - - // Fetch the mail headers of the first message and print it's subject line. - if(uids.Count() > 0) { - MailMessage msg = Client.GetMessage(uids.First(), FetchOptions.HeadersOnly); - - Console.WriteLine("Subject: " + msg.Subject); - } - - Client.Dispose(); - - - - - - Retrieves the mail message with the specified unique identifier (UID) while only fetching - those parts of the message that satisfy the condition of the specified delegate. - - The unique identifier of the mail message to retrieve. - A delegate which will be invoked for every MIME body-part of the - mail message to determine whether the part should be fetched from the server or - skipped. - Set this to true to set the \Seen flag for this message on the - server. - The mailbox the message will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - An initialized instance of the MailMessage class representing the fetched mail - message. - The callback parameter is null. - The mail message could not be fetched. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - - This example demonstrates how to use the ExaminePartDelegate with the GetMessage - method to only download message parts with a size of 1 Megabyte or less. - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - // Find all messages in the inbox. - IEnumerable<uint> uids = Client.Search( SearchCondition.All() ); - - // Download each message but skip message parts that are larger than 1 Megabyte. - foreach(uint uid in uids) { - MailMessage msg = Client.GetMessage(uid, (Bodypart part) => { - if(part.Size > (1024 * 1024)) - return false; - else - return true; - } - ); - } - - Client.Dispose(); - - - - - - Retrieves the set of mail messages with the specified unique identifiers (UIDs). - - An enumerable collection of unique identifiers of the mail messages to - retrieve. - Set this to true to set the \Seen flag for the fetched messages on the - server. - The mailbox the messages will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - An enumerable collection of initialized instances of the MailMessage class - representing the fetched mail messages. - The uids parameter is null. - The mail messages could not be fetched. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - // Find all messages that have been sent since June the 1st. - IEnumerable<uint> uids = Client.Search( SearchCondition.SentSince( new DateTime(2012, 6, 1) ) ); - - // Fetch the messages and print out their subject lines. - IEnumerable<MailMessage> messages = Client.GetMessages( uids ); - - foreach(MailMessage m in messages) - Console.WriteLine("Subject: " + m.Subject); - - Client.Dispose(); - - - - - - Retrieves the set of mail messages with the specified unique identifiers (UIDs) while only - fetching those parts of the messages that satisfy the condition of the specified delegate. - - An enumerable collection of unique identifiers of the mail messages to - retrieve. - A delegate which will be invoked for every MIME body-part of each - mail message to determine whether the part should be fetched from the server or - skipped. - Set this to true to set the \Seen flag for the fetched messages on the - server. - The mailbox the messages will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - An enumerable collection of initialized instances of the MailMessage class - representing the fetched mail messages. - The uids parameter or the callback parameter is - null. - The mail messages could not be fetched. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - - - - - Retrieves the set of mail messages with the specified unique identifiers (UIDs) using the - specified fetch-option. - - An enumerable collection of unique identifiers of the mail messages to - retrieve. - A value from the FetchOptions enumeration which allows for fetching - selective parts of a mail message. - Set this to true to set the \Seen flag for the fetched messages on the - server. - The mailbox the messages will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - An enumerable collection of initialized instances of the MailMessage class - representing the fetched mail messages. - The uids parameter is null. - The mail messages could not be fetched. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - // Find all messages that have been sent since June the 1st. - IEnumerable<uint> uids = Client.Search( SearchCondition.SentSince( new DateTime(2012, 6, 1) ) ); - - // Retrieve the messages and print out their subject lines. If any of the messages are multipart - // messages, only those parts, that have a content-type of text will be fetched. - IEnumerable<MailMessage> messages = Client.GetMessages( uids, FetchOptions.TextOnly ); - - foreach(MailMessage m in messages) - Console.WriteLine("Subject: " + m.Subject); - - Client.Dispose(); - - - - - - Stores the specified mail message on the IMAP server. - - The mail message to store on the server. - Set this to true to set the \Seen flag for the message on the - server. - The mailbox the message will be stored in. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to store - the message in. - The unique identifier (UID) of the stored message. - The message parameter is null. - The mail message could not be stored. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - - - This example demonstrates how to store a mail message on an IMAP server. - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - MailMessage message = CreateSimpleMailMessage(); - uint uid = Client.StoreMessage(message); - - Console.WriteLine("The UID of the stored mail message is " + uid); - - Client.Dispose(); - - // ........... - - // This creates a simple mail message with a text/plain body and a PNG image - // as a file attachment. - // Consult the MSDN website for more details on the System.Net.Mail.Mailmessage class. - static MailMessage CreateSimpleMailMessage() { - MailMessage message = new MailMessage(); - - message.From = new MailAddress("someone@someplace.com"); - message.To.Add("john.doe@someplace.com"); - - message.Subject = "This is just a test!"; - message.Body = "This is the text/plain body. An additional HTML body " + - "can optionally be attached as an alternate view"; - - // Add the attachment. - Attachment attachment = new Attachment("some_image.png", "image/png"); - attachment.Name = "my_attached_image.png"; - message.Attachments.Add(attachment); - - return message; - } - - - - - - Stores the specified mail messages on the IMAP server. - - An enumerable collection of mail messages to store on the - server. - Set this to true to set the \Seen flag for each message on the - server. - The mailbox the messages will be stored in. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to store - the messages in. - An enumerable collection of unique identifiers (UID) representing the stored - messages on the server. - The messages parameter is null. - The mail messages could not be stored. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - A unique identifier (UID) is a 32-bit value assigned to each message which uniquely - identifies the message within the respective mailbox. No two messages in a mailbox share - the same UID. - - - - - Retrieves the mail header for the mail message with the specified unique identifier (UID). - - The UID of the mail message to retrieve the mail header for. - Set this to true to set the \Seen flag for the fetched messages on the - server. - The mailbox the messages will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - A string containing the raw mail header of the mail message with the specified - UID. - The mail header could not be fetched. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - Retrieves the body structure for the mail message with the specified unique identifier (UID). - - The UID of the mail message to retrieve the body structure for. - The mailbox the messages will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - A string containing the raw body structure of the mail message with the specified - UID. - The body structure could not be fetched. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - A body structure is a textual description of the layout of a mail message. It is - described in some detail in RFC 3501 under 7.4.2 FETCH response. - - - - Retrieves the MIME body-part with the specified part number of the multipart message with - the specified unique identifier (UID). - - The UID of the mail message to retrieve a MIME body part for. - The part number of the body part to fetch. - Set this to true to set the \Seen flag for the fetched messages on the - server. - The mailbox the messages will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - A string containing the specified body part of the mail message with the specified - UID. - The body part could not be fetched. The message - property of the exception contains the error message returned by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - Retrieves the raw MIME/RFC822 mail message data for the mail message with the specified UID. - - The UID of the mail message to retrieve as a MIME/RFC822 string. - Set this to true to set the \Seen flag for the fetched message on the - server. - The mailbox the message will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - A string containing the raw MIME/RFC822 data of the mail message with the - specified UID. - The mail message data could not be fetched. - The message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - Retrieves the highest UID in the specified mailbox. - - The mailbox to find the highest UID for. If this parameter is null, - the value of the DefaultMailbox property is used to determine the mailbox to operate - on. - The highest unique identifier value (UID) in the mailbox. - The UID could not be determined. The message - property of the exception contains the error message returned by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - The highest UID usually corresponds to the newest message in a mailbox. - - - - Copies the mail message with the specified UID to the specified destination mailbox. - - The UID of the mail message to copy. - The name of the mailbox to copy the message to. - The mailbox the message will be copied from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - The destination parameter is null. - The mail message could not be copied to the - specified destination. The message property of the exception contains the error message - returned by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - - Copies the mail messages with the specified UIDs to the specified destination mailbox. - - An enumerable collection of UIDs of the mail messages to copy. - The name of the mailbox to copy the messages to. - The mailbox the message will be copied from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - When copying many messages, this method is more efficient than calling - for each individual message. - The uids parameter or the destination parameter is - null. - The specified collection of UIDs is empty. - The mail messages could not be copied to the - specified destination. The message property of the exception contains the error message - returned by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - - Moves the mail message with the specified UID to the specified destination mailbox. - - The UID of the mail message to move. - The name of the mailbox to move the message into. - The mailbox the message will be moved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - The destination parameter is null. - The mail message could not be moved to the - specified destination. The message property of the exception contains the error message - returned by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - - - Moves the mail messages with the specified UIDs to the specified destination mailbox. - - An enumerable collection of UIDs of the mail messages to move. - The name of the mailbox to move the messages into. - The mailbox the messages will be moved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - When moving many messages, this method is more efficient than calling - for each individual message. - The uids parameter or the destination parameter is - null. - The mail messages could not be moved to the - specified destination. The message property of the exception contains the error message - returned by the server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - - - Deletes the mail message with the specified UID. - - The UID of the mail message to delete. - The mailbox the message will be deleted from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - The mail message could not be deleted. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - - Deletes the mail messages with the specified UIDs. - - An enumerable collection of UIDs of the mail messages to delete. - The mailbox the messages will be deleted from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - When deleting many messages, this method is more efficient than calling - for each individual message. - The uids parameter is null. - The specified collection of UIDs is empty. - The mail messages could not be deleted. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - - Retrieves the IMAP message flag attributes for the mail message with the specified unique - identifier (UID). - - The UID of the mail message to retrieve the flag attributes for. - The mailbox the message will be retrieved from. If this parameter is - omitted, the value of the DefaultMailbox property is used to determine the mailbox to - operate on. - An enumerable collection of message flags set for the message with the specified - UID. - The mail message flags could not be retrieved. - The message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - - - - - - - Sets the IMAP message flag attributes for the mail message with the specified unique - identifier (UID). - - The UID of the mail message to set the flag attributes for. - The mailbox that contains the mail message. If this parameter is null, - the value of the DefaultMailbox property is used to determine the mailbox to operate - on. - One or multiple message flags from the MessageFlag enumeration. - The mail message flags could not be set. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - This method replaces the current flag attributes of the message with the specified - new flags. If you wish to retain the old attributes, use the - method instead. - - - - - - - Adds the specified set of IMAP message flags to the existing flag attributes of the mail - message with the specified unique identifier (UID). - - The UID of the mail message to add the flag attributes to. - The mailbox that contains the mail message. If this parameter is null, - the value of the DefaultMailbox property is used to determine the mailbox to operate - on. - One or multiple message flags from the MessageFlag enumeration. - The mail message flags could not be added. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - This method adds the specified set of flags to the existing set of flag attributes - of the message. If you wish to replace the old attributes, use the - method instead. - - - - - - - Removes the specified set of IMAP message flags from the existing flag attributes of the - mail message with the specified unique identifier (UID). - - The UID of the mail message to remove the flag attributes for. - The mailbox that contains the mail message. If this parameter is null, - the value of the DefaultMailbox property is used to determine the mailbox to operate - on. - One or multiple message flags from the MessageFlag enumeration. - The mail message flags could not be removed. - The message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The method was called in non-authenticated - state, i.e. before logging in. - This method removes the specified set of flags from the existing set of flag - attributes of the message. If you wish to replace the old attributes, use the - method instead. - - - - - - - Starts receiving of IMAP IDLE notifications from the IMAP server. - - An unexpected program condition occured. - The IDLE operation could not be completed. The - message property of the exception contains the error message returned by the - server. - The server does not support the IMAP4 IDLE - command. - There was a failure writing to or reading from the - network. - The ImapClient object has been disposed. - The method was called in non-authenticated - state, i.e. before logging in. - Calling this method when already receiving idle notifications has no - effect. - - - - - - - Stops receiving IMAP IDLE notifications from the IMAP server. - - The IDLE operation could not be completed. The - message property of the exception contains the error message returned by the - server. - The server does not support the IMAP4 IDLE - command. - There was a failure writing to or reading from the - network. - The ImapClient object has been disposed. - The method was called in non-authenticated - state, i.e. before logging in. - Calling this method when not receiving idle notifications has no effect. - - - - - - Temporarily pauses receiving IMAP IDLE notifications from the IMAP server. - - The IDLE operation could not be completed. The - message property of the exception contains the error message returned by the - server. - The server does not support the IMAP4 IDLE - command. - There was a failure writing to or reading from the - network. - The ImapClient object has been disposed. - The method was called in non-authenticated - state, i.e. before logging in. - To resume receiving IDLE notifications ResumeIdling must be called. - - - - - - - Resumes receiving IMAP IDLE notifications from the IMAP server. - - An unexpected program condition occured. - The IDLE operation could not be completed. The - message property of the exception contains the error message returned by the - server. - The server does not support the IMAP4 IDLE - command. - There was a failure writing to or reading from the - network. - The ImapClient object has been disposed. - The method was called in non-authenticated - state, i.e. before logging in. - - - - - The main idle loop. Waits for incoming IMAP IDLE notifications and dispatches - them as events. This runs in its own thread whenever IMAP IDLE - notifications are being received. - - - - - Blocks on a queue and wakes up whenever a new notification is put into the queue. The - notification is then examined and dispatched as an event. - - - - - Issues a NOOP command to the IMAP server. Called in the context of a System.Timer event - when IDLE notifications are being received. - - This is needed by the IMAP IDLE mechanism to give the server an indication that the - connection is still active. - - - - - Retrieves IMAP QUOTA information for the specified mailbox. - - The mailbox to retrieve QUOTA information for. If this parameter is - null, the value of the DefaultMailbox property is used to determine the mailbox to operate - on. - An enumerable collection of MailboxQuota objects describing usage and limits of the - quota roots for the mailbox. - The quota operation could not be completed. The - message property of the exception contains the error message returned by the - server. - The ImapClient object has been disposed. - There was a failure writing to or reading from the - network. - The IMAP4 QUOTA extension is not supported by - the server. - The method was called in non-authenticated - state, i.e. before logging in. - - - - Releases all resources used by the current instance of the ImapClient class. - - - - - Releases all resources used by the current instance of the ImapClient class, optionally - disposing of managed resource. - - true to dispose of managed resources, otherwise false. - - - - Asserts the instance has not been disposed of and is in a valid state. - - The ImapClient object has been - disposed. - The method was called in non-authenticated - state, i.e. before logging in. - - - - The default mailbox to operate on. - - The property is being set and the value is - null. - The property is being set and the value is the empty - string. - The default value for this property is "INBOX" which is a special name reserved - to mean "the primary mailbox for this user on this server". - - - - Determines whether the client is authenticated with the server. - - - - - The event that is raised when a new mail message has been received by the server. - - To probe a server for IMAP IDLE support, the - method can be used, specifying "IDLE" for the capability parameter. - - Please note that the event handler will be executed on a threadpool thread. - - - This example demonstrates how to receive IMAP IDLE notifications. - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - // Make sure our server actually supports IMAP IDLE. - if(!Client.Supports("IDLE")) - throw new Exception("This server does not support IMAP IDLE"); - - // Our event handler will be called whenever a new message is received - // by the server. - Client.NewMessage += new EventHandler<IdleMessageEventArgs>(OnNewMessage); - - // ......... - - Client.Dispose(); - - // ........ - - void OnNewMessage(object sender, IdleMessageEventArgs e) { - Console.WriteLine("Received a new message!"); - Console.WriteLine("Total number of messages in the mailbox: " + - e.MessageCount); - } - - - - - - The event that is raised when a message has been deleted on the server. - - To probe a server for IMAP IDLE support, the - method can be used, specifying "IDLE" for the capability parameter. - - Please note that the event handler will be executed on a threadpool thread. - - - This example demonstrates how to receive IMAP IDLE notifications. - - ImapClient Client = new ImapClient("imap.gmail.com", 993, "My_UsernamMe", - "My_Password", true, AuthMethod.Login); - - // Make sure our server actually supports IMAP IDLE. - if(!Client.Supports("IDLE")) - throw new Exception("This server does not support IMAP IDLE"); - - // Our event handler will be called whenever a message is deleted on the server. - Client.MessageDeleted += new EventHandler<IdleMessageEventArgs>(OnMessageDeleted); - - // ......... - - // Don't forget to dispose the client once you're done with it. - Client.Dispose(); - - // ........ - - void OnMessageDeleted(object sender, IdleMessageEventArgs e) { - Console.WriteLine("A mail message was deleted on the server!"); - Console.WriteLine("Total number of mail messages in the mailbox: " + - e.MessageCount); - } - - - - - - The event that is raised when an I/O exception occurs in the idle-thread. - - - An I/O exception can occur if the underlying network connection has been reset or the - server unexpectedly closed the connection. - - - - - A delegate which is invoked during a call to GetMessage or GetMessages for every MIME part in - a multipart mail message. The delegate can examine the MIME body part and decide to either - include it in the returned mail message or dismiss it. - - A MIME body part of a mail message which consists of multiple parts. - true to include the body part in the returned MailMessage object, or false to skip - it. - - - - The exception that is thrown when an unexpected response is received from the server. - - - - - Initializes a new instance of the BadServerResponseException class - - - - - Initializes a new instance of the BadServerResponseException class with its message - string set to . - - A description of the error. The content of message is intended - to be understood by humans. - - - - Initializes a new instance of the BadServerResponseException class with its message - string set to and a reference to the inner exception that - is the cause of this exception. - - A description of the error. The content of message is intended - to be understood by humans. - The exception that is the cause of the current exception. - - - - Initializes a new instance of the BadServerResponseException class with the specified - serialization and context information. - - An object that holds the serialized object data about the exception - being thrown. - An object that contains contextual information about the source - or destination. - - - - The exception that is thrown when the supplied credentials were rejected by the server. - - - - - Initializes a new instance of the InvalidCredentialsException class - - - - - Initializes a new instance of the InvalidCredentialsException class with its message - string set to . - - A description of the error. The content of message is intended - to be understood by humans. - - - - Initializes a new instance of the InvalidCredentialsException class with its message - string set to and a reference to the inner exception that - is the cause of this exception. - - A description of the error. The content of message is intended - to be understood by humans. - The exception that is the cause of the current exception. - - - - Initializes a new instance of the InvalidCredentialsException class with the specified - serialization and context information. - - An object that holds the serialized object data about the exception - being thrown. - An object that contains contextual information about the source - or destination. - - - - The exception that is thrown when a client has not authenticated with the server and - attempts to call a method which can only be called when authenticated. - - - - - Initializes a new instance of the NotAuthenticatedException class - - - - - Initializes a new instance of the NotAuthenticatedException class with its message - string set to . - - A description of the error. The content of message is intended - to be understood by humans. - - - - Initializes a new instance of the NotAuthenticatedException class with its message - string set to and a reference to the inner exception that - is the cause of this exception. - - A description of the error. The content of message is intended - to be understood by humans. - The exception that is the cause of the current exception. - - - - Initializes a new instance of the NotAuthenticatedException class with the specified - serialization and context information. - - An object that holds the serialized object data about the exception - being thrown. - An object that contains contextual information about the source - or destination. - - - - Provides access to status information such as the total number of messages and quota - information for a mailbox. - - - The terms "mailbox" and "folder" can be used interchangeably and refer to the IMAP concept of - multiple server-side directories into which messages can be stored (such as "Inbox", - "Sent Items", "Trash", etc.). - - - - - Initializes a new instance of the MailboxInfo class with the specified values. - - The IMAP name of the mailbox. - The IMAP flags set on this mailbox. - The number of messages in the mailbox. - The number of unread messages in the mailbox. - The next unique identifier (UID) of the mailbox. - The amount of used storage of the mailbox, in bytes. - The amount of free storage of the mailbox, in bytes. - - - - Returns the name of the mailbox. - - The name of the mailbox - - - - The name of the mailbox. - - - - - An enumerable collection of flags set on the mailbox. - - - - - The total number of messages in the mailbox. - - - - - The number of unread (unseen) messages in the mailbox. - - - - - The next unique identifier value of the mailbox. - - - - - The amount of used storage in the mailbox, measured in bytes. - - Not all IMAP servers support the retrieval of quota information. If it is not - possible to retrieve the amount of used storage, this property will be 0. - - - - - The amount of free storage in the mailbox, measured in bytes. - - Not all IMAP servers support the retrieval of quota information. If it is not - possible to retrieve the amount of free storage, this property will be 0. - - - - - Defines possible attributes for mailboxes. - - - - An IMAP mailbox can have a number of flags (read: attributes) set on it, indicating its - designated purpose (such as "Spam" or "Drafts"). - - - This is especially convenient when dealing with international mailbox names, because, by - examining the associated flags, the mailbox purpose can be determined, even if the mailbox - name provides no useful indication. - - - Unfortunately, as with many things IMAP, reporting the flags described here is an optional - extension (XLIST) to the IMAP protocol and as such may or may not be supported by an IMAP - server. - - - - - - The mailbox presents a view on all messages in the user's message store. - - - - - The mailbox is used to archive messages. The meaning of an "archival" mailbox is server - dependent. - - - - - The mailbox is used to hold draft messages, typically these are messages that are being - composed but have not yet been sent. - - - - - The mailbox is used to hold copies of messages that have been sent. - - - - - The mailbox is where messages deemed to be junk mail (spam) are held. - - - - - The mailbox is used to hold messages that have been deleted or marked for deletion. - - - - - Represents an IMAP QUOTA entry for a resource which typically consists of a resource name, - the current usage of the resource, and the resource limit. - - - - - Initializes a new instance of the MailboxQuota class with the specified values. - - The name of the resource this MailboxQuota instance describes. - The current usage of the resource in units of 1024 bytes. - The limit of the resource in units of 1024 bytes. - - - - The name of the resource this MailboxQuota instance describes. - - - - - The current usage of the resource this MailboxQuota instance describes, in bytes. - - - - - The limit of the resource this MailboxQuota instance describes, in bytes. - - - - - Represents the status information of a mailbox which can be constructed from the server - response to a STATUS command. - - - - - Initializes a new MailboxStatus instance with the specified number of total and unread - messages. - - The total number of messages in the mailbox. - The number of unread (unseen) messages in the mailbox. - The next unique identifier value of the mailbox - - - - The next unique identifier value of the mailbox. - - - - - The total number of messages in the mailbox. - - - - - The number of unread (unseen) messages in the mailbox. - - - - - Adds extension methods to the MailMessage class of the .NET Framework. - - - Most of the methods are only used internally and are not visible outside of the - S22.Imap assembly. - - - - - Returns the date and time the mail message was composed. - - The MailMessage instance to return the date and time for. - The date and time the mail message was composed, or null if the mail message - does not contain any date information. - - - - Constructs a textual representation of a mail message from the specified MailMessage - instance compliant with the RFC822 and MIME standards. - - The MailMessage instance to construct the textual representation - from. - An RFC822/MIME-compliant string representing the specified mail message. - The From property is null or has not been - properly initialized. - - - - Builds a RFC822/MIME-compliant mail header from the specified MailMessage instance and - returns it as a NameValueCollection. - - The MailMessage instance to build the header from. - A NameValueCollection representing the RFC822/MIME mail header fields. - - - - A map for mapping the values of the MailPriority enumeration to their corresponding MIME - priority values as defined in RFC2156. - - - - - A map for mapping the values of the MailPriority enumeration to their corresponding MIME - importance values as defined in RFC2156. - - - - - Takes a unicode string and encodes it using Q-encoding. - - The string to encode. - The input string encoded as Q-encoded string containing only ASCII - characters. - - - - Takes a unicode string and encodes it using Base64-encoding. - - The string to encode. - The input string encoded as Base64-encoded string containing only ASCII - characters. - - - - Creates an address string from the specified MailAddress instance in compliance with the - address specification as outlined in RFC2822 under section 3.4 - - The MailAddress instance to create the address string from. - An address string as is used in RFC822 mail headers. - - - - Generates a unique sequence of characters for indicating a boundary between parts in a - multipart message. - - A unique content boundary string. - - - - Builds an RFC822/MIME-compliant mail body from the specified MailMessage instance and - returns it as a formatted string. - - The MailMessage instance to build the mail body from. - The RFC822/MIME mail header to use for constructing the mail - body. - An RFC822/MIME-compliant mail body as a string. - According to RFC2822 each line of a mail message should at max be 78 characters in - length excluding carriage return and newline characters. This method accounts for that and - ensures line breaks are inserted to meet this requirement. - - - - Adds a body part to the specified Stringbuilder object composed from the Body and - BodyEncoding properties of the MailMessage class. - - The Stringbuilder to append the body part to. - The MailMessage instance to build the body part from. - The RFC822/MIME mail header to use for constructing the mail body. - Set to true to append body headers before adding the actual body - part content. - - - - Creates a MIME body part from an entry of the AlternateView or Attachments collection of a - MailMessage instance and appends it to the specified Stringbuilder instance. - - The Stringbuilder instance to append the body part to. - An entry from either the AlternateView or the Attachments collection of - a MailMessage instance. - - - - Creates a nested multipart/alternative part which contains all entries from the - AlternateViews collection of the specified MailMessage instance as well as the body part - for the Body and BodyEncoding properties of the specified MailMessage instance. - - The StringBuilder instance to append to. - The MailMessage instance whose AlternateView collection will be added to the - nested multipart/alternative part. - The RFC822/MIME mail header to use for constructing the mail body. - This is used if the MailMessage instance contains both alternative views and - attachments. In this case the created RFC822/MIME mail message will contain nested body - parts. - - - - Creates a nested multipart/mixed part which contains all entries from the Attachments - collection of the specified MailMessage instance. - - The StringBuilder instance to append to. - The MailMessage instance whose Attachments collection will be added to the - nested multipart/mixed part. - This is used if the MailMessage instance contains both alternative views and - attachments. In this case the created RFC822/MIME mail message will contain nested body - parts. - - - - A helper class for reading mail message data and building a MailMessage instance out of it. - - - - - Creates a new empty instance of the MailMessage class from a string containing a raw mail - message header. - - The mail header to create the MailMessage instance from. - A MailMessage instance with initialized Header fields but without any - content. - - - - Creates a new instance of the MailMessage class from a string containing raw RFC822/MIME - mail message data. - - The mail message data to create the MailMessage instance from. - An initialized instance of the MailMessage class. - This is used when fetching entire messages instead of the partial-fetch mechanism - because it saves redundant round-trips to the server. - - - - Parses the mail header of a mail message and returns it as a NameValueCollection. - - The mail header to parse. - A NameValueCollection containing the header fields as keys with their respective - values as values. - - - - Strips RFC822/MIME comments from the specified string. - - The string to strip comments from. - A new string stripped of any comments. - - - - Parses a MIME header field which can contain multiple 'parameter = value' - pairs (such as Content-Type: text/html; charset=iso-8859-1). - - The header field to parse. - A NameValueCollection containing the parameter names as keys with the respective - parameter values as values. - The value of the actual field disregarding the 'parameter = value' pairs is stored - in the collection under the key "value" (in the above example of Content-Type, this would - be "text/html"). - - - - Parses a mail header address-list field such as To, Cc and Bcc which can contain multiple - email addresses. - - The address-list field to parse - An array of MailAddress objects representing the parsed mail addresses. - - - - Splits the specified address-list into individual parts consisting of a mail address and - optionally a display-name. - - The address-list to split into parts. - An enumerable collection of parts. - - - - Parses a mail message identifier from a string. - - The field to parse the message id from - The field argument does not contain a valid message - identifier. - The parsed message id. - A message identifier (msg-id) is a globally unique identifier for a - message. - - - - Parses the priority of a mail message which can be specified as part of the header - information. - - The mail header priority value. The value can be null in which case - a "normal priority" is returned. - A value from the MailPriority enumeration corresponding to the specified mail - priority. If the passed priority value is null or invalid, a normal priority is assumed and - MailPriority.Normal is returned. - - - - Sets the address fields (From, To, CC, etc.) of a MailMessage object using the specified - mail message header information. - - The MailMessage instance to operate on. - A collection of mail and MIME headers. - - - - Adds a body part to an existing MailMessage instance. - - Extension method for the MailMessage class. - The body part to add to the MailMessage instance. - The content of the body part. - - - - Creates an instance of the Attachment class used by the MailMessage class to store mail - message attachments. - - The MIME body part to create the attachment from. - An array of bytes composing the content of the attachment. - An initialized instance of the Attachment class. - - - - Creates an instance of the AlternateView class used by the MailMessage class to store - alternate views of the mail message's content. - - The MIME body part to create the alternate view from. - An array of bytes composing the content of the alternate view. - An initialized instance of the AlternateView class. - - - - Parses the body part of a MIME/RFC822 mail message. - - The body of the mail message. - The header of the mail message whose body will be parsed. - An array of initialized MIMEPart instances representing the body parts of the mail - message. - - - - Parses the body of a multipart MIME mail message. - - An instance of the StringReader class initialized with a string - containing the body of the mail message. - The boundary value as is present as part of the Content-Type header - field in multipart mail messages. - An array of initialized MIMEPart instances representing the various parts of the - MIME mail message. - - - - Glue method to create a bodypart from a MIMEPart instance. - - The MIMEPart instance to create the bodypart instance from. - An initialized instance of the Bodypart class. - - - - Defines possible attributes for mail messages on an IMAP server. - - - - - Indicates that the message has been read. - - - - - Indicates that the message has been answered. - - - - - Indicates that the message is "flagged" for urgent/special attention. - - - - - Indicates that the message has been marked as "deleted" and will be removed upon the next - call to the Expunge method. - - - - - Indicates that the message has not completed composition and is marked as a draft. - - - - - Indicates that the message has recently arrived in the mailbox. - - - - - Represents a part of a MIME multi-part message. Each part consists of its own content header - and a content body. - - - - - A collection containing the content header information as key-value pairs. - - - - - A string containing the content body of the part. - - - - - A thread-safe Queue. - - - - - Adds an object to the end of the queue. - - The object to add to the queue. - - - - Removes and returns the object at the beginning of the queue. If the queue is empty, the - method blocks the calling thread until an object is put into the queue by another thread. - - The object that was removed from the beginning of the queue. - - - - Adds extension methods to the BinaryReader class to simplify the - deserialization of NTLM messages. - - - - - Reads an ASCII-string of the specified length from this instance. - - Extension method for the BinaryReader class. - The number of bytes to read from the underlying - stream. - A string decoded from the bytes read from the underlying - stream using the ASCII character set. - - - - The NTLM flags which are contained in a bitfield within the header of - an NTLM message. - - - - - Indicates that Unicode strings are supported for use in security - buffer data. - - - - - Indicates that OEM strings are supported for use in security - buffer data. - - - - - Requests that the server's authentication realm be included in - the Type 2 message. - - - - - Specifies that authenticated communication between the client and - server should carry a digital signature (message integrity). - - - - - Specifies that authenticated communication between the client and - server should be encrypted (message confidentiality). - - - - - Indicates that datagram authentication is being used. - - - - - Indicates that the Lan Manager Session Key should be used for signing - and sealing authenticated communications. - - - - - This flag's usage has not been identified. - - - - - Indicates that NTLM authentication is being used. - - - - - Sent by the client in the Type 3 message to indicate that an anonymous - context has been established. This also affects the response fields. - - - - - Sent by the client in the Type 1 message to indicate that the name of - the domain in which the client workstation has membership is included - in the message. This is used by the server to determine whether the - client is eligible for local authentication. - - - - - Sent by the client in the Type 1 message to indicate that the client - workstation's name is included in the message. This is used by the - server to determine whether the client is eligible for local - authentication. - - - - - Sent by the server to indicate that the server and client are on the - same machine. Implies that the client may use the established local - credentials for authentication instead of calculating a response to - the challenge. - - - - - Indicates that authenticated communication between the client and - server should be signed with a "dummy" signature. - - - - - Sent by the server in the Type 2 message to indicate that the target - authentication realm is a domain. - - - - - Sent by the server in the Type 2 message to indicate that the target - authentication realm is a server. - - - - - Sent by the server in the Type 2 message to indicate that the target - authentication realm is a share. Presumably, this is for share-level - authentication. Usage is unclear. - - - - - Indicates that the NTLM2 signing and sealing scheme should be used for - protecting authenticated communications. Note that this refers to a - particular session security scheme, and is not related to the use of - NTLMv2 authentication. This flag can, however, have an effect on the - response calculations. - - - - - This flag's usage has not been identified. - - - - - This flag's usage has not been identified. - - - - - This flag's usage has not been identified. - - - - - Sent by the server in the Type 2 message to indicate that it is including - a Target Information block in the message. The Target Information block - is used in the calculation of the NTLMv2 response. - - - - - Indicates that 128-bit encryption is supported. - - - - - Indicates that the client will provide an encrypted master key in the - "Session Key" field of the Type 3 message. - - - - - Indicates that 56-bit encryption is supported. - - - - - Represents the data contained in the target information block of an - NTLM type 2 message. - - - - - The server name. - - - - - The domain name. - - - - - The fully-qualified DNS host name. - - - - - The fully-qualified DNS domain name. - - - - - Describes the different versions of the Type 2 message that have - been observed. - - - - - The version is unknown. - - - - - This form is seen in older Win9x-based systems. - - - - - This form is seen in most out-of-box shipping versions of Windows. - - - - - This form was introduced in a relatively recent Service Pack, and - is seen on currently-patched versions of Windows 2000, Windows XP, - and Windows 2003. - - - - - Indicates the type of data in Type 2 target information blocks. - - - - - Signals the end of the target information block. - - - - - The data in the information block contains the server name. - - - - - The data in the information block contains the domain name. - - - - - The data in the information block contains the DNS hostname. - - - - - The data in the information block contans the DNS domain name. - - - - - Computes the MD4 hash value for the input data. - Courtesy of Keith Wood. - - - - - Describes the different types of NTLM messages. - - - - - An NTLM type 1 message is the initial client response to the - server. - - - - - An NTLM type 2 message is the challenge sent by the server in - response to an NTLM type 1 message. - - - - - An NTLM type 3 message is the challenge response sent by the client - in response to an NTLM type 2 message. - - - - - Indicates the version and build number of the operating system. - - - - - Default constructor. - - - - - Creates a new instance of the OSVersion class using the specified - values. - - The major version of the operating - system. - The minor version of the operating - system. - The build number of the operating systen. - - - - Serializes this instance of the OSVersion class to an array of - bytes. - - An array of bytes representing this instance of the OSVersion - class. - - - - The major version number of the operating system. - - - - - The minor version number of the operating system. - - - - - The build number of the operating system. - - - - - Contains methods for calculating the various Type 3 challenge - responses. - - - - - Computes the LM-response to the challenge sent as part of an - NTLM type 2 message. - - The challenge sent by the server. - The user account password. - An array of bytes representing the response to the - specified challenge. - - - - Computes the NTLM-response to the challenge sent as part of an - NTLM type 2 message. - - The challenge sent by the server. - The user account password. - An array of bytes representing the response to the - specified challenge. - - - - Computes the NTLMv2-response to the challenge sent as part of an - NTLM type 2 message. - - The name of the authentication target. - The user account name to authenticate with. - The user account password. - The target information block from - the NTLM type 2 message. - The challenge sent by the server. - A random 8-byte client nonce. - An array of bytes representing the response to the - specified challenge. - - - - Computes the LMv2-response to the challenge sent as part of an - NTLM type 2 message. - - The name of the authentication target. - The user account to authenticate with. - The user account password. - The challenge sent by the server. - A random 8-byte client nonce. - An array of bytes representing the response to the - specified challenge. - - - - Creates the LM Hash of the specified password. - - The password to create the LM Hash of. - The LM Hash of the given password, used in the calculation - of the LM Response. - Thrown if the password argument - is null. - - - - Creates a DES encryption key from the specified key material. - - The key material to create the DES encryption - key from. - An offset into the byte array at which to - extract the key material from. - A 56-bit DES encryption key as an array of bytes. - - - - Applies odd parity to the specified byte array. - - The byte array to apply odd parity to. - A reference to the byte array. - - - - Creates the LM Response from the specified hash and Type 2 challenge. - - An LM or NTLM hash. - The server challenge from the Type 2 - message. - The challenge response as an array of bytes. - Thrown if the hash or the - challenge parameter is null. - - - - Creates the NTLM Hash of the specified password. - - The password to create the NTLM hash of. - The NTLM hash for the specified password. - Thrown if the password - parameter is null. - - - - Creates the NTLMv2 Hash of the specified target, username - and password values. - - The name of the authentication target as is - specified in the target name field of the NTLM type 3 message. - The user account name. - The password for the user account. - The NTLMv2 hash for the specified input values. - Thrown if the username or - the password parameter is null. - - - - Returns the current time as the number of tenths of a microsecond - since January 1, 1601. - - The current time as the number of tenths of a microsecond - since January 1, 1601. - - - - Creates the "blob" data block which is part of the NTLMv2 challenge - response. - - The target information block from - the NTLM type 2 message. - A random 8-byte client nonce. - The blob, used in the calculation of the NTLMv2 Response. - - - - Creates the LMv2 Response from the given NTLMv2 hash, client data, and - Type 2 challenge. - - The NTLMv2 Hash. - The client data (blob or client nonce). - The server challenge from the Type 2 message. - The response which is either for NTLMv2 or LMv2, depending - on the client data. - - - - Represents an NTLM security buffer, which is a structure used to point - to a buffer of binary data within an NTLM message. - - - - - Creates a new instance of the SecurityBuffer class using the specified - values. - - The length of the buffer described by this instance - of the SecurityBuffer class. - The offset at which the buffer starts, in bytes. - Thrown if the length value exceeds - the maximum value allowed. The security buffer structure stores the - length value as a 2-byte short value. - - - - Creates a new instance of the SecurityBuffer class using the specified - values. - - The data of the buffer described by this instance - of the SecurityBuffer class. - The offset at which the buffer starts, in bytes. - Thrown if the length of the data - buffer exceeds the maximum value allowed. The security buffer structure - stores the buffer length value as a 2-byte short value. - - - - Serializes this instance of the SecurityBuffer into an array of bytes. - - A byte array representing this instance of the SecurityBuffer - class. - - - - The length of the buffer content in bytes (may be zero). - - - - - The allocated space for the buffer in bytes (typically the same as - the length). - - - - - The offset from the beginning of the NTLM message to the start of - the buffer, in bytes. - - - - - Represents an NTLM Type 1 Message. - - - - - The NTLM message signature which is always "NTLMSSP". - - - - - The NTML message type which is always 1 for an NTLM Type 1 message. - - - - - Creates a new instance of the Type1Message class using the specified - domain and workstation names. - - The domain in which the client's workstation has - membership. - The client's workstation name. - Thrown if the domain or the - workstation parameter is null. - Thrown if the domain - or the workstation name exceeds the maximum allowed string - length. - The domain as well as the workstation name is restricted - to ASCII characters and must not be longer than 65536 characters. - - - - - Serializes this instance of the Type1 class to an array of bytes. - - An array of bytes representing this instance of the Type1 - class. - - - - The NTLM flags set on this instance. - - - - - The supplied domain name as an array of bytes in the ASCII - range. - - - - - The offset within the message where the domain name data starts. - - - - - The supplied workstation name as an array of bytes in the - ASCII range. - - - - - The offset within the message where the workstation name data starts. - - - - - The length of the supplied workstation name as a 16-bit short value. - - - - - Contains information about the client's OS version. - - - - - Represents an NTLM Type 2 Message. - - - - - The NTLM message signature which is always "NTLMSSP". - - - - - The NTML message type which is always 2 for an NTLM Type 2 message. - - - - - Private constructor. - - - - - Deserializes a Type 2 message instance from the specified buffer - of bytes. - - The buffer containing a sequence of bytes - representing an NTLM Type 2 message. - An initialized instance of the Type2 class. - Thrown if an error occurs - during deserialization of the Type 2 message. - - - - Determines the version of an NTLM type 2 message. - - The target offset field of the NTLM - type 2 message. - A value from the Type2Version enumeration. - - - - Reads the OS information data present in version 3 of an NTLM - type 2 message from the specified BinaryReader. - - The BinaryReader instance to read from. - An initialized instance of the OSVersion class. - - - - Reads the target information data present in version 2 and 3 of - an NTLM type 2 message from the specified BinaryReader. - - The BinaryReader instance to read from. - An initialized instance of the Type2TargetInformation - class. - - - - Retrieves the target name from the specified byte array. - - A byte array containing the target name. - If true the target name will be decoded - using UTF-16 unicode encoding. - - - - - The challenge is an 8-byte block of random data. - - - - - The target name of the authentication target. - - - - - The NTLM flags set on this message. - - - - - The SSPI context handle when a local call is being made, - otherwise null. - - - - - Contains the data present in the OS version structure. - - - - - The version of this Type 2 message instance. - - - - - Contains the data present in the target information block. - - - - - Contains the raw data present in the target information block. - - - - - Represents an NTLM Type 3 Message. - - - - - The NTLM message signature which is always "NTLMSSP". - - - - - The NTML message type which is always 3 for an NTLM Type 3 message. - - - - - Creates a new instance of an NTLM type 3 message using the specified - values. - - The Windows account name to use for - authentication. - The Windows account password to use for - authentication. - The challenge received from the server as part - of the NTLM type 2 message. - The client's workstation name. - Set to true to send an NTLMv2 challenge - response. - The authentication realm in which the - authenticating account has membership. - The target information block from - the NTLM type 2 message. - The target name is a domain name for domain accounts, or - a server name for local machine accounts. All security buffers will - be encoded as Unicode. - - - - Creates a new instance of an NTLM type 3 message using the specified - values. - - The Windows account name to use for - authentication. - The Windows account password to use for - authentication. - The challenge received from the server as part - of the NTLM type 2 message. - Set this to true, if Unicode encoding has been - negotiated between client and server. - The client's workstation name. - Set to true to send an NTLMv2 challenge - response. - The authentication realm in which the - authenticating account has membership. - The target information block from - the NTLM type 2 message. - The target name is a domain name for domain accounts, or - a server name for local machine accounts. - Thrown if the username, password - or challenge parameters are null. - - - - Serializes this instance of the Type3 class to an array of bytes. - - An array of bytes representing this instance of the Type3 - class. - - - - Returns a random 8-byte cnonce value. - - A random 8-byte cnonce value. - - - - The NTLM flags set on this instance. - - - - - The "Lan Manager" challenge response. - - - - - The offset at which the LM challenge response data starts. - - - - - The NTLM challenge response. - - - - - The offset at which the NTLM challenge response data starts. - - - - - The authentication realm in which the authenticating account - has membership. - - - - - The offset at which the target name data starts. - - - - - The authenticating account name. - - - - - The offset at which the username data starts. - - - - - The client workstation's name. - - - - - The offset at which the client workstation's name data starts. - - - - - The session key value which is used by the session security mechanism - during key exchange. - - - - - The offset at which the session key data starts. - - - - - Contains the data present in the OS version structure. - - - - - The encoding used for transmitting the contents of the various - security buffers. - - - - - Implements the Sasl Cram-Md5 authentication method as described in - RFC 2195. - - - - - Private constructor for use with Sasl.SaslFactory. - - - - - Creates and initializes a new instance of the SaslCramMd5 class - using the specified username and password. - - The username to authenticate with. - The plaintext password to authenticate - with. - Thrown if the username - or the password parameter is null. - Thrown if the username - parameter is empty. - - - - Computes the client response to the specified Cram-Md5 challenge. - - The challenge sent by the server - The response to the Cram-Md5 challenge. - Thrown if the response could not - be computed. - - - - True if the authentication exchange between client and server - has been completed. - - - - - The IANA name for the Cram-Md5 authentication mechanism as described - in RFC 2195. - - - - - The username to authenticate with. - - - - - The password to authenticate with. - - - - - Implements the Sasl Cram-Md5 authentication method as described in - RFC 2831. - - - - - The client nonce value used during authentication. - - - - - Cram-Md5 involves several steps. - - - - - Private constructor for use with Sasl.SaslFactory. - - - - - Internal constructor used for unit testing. - - The username to authenticate with. - The plaintext password to authenticate - with. - The client nonce value to use. - Thrown if the username - or the password parameter is null. - Thrown if the username - parameter is empty. - - - - Creates and initializes a new instance of the SaslDigestMd5 class - using the specified username and password. - - The username to authenticate with. - The plaintext password to authenticate - with. - Thrown if the username - or the password parameter is null. - Thrown if the username - parameter is empty. - - - - Computes the client response to the specified Digest-Md5 challenge. - - The challenge sent by the server - The response to the Digest-Md5 challenge. - Thrown if the response could not - be computed. - - - - Parses the challenge string sent by the server in response to a Digest-Md5 - authentication request. - - The challenge sent by the server as part of - "Step One" of the Digest-Md5 authentication mechanism. - An initialized NameValueCollection instance made up of the - attribute/value pairs contained in the challenge. - Thrown if the challenge parameter - is null. - Refer to RFC 2831 section 2.1.1 for a detailed description of the - format of the challenge sent by the server. - - - - Computes the "response-value" hex-string which is part of the - Digest-MD5 challenge-response. - - A collection containing the attributes - and values of the challenge sent by the server. - The cnonce value to use for computing - the response-value. - The "digest-uri" string to use for - computing the response-value. - The username to use for computing the - response-value. - The password to use for computing the - response-value. - A string containing a hash-value which is part of the - response sent by the client. - Refer to RFC 2831, section 2.1.2.1 for a detailed - description of the computation of the response-value. - - - - Calculates the MD5 hash value for the specified string. - - The string to calculate the MD5 hash value for. - The encoding to employ for encoding the - characters in the specified string into a sequence of bytes for - which the MD5 hash will be calculated. - An MD5 hash as a 32-character hex-string. - Thrown if the input string - is null. - - - - Encloses the specified string in double-quotes. - - The string to enclose in double-quote characters. - The enclosed string. - - - - Generates a random cnonce-value which is a "client-specified data string - which must be different each time a digest-response is sent". - - A random "cnonce-value" string. - - - - True if the authentication exchange between client and server - has been completed. - - - - - The IANA name for the Digest-Md5 authentication mechanism as described - in RFC 2195. - - - - - The username to authenticate with. - - - - - The password to authenticate with. - - - - - Implements the Sasl NTLM authentication method which is used in various - Microsoft network protocol implementations. - - Implemented with the help of the excellent documentation on - NTLM composed by Eric Glass. - - - - NTLM involves several steps. - - - - - Private constructor for use with Sasl.SaslFactory. - - - - - Creates and initializes a new instance of the SaslNtlm class - using the specified username and password. - - The username to authenticate with. - The plaintext password to authenticate - with. - Thrown if the username - or the password parameter is null. - Thrown if the username - parameter is empty. - - - - Computes the client response to the specified NTLM challenge. - - The challenge sent by the server - The response to the NTLM challenge. - Thrown if the response could not - be computed. - - - - Computes the initial client response to an NTLM challenge. - - The challenge sent by the server. Since - NTLM expects an initial client response, this will usually be - empty. - The initial response to the NTLM challenge. - Thrown if the response could not - be computed. - - - - Computes the actual challenge response to an NTLM challenge - which is sent as part of an NTLM type 2 message. - - The challenge sent by the server. - The response to the NTLM challenge. - Thrown if the challenge - response could not be computed. - - - - True if the authentication exchange between client and server - has been completed. - - - - - The IANA name for the NTLM authentication mechanism. - - - - - The username to authenticate with. - - - - - The password to authenticate with. - - - - - Implements the Sasl NTLMv2 authentication method which addresses - some of the security issues present in NTLM version 1. - - - - - Private constructor for use with Sasl.SaslFactory. - - - - - Creates and initializes a new instance of the SaslNtlmv2 class - using the specified username and password. - - The username to authenticate with. - The plaintext password to authenticate - with. - Thrown if the username - or the password parameter is null. - Thrown if the username - parameter is empty. - - - - Computes the client response to the specified NTLM challenge. - - The challenge sent by the server - The response to the NTLM challenge. - Thrown if the response could not - be computed. - - - - Computes the actual challenge response to an NTLM challenge - which is sent as part of an NTLM type 2 message. - - The challenge sent by the server. - The response to the NTLM challenge. - Thrown if the challenge - response could not be computed. - - - - Implements the Sasl OAuth authentication method. - - - - - Private constructor for use with Sasl.SaslFactory. - - - - - Creates and initializes a new instance of the SaslOAuth class - using the specified username and password. - - The username to authenticate with. - Thrown if the accessToken - parameter is null. - Thrown if the accessToken - parameter is empty. - - - - Computes the client response for a OAuth challenge. - - The challenge sent by the server. - The response to the OAuth challenge. - Thrown if the response could not - be computed. - - - - True if the authentication exchange between client and server - has been completed. - - - - - The IANA name for the OAuth authentication mechanism. - - - - - The access token to authenticate with. - - - - - Implements the Sasl OAuth 2.0 authentication method. - - - - - The server sends an error response in case authentication fails - which must be acknowledged. - - - - - Private constructor for use with Sasl.SaslFactory. - - - - - Creates and initializes a new instance of the SaslOAuth class - using the specified username and password. - - The username to authenticate with. - The username to authenticate with. - Thrown if the username - or the accessToken parameter is null. - Thrown if the username or - the accessToken parameter is empty. - - - - Computes the client response to an XOAUTH2 challenge. - - The challenge sent by the server. - The response to the OAuth2 challenge. - Thrown if the response could not - be computed. - - - - Computes the initial client response to an XOAUTH2 challenge. - - The challenge sent by the server. - The response to the OAuth2 challenge. - Thrown if the response could not - be computed. - - - - True if the authentication exchange between client and server - has been completed. - - - - - The IANA name for the OAuth 2.0 authentication mechanism. - - - - - The username to authenticate with. - - - - - The access token to authenticate with. - - - - - Implements the Sasl Plain authentication method as described in - RFC 4616. - - - - - Private constructor for use with Sasl.SaslFactory. - - - - - Creates and initializes a new instance of the SaslPlain class - using the specified username and password. - - The username to authenticate with. - The plaintext password to authenticate - with. - Thrown if the username - or the password parameter is null. - Thrown if the username - parameter is empty. - - - - Computes the client response for a plain-challenge. - - The challenge sent by the server. For the - "plain" mechanism this will usually be empty. - The response for the "plain"-challenge. - Thrown if the response could not - be computed. - - - - True if the authentication exchange between client and server - has been completed. - - - - - The IANA name for the Plain authentication mechanism as described - in RFC 4616. - - - - - The username to authenticate with. - - - - - The plain-text password to authenticate with. - - - - - The exception is thrown when a Sasl-related error or unexpected condition occurs. - - - - - Initializes a new instance of the SaslException class - - - - - Initializes a new instance of the SaslException class with its message - string set to . - - A description of the error. The content of message is intended - to be understood by humans. - - - - Initializes a new instance of the SaslException class with its message - string set to and a reference to the inner exception that - is the cause of this exception. - - A description of the error. The content of message is intended - to be understood by humans. - The exception that is the cause of the current exception. - - - - Initializes a new instance of the SaslException class with the specified - serialization and context information. - - An object that holds the serialized object data about the exception - being thrown. - An object that contains contextual information about the source - or destination. - - - - A factory class for producing instances of Sasl mechanisms. - - - - - Creates an instance of the Sasl mechanism with the specified - name. - - The name of the Sasl mechanism of which an - instance will be created. - An instance of the Sasl mechanism with the specified name. - Thrown if the name parameter - is null. - Thrown if the Sasl mechanism with the - specified name is not registered with Sasl.SaslFactory. - - - - Registers a Sasl mechanism with the factory using the specified name. - - The name with which to register the Sasl mechanism - with the factory class. - The type of the class implementing the Sasl mechanism. - The implementing class must be a subclass of Sasl.SaslMechanism. - Thrown if the name or the t - parameter is null. - Thrown if the class represented - by the specified type does not derive from Sasl.SaslMechanism. - Thrown if the Sasl mechanism could not - be registered with the factory. Refer to the inner exception for error - details. - - - - Static class constructor. Initializes static properties. - - - - - A dictionary of Sasl mechanisms registered with the factory class. - - - - - Represents chainable search conditions that can be used with the Search method. - - - - - Finds all messages in the mailbox. - - A SearchCondition object representing the "all" search criterion. - - - - Finds messages that contain the specified string in the header or body of the message. - - String to search messages for. - A SearchCondition object representing the "text" search criterion. - The text parameter is null. - - - - Finds messages that contain the specified string in the envelope structure's BCC field. - - String to search the envelope structure's BCC field for. - A SearchCondition object representing the "BCC" search criterion. - The text parameter is null. - - - - Finds messages whose internal date (disregarding time and timezone) is earlier than the - specified date. - - The date to compare the message's internal date with. - A SearchCondition object representing the "Before" search criterion. - - - - Finds messages that contain the specified string in the body of the message. - - String to search the message body for. - A SearchCondition object representing the "Body" search criterion. - The text parameter is null. - - - - Finds messages that contain the specified string in the envelope structure's CC field. - - String to search the envelope structure's CC field for. - A SearchCondition object representing the "CC" search criterion. - The text parameter is null. - - - - Finds messages that contain the specified string in the envelope structure's FROM field. - - String to search the envelope structure's FROM field for. - A SearchCondition object representing the "FROM" search criterion. - The text parameter is null. - - - - Finds messages that have a header with the specified field-name and that contains the - specified string in the text of the header. - - field-name of the header to search for. - String to search for in the text of the header. - A SearchCondition object representing the "HEADER" search criterion. - - If the string to search is zero-length, this matches all messages that have a header line - with the specified field-name regardless of the contents. - - The name parameter or the text parameter is - null. - - - - Finds messages with the specified keyword flag set. - - The keyword flag to search for. - A SearchCondition object representing the "KEYWORD" search criterion. - The text parameter is null. - - - - Finds messages with a size larger than the specified number of bytes. - - Minimum size, in bytes a message must have to be included in the search - result. - A SearchCondition object representing the "LARGER" search criterion. - - - - Finds messages with a size smaller than the specified number of bytes. - - Maximum size, in bytes a message must have to be included in the search - result. - A SearchCondition object representing the "SMALLER" search criterion. - - - - Finds messages whose Date: header (disregarding time and timezone) is earlier than the - specified date. - - The date to compare the Date: header field with. - A SearchCondition object representing the "SENTBEFORE" search criterion. - - - - Finds messages whose Date: header (disregarding time and timezone) is within the specified - date. - - The date to compare the Date: header field with. - A SearchCondition object representing the "SENTON" search criterion. - - - - Finds messages whose Date: header (disregarding time and timezone) is within or later than - the specified date. - - The date to compare the Date: header field with. - A SearchCondition object representing the "SENTSINCE" search criterion. - - - - Finds messages that contain the specified string in the envelope structure's SUBJECT field. - - String to search the envelope structure's SUBJECT field for. - A SearchCondition object representing the "SUBJECT" search criterion. - The text parameter is null. - - - - Finds messages that contain the specified string in the envelope structure's TO field. - - String to search the envelope structure's TO field for. - A SearchCondition object representing the "TO" search criterion. - The text parameter is null. - - - - Finds messages with unique identifiers corresponding to the specified unique identifier set. - - One or several unique identifiers (UID). - A SearchCondition object representing the "UID" search criterion. - - - - Finds messages with a unique identifier greater than the specified unique identifier. - - A unique identifier (UID). - A SearchCondition object representing the "UID" search criterion. - - Because of the nature of the IMAP search mechanism, the result set will always contain the - UID of the last message in the mailbox, even if said UID is smaller than the UID specified. - - - - - Finds messages with a unique identifier less than the specified unique identifier. - - A unique identifier (UID). - A SearchCondition object representing the "UID" search criterion. - - - - Finds messages that do not have the specified keyword flag set. - - The IMAP keyword flag to search for. - A SearchCondition object representing the "UNKEYWORD" search criterion. - The text parameter is null. - - - - Finds messages that have the \Answered flag set. - - A SearchCondition object representing the "ANSWERED" search criterion. - - - - Finds messages that have the \Deleted flag set. - - A SearchCondition object representing the "DELETED" search criterion. - - - - Finds messages that have the \Draft flag set. - - A SearchCondition object representing the "DRAFT" search criterion. - - - - Finds messages that have the \Flagged flag set. - - A SearchCondition object representing the "FLAGGED" search criterion. - - - - Finds messages that have the \Recent flag set but not the \Seen flag. - - A SearchCondition object representing the "NEW" search criterion. - - - - Finds messages that do not have the \Recent flag set. - - A SearchCondition object representing the "OLD" search criterion. - - - - Finds messages that have the \Recent flag set. - - A SearchCondition object representing the "RECENT" search criterion. - - - - Finds messages that have the \Seen flag set. - - A SearchCondition object representing the "SEEN" search criterion. - - - - Finds messages that do not have the \Answered flag set. - - A SearchCondition object representing the "UNANSWERED" search criterion. - - - - Finds messages that do not have the \Deleted flag set. - - A SearchCondition object representing the "UNDELETED" search criterion. - - - - Finds messages that do not have the \Draft flag set. - - A SearchCondition object representing the "UNDRAFT" search criterion. - - - - Finds messages that do not have the \Flagged flag set. - - A SearchCondition object representing the "UNFLAGGED" search criterion. - - - - Finds messages that do not have the \Seen flag set. - - A SearchCondition object representing the "UNSEEN" search criterion. - - - - Logically ANDs multiple search conditions, meaning a message will only be included in the - search result if both of the ANDed conditions are met. - - A search condition to logically AND this SearchCondition instance - with. - A new SearchCondition instance which can be further chained with other search - conditions. - The other parameter is null. - - - - Logically negates search conditions, meaning a message will only be included in the search - result if the specified conditions are not met. - - A search condition that must not be met by a message for it to be - included in the search result set. - A new SearchCondition instance which can be further chained with other search - conditions. - The other parameter is null. - - - - Logically ORs multiple search conditions, meaning a message will be included in the search - result if it meets at least either of the conditions. - - A search condition to logically OR this SearchCondition instance - with. - A new SearchCondition instance which can be further chained with other search - conditions. - The other parameter is null. - - - - Joins two SearchCondition objects into a new one using the specified logical operator. - - The logical operator to use for joining the search conditions. - Possible values are "OR", "NOT" and the empty string "" which denotes a logical AND. - The first SearchCondition object - The second SearchCondition object - A new SearchCondition object representing the two search conditions joined by the - specified logical operator. - - - - Concatenates the members of a collection, using the specified separator between each - member. - - The type of the members of values. - The string to use as a separator. - A collection that contains the objects to concatenate. - A string that consists of the members of values delimited by the separator - string. If values has no members, the method returns System.String.Empty. - The values parameter is null. - This is already part of the String class in .NET 4.0 and newer but is needed - for backwards compatibility with .NET 3.5. - - - - Constructs a string from the SearchCondition object using the proper syntax as is required - for the IMAP SEARCH command. - - A string representing this SearchCondition instance that can be used with the IMAP - SEARCH command. - - - - The search keys which can be used with the IMAP SEARCH command, as are defined in section - 6.4.4 of RFC 3501. - - - - - A static utility class containing methods for decoding encoded non-ASCII data as well as - extension methods for some classes of the base class library. - - - - - Returns a copy of the string enclosed in double-quotes and with escaped CRLF, back-slash - and double-quote characters (as is expected by some commands of the IMAP protocol). - - Extends the System.String class - A copy of the string enclosed in double-quotes and properly escaped as is required - by the IMAP protocol. - - - - Returns true if the string contains only ASCII characters. - - Extension method for the String class. - true if the string contains only ASCII characters; Otherwise false. - - - - Splits a string into chunks of the specified number of characters. - - Extension method for the String class. - The length of a chunk, measured in characters. - An array of string chunks. - - - - Determines whether the specified string occurs within this string. - - Extension method for the String class. - The string to seek. - One of the enumeration values that specifies the rules for the - search. - true if the value parameter occurs within this string, or if value is the empty - string (""); otherwise, false. - The value parameter is null. - - - - Raises the event. Ensures the event is only raised, if it is not null. - - Extends System.EventHandler class. - Extends System.EventHandler class. - The sender of the event. - The event arguments associated with this event. - - - - Throws an ArgumentNullException if the given data item is null. - - The item to check for nullity. - The name to use when throwing an exception, if necessary. - Courtesy of Jon Skeet. - - - - Throws an ArgumentNullException if the given data item is null. - - The item to check for nullity. - Courtesy of Jon Skeet. - - - - Throws an ArgumentNullException if the given string is null or throws an ArgumentException - if the given string is empty. - - The string to check for nullity and emptiness. - - - - Throws an ArgumentNullException if the given string is null or throws an ArgumentException - if the given string is empty. - - The string to check for nullity and emptiness. - The name to use when throwing an exception, if necessary. - - - - Reads an unsigned short value from the underlying stream, optionally using big-endian byte - ordering. - - Extension method for BinaryReader. - Set to true to interpret the short value as big endian value. - The 16-byte unsigned short value read from the underlying stream. - - - - Decodes a string composed of one or several MIME 'encoded-words'. - - A string to composed of one or several MIME 'encoded-words'. - An unknown encoding (other than Q-Encoding or Base64) is - encountered. - A concatenation of all enconded-words in the passed string - - - - Internal function reuse to add separation between multiple 'encoded-word's correctly. - - - - - The regular expression for matching encoded-words. This also accounts for the extension for - including language information (as defined in RFC2231). - - - - - Decodes a MIME 'encoded-word' string. - - The encoded word to decode - An unknown encoding (other than Q-Encoding or Base64) is - encountered. - A decoded string - MIME encoded-word syntax is a way to encode strings that contain non-ASCII data. - Commonly used encodings for the encoded-word sytax are Q-Encoding and Base64. For an - in-depth description, refer to RFC 2047. - - - - Takes a Q-encoded string and decodes it using the specified encoding. - - The Q-encoded string to decode. - The encoding to use for encoding the returned string. - The string is not a valid Q-encoded string. - The Q-decoded string. - - - - Takes a quoted-printable encoded string and decodes it using the specified encoding. - - The quoted-printable-encoded string to decode. - The encoding to use for encoding the returned string. - The string is not a valid quoted-printable encoded - string. - A quoted-printable decoded string. - - - - Decodes the specified MIME parameter value. - - The MIME parameter value to decode. - The decoded MIME parameter value. - The specified value is not a valid Rfc2231-encoded - string. - Refer to RFC2231 for the details of the encoding mechanism. - - - - Takes a Base64-encoded string and decodes it. - - The Base64-encoded string to decode. - A byte array containing the Base64-decoded bytes of the input string. - The value parameter is null. - The length of value, ignoring white-space - characters, is not zero or a multiple of 4, or the format of value is invalid, or the value - contains a non-base-64 character, more than two padding characters, or a non-white - space-character among the padding characters. - - - - Takes a UTF-16 encoded string and encodes it as modified UTF-7. - - The string to encode. - A UTF-7 encoded string - IMAP uses a modified version of UTF-7 for encoding international mailbox names. For - details, refer to RFC 3501 section 5.1.3 (Mailbox International Naming Convention). - - - - Takes a modified UTF-7 encoded string and decodes it. - - The UTF-7 encoded string to decode. - A UTF-16 encoded "standard" C# string - The input string is not a properly UTF-7 encoded - string. - IMAP uses a modified version of UTF-7 for encoding international mailbox names. For - details, refer to RFC 3501 section 5.1.3 (Mailbox International Naming Convention). - - - - This just wraps Encoding.GetEncoding in a try-catch block to ensure it never fails. If the - encoding can not be determined ASCII is returned as a default. - - The code page name of the preferred encoding. Any value returned by - System.Text.Encoding.WebName is a valid input. - The System.Text.Encoding associated with the specified code page or Encoding.ASCII - if the specified code page could not be resolved. - - - - Converts the specified enumerable collection of UIDs into an IMAP sequence-set. - - An enumerable collection of UIDs. - An IMAP sequence-set suitable for use with IMAP commands. - The uids parameter is null. - The specified collection of UIDs is empty. - Refer to RFC3501, 9.Formal Syntax "sequence-set" for a description of IMAP - sequence-sets. - - - diff --git a/App/packages/S22.Imap.3.6.0.0/lib/net40/S22.Imap.dll b/App/packages/S22.Imap.3.6.0.0/lib/net40/S22.Imap.dll deleted file mode 100644 index 278607803aba7a9b435eb772b95e5b0575b6ddf1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132096 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