diff options
-rwxr-xr-x | script/handle-mail-replies | 9 | ||||
-rw-r--r-- | spec/fixtures/files/track-response-abcmail-oof.email | 80 | ||||
-rw-r--r-- | spec/fixtures/files/track-response-outlook-oof.email | 587 | ||||
-rw-r--r-- | spec/script/handle-mail-replies_spec.rb | 10 |
4 files changed, 686 insertions, 0 deletions
diff --git a/script/handle-mail-replies b/script/handle-mail-replies index 9451bc9f2..68cab9035 100755 --- a/script/handle-mail-replies +++ b/script/handle-mail-replies @@ -120,12 +120,21 @@ def is_oof?(message) end end + if message.header_string("Auto-Submitted") == "auto-generated" + if subject =~ /out of( the)? office/ + return true + end + end + if subject.start_with? "out of office autoreply:" return true end if subject == "out of office" return true end + if subject == "out of office reply" + return true + end if subject.end_with? "is out of the office" return true end diff --git a/spec/fixtures/files/track-response-abcmail-oof.email b/spec/fixtures/files/track-response-abcmail-oof.email new file mode 100644 index 000000000..5d1733143 --- /dev/null +++ b/spec/fixtures/files/track-response-abcmail-oof.email @@ -0,0 +1,80 @@ +Delivered-To: mysociety.robin@gmail.com +Received: by 10.216.154.212 with SMTP id h62cs265517wek; + Fri, 30 Dec 2011 02:03:17 -0800 (PST) +Received: by 10.227.208.129 with SMTP id gc1mr47630338wbb.4.1325239396543; + Fri, 30 Dec 2011 02:03:16 -0800 (PST) +Return-Path: <Name.Removed@example.gov.uk> +Received: from wildfire.ukcod.org.uk (wildfire.ukcod.org.uk. [89.238.145.74]) + by mx.google.com with ESMTPS id ei10si9596065wbb.20.2011.12.30.02.03.16 + (version=TLSv1/SSLv3 cipher=OTHER); + Fri, 30 Dec 2011 02:03:16 -0800 (PST) +Received-SPF: neutral (google.com: 89.238.145.74 is neither permitted nor denied by best guess record for domain of Name.Removed@example.gov.uk) client-ip=89.238.145.74; +Authentication-Results: mx.google.com; spf=neutral (google.com: 89.238.145.74 is neither permitted nor denied by best guess record for domain of Name.Removed@example.gov.uk) smtp.mail=Name.Removed@example.gov.uk +Received: from foi by wildfire.ukcod.org.uk with local (Exim 4.72) + (envelope-from <Name.Removed@example.gov.uk>) + id 1RgZIs-0000ME-1T + for team_delivery@whatdotheyknow.com; Fri, 30 Dec 2011 10:03:10 +0000 +Received: from truro.icritical.com ([93.95.13.13]:51540) + by wildfire.ukcod.org.uk with smtp (Exim 4.72) + (envelope-from <Name.Removed@example.gov.uk>) + id 1RgZIq-0000M6-St + for track@whatdotheyknow.com; Fri, 30 Dec 2011 10:03:09 +0000 +Received: (qmail 19136 invoked from network); 30 Dec 2011 10:03:08 -0000 +Received: from localhost (127.0.0.1) + by truro.icritical.com with SMTP; 30 Dec 2011 10:03:08 -0000 +Received: from truro.icritical.com ([127.0.0.1]) + by localhost (truro.icritical.com [127.0.0.1]) (amavisd-new, port 10024) + with SMTP id 19122-01 for <track@whatdotheyknow.com>; + Fri, 30 Dec 2011 10:03:07 +0000 (GMT) +Received: (qmail 19112 invoked by uid 599); 30 Dec 2011 10:03:06 -0000 +Received: from unknown (HELO abcmail.example.gov.uk) (213.185.212.82) + by truro.icritical.com (qpsmtpd/0.28) with ESMTP; Fri, 30 Dec 2011 10:03:06 +0000 +Subject: AUTO: Name Removed is out of the office (returning 03/01/2012) +Auto-Submitted: auto-generated +From: Name.Removed@example.gov.uk +To: track@whatdotheyknow.com +Message-ID: <OFF4E36F18.ED02EFA3-ON80257976.00373794-80257976.00373794@example.gov.uk> +Date: Fri, 30 Dec 2011 10:03:07 +0000 +X-MIMETrack: Serialize by Router on ABCMail/SVR/ABC(Release 8.5.2FP1|November 29, 2010) at + 30/12/2011 10:03:07 +MIME-Version: 1.0 +Content-type: text/plain; charset=US-ASCII +X-Virus-Scanned: by iCritical at truro.icritical.com + + +I am out of the office until 03/01/2012. + +I will be out of the office until 3rd January December 2012. I will deal +with all emails upon my return. If your query is urgent please contact +Colleague Name on colleague.name@example.gov.uk or 01234 567890. + +If you are requesting information under the Freedom of Information Act, the +Environmental Information Regulations or the Data Protection Act, please +forward your enquiry to colleague.name@example.gov.uk The Council +will begin processing your request once it is received by that address. + + +Thanks + +Name + + + + + +Note: This is an automated response to your message "Your WhatDoTheyKnow +email alert" sent on 30/12/2011 06:54:19. + +This is the only notification you will receive while this person is away. + + +This e-mail and any files transmitted with it are confidential and +intended solely for the use of the individual or entity to whom +they are addressed. +If you have received this e-mail in error please notify the +originator of the message. This footer also confirms that this +e-mail message has been scanned for the presence of computer viruses. + +Any views expressed in this message are those of the individual +sender, except where the sender specifies and with authority, +states them to be the views of Organisation Name. diff --git a/spec/fixtures/files/track-response-outlook-oof.email b/spec/fixtures/files/track-response-outlook-oof.email new file mode 100644 index 000000000..ee5a28b15 --- /dev/null +++ b/spec/fixtures/files/track-response-outlook-oof.email @@ -0,0 +1,587 @@ +Delivered-To: mysociety.robin@gmail.com +Received: by 10.152.24.138 with SMTP id u10cs341636laf; + Thu, 8 Dec 2011 02:39:53 -0800 (PST) +Received: by 10.180.103.131 with SMTP id fw3mr4246912wib.57.1323340792168; + Thu, 08 Dec 2011 02:39:52 -0800 (PST) +Return-Path: <peter@kentadvice.co.uk> +Received: from wildfire.ukcod.org.uk (wildfire.ukcod.org.uk. [89.238.145.74]) + by mx.google.com with ESMTPS id ft12si3357577wbb.14.2011.12.08.02.39.51 + (version=TLSv1/SSLv3 cipher=OTHER); + Thu, 08 Dec 2011 02:39:52 -0800 (PST) +Received-SPF: neutral (google.com: 89.238.145.74 is neither permitted nor denied by best guess record for domain of peter@kentadvice.co.uk) client-ip=89.238.145.74; +Authentication-Results: mx.google.com; spf=neutral (google.com: 89.238.145.74 is neither permitted nor denied by best guess record for domain of peter@kentadvice.co.uk) smtp.mail=peter@kentadvice.co.uk +Received: from foi by wildfire.ukcod.org.uk with local (Exim 4.72) + (envelope-from <peter@kentadvice.co.uk>) + id 1RYbOC-00034X-Vm + for team_delivery@whatdotheyknow.com; Thu, 08 Dec 2011 10:39:45 +0000 +Received: from mail-ey0-f173.google.com ([209.85.215.173]:38997) + by wildfire.ukcod.org.uk with esmtp (Exim 4.72) + (envelope-from <peter@kentadvice.co.uk>) + id 1RYbOC-00034L-GF + for track@whatdotheyknow.com; Thu, 08 Dec 2011 10:39:44 +0000 +Received: by eaai10 with SMTP id i10so1168752eaa.32 + for <track@whatdotheyknow.com>; Thu, 08 Dec 2011 02:39:33 -0800 (PST) +Received: by 10.213.21.148 with SMTP id j20mr131258ebb.87.1323340773446; + Thu, 08 Dec 2011 02:39:33 -0800 (PST) +Received: from PRWin7 (cpc2-tilb7-2-0-cust982.basl.cable.virginmedia.com. [94.168.103.215]) + by mx.google.com with ESMTPS id 49sm16411187eec.1.2011.12.08.02.39.31 + (version=TLSv1/SSLv3 cipher=OTHER); + Thu, 08 Dec 2011 02:39:32 -0800 (PST) +From: "Name Removed" <name-removed@example.co.uk> +To: <track@whatdotheyknow.com> +Subject: Out of Office reply +Date: Thu, 8 Dec 2011 10:39:24 -0000 +Message-ID: <00ab01ccb595$aada0070$008e0150$@co.uk> +MIME-Version: 1.0 +Content-Type: multipart/alternative; + boundary="----=_NextPart_000_00AC_01CCB595.AADA0070" +X-Mailer: Microsoft Office Outlook 12.0 +Thread-Index: Acy1laTpNPAp9QuHRu2X59T70yzpQw== +Content-Language: en-gb + +This is a multi-part message in MIME format. + +------=_NextPart_000_00AC_01CCB595.AADA0070 +Content-Type: text/plain; + charset="US-ASCII" +Content-Transfer-Encoding: 7bit + +Thank you for your message. I am currently out of the office, with [limited] +[no] access to e-mail. + +I will be returning on [day, date]. + +If you need assistance before then, you may reach me at [phone number]. +For urgent issues, please contact [name] at [e-mail address] or [telephone +number]. + +[Signature] + +[Optional: Type your favorite quotation or saying here along with the author +or source] + +------=_NextPart_000_00AC_01CCB595.AADA0070 +Content-Type: text/html; + charset="US-ASCII" +Content-Transfer-Encoding: quoted-printable + +<html xmlns:v=3D"urn:schemas-microsoft-com:vml" = +xmlns:o=3D"urn:schemas-microsoft-com:office:office" = +xmlns:w=3D"urn:schemas-microsoft-com:office:word" = +xmlns:x=3D"urn:schemas-microsoft-com:office:excel" = +xmlns:p=3D"urn:schemas-microsoft-com:office:powerpoint" = +xmlns:a=3D"urn:schemas-microsoft-com:office:access" = +xmlns:dt=3D"uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" = +xmlns:s=3D"uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" = +xmlns:rs=3D"urn:schemas-microsoft-com:rowset" xmlns:z=3D"#RowsetSchema" = +xmlns:b=3D"urn:schemas-microsoft-com:office:publisher" = +xmlns:ss=3D"urn:schemas-microsoft-com:office:spreadsheet" = +xmlns:c=3D"urn:schemas-microsoft-com:office:component:spreadsheet" = +xmlns:oa=3D"urn:schemas-microsoft-com:office:activation" = +xmlns:html=3D"http://www.w3.org/TR/REC-html40" = +xmlns:q=3D"http://schemas.xmlsoap.org/soap/envelope/" xmlns:D=3D"DAV:" = +xmlns:x2=3D"http://schemas.microsoft.com/office/excel/2003/xml" = +xmlns:ois=3D"http://schemas.microsoft.com/sharepoint/soap/ois/" = +xmlns:dir=3D"http://schemas.microsoft.com/sharepoint/soap/directory/" = +xmlns:ds=3D"http://www.w3.org/2000/09/xmldsig#" = +xmlns:dsp=3D"http://schemas.microsoft.com/sharepoint/dsp" = +xmlns:udc=3D"http://schemas.microsoft.com/data/udc" = +xmlns:xsd=3D"http://www.w3.org/2001/XMLSchema" = +xmlns:sub=3D"http://schemas.microsoft.com/sharepoint/soap/2002/1/alerts/"= + xmlns:ec=3D"http://www.w3.org/2001/04/xmlenc#" = +xmlns:sp=3D"http://schemas.microsoft.com/sharepoint/" = +xmlns:sps=3D"http://schemas.microsoft.com/sharepoint/soap/" = +xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance" = +xmlns:udcxf=3D"http://schemas.microsoft.com/data/udc/xmlfile" = +xmlns:wf=3D"http://schemas.microsoft.com/sharepoint/soap/workflow/" = +xmlns:mver=3D"http://schemas.openxmlformats.org/markup-compatibility/2006= +" xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" = +xmlns:mrels=3D"http://schemas.openxmlformats.org/package/2006/relationshi= +ps" = +xmlns:ex12t=3D"http://schemas.microsoft.com/exchange/services/2006/types"= + = +xmlns:ex12m=3D"http://schemas.microsoft.com/exchange/services/2006/messag= +es" xmlns=3D"http://www.w3.org/TR/REC-html40"> + +<head> +<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; = +charset=3Dus-ascii"> + + +<meta name=3DProgId content=3DWord.Document> +<meta name=3DGenerator content=3D"Microsoft Word 12"> +<meta name=3DOriginator content=3D"Microsoft Word 12"> +<link rel=3DFile-List href=3D"cid:filelist.xml@01C895B2.35BC4F70"> +<!--[if gte mso 9]><xml> + <o:OfficeDocumentSettings> + <o:AllowPNG/> + <o:TargetScreenSize>1024x768</o:TargetScreenSize> + </o:OfficeDocumentSettings> +</xml><![endif]--> +<link rel=3DthemeData href=3D"~~themedata~~"> +<link rel=3DcolorSchemeMapping href=3D"~~colorschememapping~~"> +<!--[if gte mso 9]><xml> + <w:WordDocument> + <w:SpellingState>Clean</w:SpellingState> + <w:TrackMoves/> + <w:TrackFormatting/> + <w:EnvelopeVis/> + <w:ValidateAgainstSchemas/> + <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> + <w:IgnoreMixedContent>false</w:IgnoreMixedContent> + <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> + <w:DoNotPromoteQF/> + <w:LidThemeOther>EN-US</w:LidThemeOther> + <w:LidThemeAsian>X-NONE</w:LidThemeAsian> + <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> + <w:Compatibility> + <w:DoNotExpandShiftReturn/> + <w:BreakWrappedTables/> + <w:SnapToGridInCell/> + <w:WrapTextWithPunct/> + <w:UseAsianBreakRules/> + <w:DontGrowAutofit/> + <w:SplitPgBreakAndParaMark/> + <w:DontVertAlignCellWithSp/> + <w:DontBreakConstrainedForcedTables/> + <w:DontVertAlignInTxbx/> + <w:Word11KerningPairs/> + <w:CachedColBalance/> + </w:Compatibility> + <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> + <m:mathPr> + <m:mathFont m:val=3D"Cambria Math"/> + <m:brkBin m:val=3D"before"/> + <m:brkBinSub m:val=3D"--"/> + <m:smallFrac m:val=3D"off"/> + <m:dispDef/> + <m:lMargin m:val=3D"0"/> + <m:rMargin m:val=3D"0"/> + <m:defJc m:val=3D"centerGroup"/> + <m:wrapIndent m:val=3D"1440"/> + <m:intLim m:val=3D"subSup"/> + <m:naryLim m:val=3D"undOvr"/> + </m:mathPr></w:WordDocument> +</xml><![endif]--><!--[if gte mso 9]><xml> + <w:LatentStyles DefLockedState=3D"false" DefUnhideWhenUsed=3D"true"=20 + DefSemiHidden=3D"true" DefQFormat=3D"false" DefPriority=3D"99"=20 + LatentStyleCount=3D"267"> + <w:LsdException Locked=3D"false" Priority=3D"0" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Normal"/> + <w:LsdException Locked=3D"false" Priority=3D"9" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"heading 1"/> + <w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" = +Name=3D"heading 2"/> + <w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" = +Name=3D"heading 3"/> + <w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" = +Name=3D"heading 4"/> + <w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" = +Name=3D"heading 5"/> + <w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" = +Name=3D"heading 6"/> + <w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" = +Name=3D"heading 7"/> + <w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" = +Name=3D"heading 8"/> + <w:LsdException Locked=3D"false" Priority=3D"9" QFormat=3D"true" = +Name=3D"heading 9"/> + <w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 1"/> + <w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 2"/> + <w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 3"/> + <w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 4"/> + <w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 5"/> + <w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 6"/> + <w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 7"/> + <w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 8"/> + <w:LsdException Locked=3D"false" Priority=3D"39" Name=3D"toc 9"/> + <w:LsdException Locked=3D"false" Priority=3D"35" QFormat=3D"true" = +Name=3D"caption"/> + <w:LsdException Locked=3D"false" Priority=3D"10" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Title"/> + <w:LsdException Locked=3D"false" Priority=3D"1" Name=3D"Default = +Paragraph Font"/> + <w:LsdException Locked=3D"false" Priority=3D"11" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtitle"/> + <w:LsdException Locked=3D"false" Priority=3D"22" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Strong"/> + <w:LsdException Locked=3D"false" Priority=3D"20" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Emphasis"/> + <w:LsdException Locked=3D"false" Priority=3D"59" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Table Grid"/> + <w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" = +Name=3D"Placeholder Text"/> + <w:LsdException Locked=3D"false" Priority=3D"1" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"No Spacing"/> + <w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Light Shading"/> + <w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Light List"/> + <w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Light Grid"/> + <w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1"/> + <w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2"/> + <w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium List 1"/> + <w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium List 2"/> + <w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1"/> + <w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2"/> + <w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3"/> + <w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Dark List"/> + <w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Colorful Shading"/> + <w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Colorful List"/> + <w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Colorful Grid"/> + <w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 1"/> + <w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Light List Accent 1"/> + <w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 1"/> + <w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 1"/> + <w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 1"/> + <w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 1"/> + <w:LsdException Locked=3D"false" UnhideWhenUsed=3D"false" = +Name=3D"Revision"/> + <w:LsdException Locked=3D"false" Priority=3D"34" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"List Paragraph"/> + <w:LsdException Locked=3D"false" Priority=3D"29" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Quote"/> + <w:LsdException Locked=3D"false" Priority=3D"30" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Quote"/> + <w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 1"/> + <w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 1"/> + <w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 1"/> + <w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 1"/> + <w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 1"/> + <w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 1"/> + <w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 1"/> + <w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 1"/> + <w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 2"/> + <w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Light List Accent 2"/> + <w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 2"/> + <w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 2"/> + <w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 2"/> + <w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 2"/> + <w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 2"/> + <w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 2"/> + <w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 2"/> + <w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 2"/> + <w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 2"/> + <w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 2"/> + <w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 2"/> + <w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 2"/> + <w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 3"/> + <w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Light List Accent 3"/> + <w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 3"/> + <w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 3"/> + <w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 3"/> + <w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 3"/> + <w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 3"/> + <w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 3"/> + <w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 3"/> + <w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 3"/> + <w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 3"/> + <w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 3"/> + <w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 3"/> + <w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 3"/> + <w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 4"/> + <w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Light List Accent 4"/> + <w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 4"/> + <w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 4"/> + <w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 4"/> + <w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 4"/> + <w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 4"/> + <w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 4"/> + <w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 4"/> + <w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 4"/> + <w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 4"/> + <w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 4"/> + <w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 4"/> + <w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 4"/> + <w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 5"/> + <w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Light List Accent 5"/> + <w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 5"/> + <w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 5"/> + <w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 5"/> + <w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 5"/> + <w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 5"/> + <w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 5"/> + <w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 5"/> + <w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 5"/> + <w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 5"/> + <w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 5"/> + <w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 5"/> + <w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 5"/> + <w:LsdException Locked=3D"false" Priority=3D"60" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Light Shading Accent 6"/> + <w:LsdException Locked=3D"false" Priority=3D"61" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Light List Accent 6"/> + <w:LsdException Locked=3D"false" Priority=3D"62" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Light Grid Accent 6"/> + <w:LsdException Locked=3D"false" Priority=3D"63" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Shading 1 Accent 6"/> + <w:LsdException Locked=3D"false" Priority=3D"64" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Shading 2 Accent 6"/> + <w:LsdException Locked=3D"false" Priority=3D"65" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium List 1 Accent 6"/> + <w:LsdException Locked=3D"false" Priority=3D"66" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium List 2 Accent 6"/> + <w:LsdException Locked=3D"false" Priority=3D"67" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Grid 1 Accent 6"/> + <w:LsdException Locked=3D"false" Priority=3D"68" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Grid 2 Accent 6"/> + <w:LsdException Locked=3D"false" Priority=3D"69" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Medium Grid 3 Accent 6"/> + <w:LsdException Locked=3D"false" Priority=3D"70" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Dark List Accent 6"/> + <w:LsdException Locked=3D"false" Priority=3D"71" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Colorful Shading Accent 6"/> + <w:LsdException Locked=3D"false" Priority=3D"72" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Colorful List Accent 6"/> + <w:LsdException Locked=3D"false" Priority=3D"73" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" Name=3D"Colorful Grid Accent 6"/> + <w:LsdException Locked=3D"false" Priority=3D"19" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Emphasis"/> + <w:LsdException Locked=3D"false" Priority=3D"21" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense Emphasis"/> + <w:LsdException Locked=3D"false" Priority=3D"31" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Subtle Reference"/> + <w:LsdException Locked=3D"false" Priority=3D"32" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Intense = +Reference"/> + <w:LsdException Locked=3D"false" Priority=3D"33" SemiHidden=3D"false"=20 + UnhideWhenUsed=3D"false" QFormat=3D"true" Name=3D"Book Title"/> + <w:LsdException Locked=3D"false" Priority=3D"37" = +Name=3D"Bibliography"/> + <w:LsdException Locked=3D"false" Priority=3D"39" QFormat=3D"true" = +Name=3D"TOC Heading"/> + </w:LatentStyles> +</xml><![endif]--> +<style> +<!-- + /* Font Definitions */ + @font-face + {font-family:"Cambria Math"; + panose-1:2 4 5 3 5 4 6 3 2 4; + mso-font-charset:1; + mso-generic-font-family:roman; + mso-font-format:other; + mso-font-pitch:variable; + mso-font-signature:0 0 0 0 0 0;} +@font-face + {font-family:Calibri; + panose-1:2 15 5 2 2 2 4 3 2 4; + mso-font-charset:0; + mso-generic-font-family:swiss; + mso-font-pitch:variable; + mso-font-signature:-1610611985 1073750139 0 0 159 0;} + /* Style Definitions */ + p.MsoNormal, li.MsoNormal, div.MsoNormal + {mso-style-unhide:no; + mso-style-qformat:yes; + mso-style-parent:""; + margin:0in; + margin-bottom:.0001pt; + mso-pagination:widow-orphan; + font-size:11.0pt; + font-family:"Calibri","sans-serif"; + mso-fareast-font-family:Calibri; + mso-fareast-theme-font:minor-latin; + mso-bidi-font-family:"Times New Roman";} +a:link, span.MsoHyperlink + {mso-style-noshow:yes; + mso-style-priority:99; + color:blue; + text-decoration:underline; + text-underline:single;} +a:visited, span.MsoHyperlinkFollowed + {mso-style-noshow:yes; + mso-style-priority:99; + color:purple; + text-decoration:underline; + text-underline:single;} +span.EmailStyle17 + {mso-style-type:personal; + mso-style-noshow:yes; + mso-style-unhide:no; + font-family:"Calibri","sans-serif"; + mso-ascii-font-family:Calibri; + mso-hansi-font-family:Calibri; + color:windowtext;} +span.EmailStyle18 + {mso-style-type:personal-reply; + mso-style-noshow:yes; + mso-style-unhide:no; + mso-ansi-font-size:11.0pt; + mso-bidi-font-size:11.0pt; + font-family:"Calibri","sans-serif"; + mso-ascii-font-family:Calibri; + mso-ascii-theme-font:minor-latin; + mso-hansi-font-family:Calibri; + mso-hansi-theme-font:minor-latin; + mso-bidi-font-family:"Times New Roman"; + mso-bidi-theme-font:minor-bidi; + color:#5F497A; + mso-themecolor:accent4; + mso-themeshade:191;} +.MsoChpDefault + {mso-style-type:export-only; + mso-default-props:yes; + font-size:10.0pt; + mso-ansi-font-size:10.0pt; + mso-bidi-font-size:10.0pt;} +@page Section1 + {size:8.5in 11.0in; + margin:1.0in 1.0in 1.0in 1.0in; + mso-header-margin:.5in; + mso-footer-margin:.5in; + mso-paper-source:0;} +div.Section1 + {page:Section1;} +--> +</style> +<!--[if gte mso 10]> +<style> + /* Style Definitions */=20 + table.MsoNormalTable + {mso-style-name:"Table Normal"; + mso-tstyle-rowband-size:0; + mso-tstyle-colband-size:0; + mso-style-noshow:yes; + mso-style-priority:99; + mso-style-qformat:yes; + mso-style-parent:""; + mso-padding-alt:0in 5.4pt 0in 5.4pt; + mso-para-margin:0in; + mso-para-margin-bottom:.0001pt; + mso-pagination:widow-orphan; + font-size:10.0pt; + font-family:"Times New Roman","serif";} +</style> +<![endif]--><!--[if gte mso 9]><xml> + <o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" /> +</xml><![endif]--><!--[if gte mso 9]><xml> + <o:shapelayout v:ext=3D"edit"> + <o:idmap v:ext=3D"edit" data=3D"1" /> + </o:shapelayout></xml><![endif]--> +</head> + +<body lang=3DEN-US link=3Dblue vlink=3Dpurple = +style=3D'tab-interval:.5in'> + +<div class=3DSection1> + +<p class=3DMsoNormal>Thank you for your message. I am currently out of = +the +office, with [limited] [no] access to e-mail.<o:p></o:p></p> + +<p class=3DMsoNormal><o:p> </o:p></p> + +<p class=3DMsoNormal>I will be returning on [day, date].<o:p></o:p></p> + +<p class=3DMsoNormal><o:p> </o:p></p> + +<p class=3DMsoNormal>If you need assistance before then, you may reach = +me at +[phone number].<o:p></o:p></p> + +<p class=3DMsoNormal>For urgent issues, please contact [name] at [e-mail = +address] +or [telephone number].<o:p></o:p></p> + +<p class=3DMsoNormal><o:p> </o:p></p> + +<p class=3DMsoNormal>[Signature]<o:p></o:p></p> + +<p class=3DMsoNormal><o:p> </o:p></p> + +<p class=3DMsoNormal><i style=3D'mso-bidi-font-style:normal'>[Optional: = +Type your +favorite quotation or saying here along with the author or = +source]<o:p></o:p></i></p> + +</div> + +</body> + +</html> + +------=_NextPart_000_00AC_01CCB595.AADA0070-- + diff --git a/spec/script/handle-mail-replies_spec.rb b/spec/script/handle-mail-replies_spec.rb index eae0b516b..8ed83b31f 100644 --- a/spec/script/handle-mail-replies_spec.rb +++ b/spec/script/handle-mail-replies_spec.rb @@ -54,5 +54,15 @@ describe "When filtering" do r = mail_reply_test("track-response-messageclass-oof.email") r.status.should == 2 end + + it "should detect an Outlook(?)-style out-of-office" do + r = mail_reply_test("track-response-outlook-oof.email") + r.status.should == 2 + end + + it "should detect an ABCMail-style out-of-office" do + r = mail_reply_test("track-response-abcmail-oof.email") + r.status.should == 2 + end end |