

{"id":6180,"date":"2017-08-25T18:10:35","date_gmt":"2017-08-25T23:10:35","guid":{"rendered":"https:\/\/rud.is\/b\/?p=6180"},"modified":"2018-11-04T07:36:16","modified_gmt":"2018-11-04T12:36:16","slug":"unbottling-msg-files-in-r","status":"publish","type":"post","link":"https:\/\/rud.is\/b\/2017\/08\/25\/unbottling-msg-files-in-r\/","title":{"rendered":"Unbottling &#8220;.msg&#8221; Files in R"},"content":{"rendered":"<p>There was a discussion on Twitter about the need to read in &#8220;.msg&#8221; files using R. The &#8220;MSG&#8221; file format is one of the many binary abominations created by Microsoft to lock folks and users into their platform and tools. Thankfully, they (eventually) provided documentation for the MSG file format which helped me throw together a <a href=\"https:\/\/github.com\/hrbrmstr\/msgxtractr\">small R package<\/a> &#8212; <code>msgxtractr<\/code> &#8212; that can read in these &#8216;.msg&#8217; files and produce a list as a result.<\/p>\n<p>I had previously creatred a quick version of this by wrapping a Python module, but that&#8217;s a path fraught with peril and did not work for one of the requestors (yay, not-so-cross-platform UTF woes). So, I cobbled together some bits and pieces from the C to provide a singular function <code>read_msg()<\/code> that smashes open bottled up msgs, grabs sane\/useful fields and produces a <code>list()<\/code> with them all wrapped up in a bow (an example is at the end and in the GH README).<\/p>\n<p>Thanks to <a href=\"https:\/\/github.com\/r-hub\/rhub\">rhub<\/a>, <a href=\"https:\/\/win-builder.r-project.org\/\">WinBuilder<\/a> and <span class=\"removed_link\" title=\"travis-ci.org\/hrbrmstr\/msgxtractr\">Travis<\/span> the code works on macOS, Linux and Windows and even has pretty decent <a href=\"https:\/\/codecov.io\/gh\/hrbrmstr\/msgxtractr\">code coverage<\/a> for a quick project. That&#8217;s a resounding testimony to the work of many members of the R community who&#8217;ve gone to great lengths to make testing virtually painless for package developers.<\/p>\n<p>Now, I literally have a singular &#8216;.msg&#8217; file to test with, so if folks can kick the tyres, <a href=\"https:\/\/github.com\/hrbrmstr\/msgxtractr\/issues\">file issues<\/a> (with errors or feature suggestions) and provide some more &#8216;.msg&#8217; files for testing, it would be most appreciated.<\/p>\n<pre id=\"msgx01\"><code class=\"language-r\">devtools::install_github(&quot;hrbrmstr\/msgxtractr&quot;)\r\n\r\nlibrary(msgxtractr)\r\n\r\nprint(str(read_msg(system.file(&quot;extdata\/unicode.msg&quot;, package=&quot;msgxtractr&quot;))))\r\n\r\n## List of 7\r\n##  $ headers         :Classes &#039;tbl_df&#039;, &#039;tbl&#039; and &#039;data.frame&#039;:    1 obs. of  18 variables:\r\n##   ..$ Return-path               : chr &quot;&lt;brizhou@gmail.com&gt;&quot;\r\n##   ..$ Received                  :List of 1\r\n##   .. ..$ : chr [1:4] &quot;from st11p00mm-smtpin007.mac.com ([17.172.84.240])\\nby ms06561.mac.com (Oracle Communications Messaging Server &quot;| __truncated__ &quot;from mail-vc0-f182.google.com ([209.85.220.182])\\nby st11p00mm-smtpin007.mac.com\\n(Oracle Communications Messag&quot;| __truncated__ &quot;by mail-vc0-f182.google.com with SMTP id ie18so3484487vcb.13 for\\n&lt;brianzhou@me.com&gt;; Mon, 18 Nov 2013 00:26:25 -0800 (PST)&quot; &quot;by 10.58.207.196 with HTTP; Mon, 18 Nov 2013 00:26:24 -0800 (PST)&quot;\r\n##   ..$ Original-recipient        : chr &quot;rfc822;brianzhou@me.com&quot;\r\n##   ..$ Received-SPF              : chr &quot;pass (st11p00mm-smtpin006.mac.com: domain of brizhou@gmail.com\\ndesignates 209.85.220.182 as permitted sender)\\&quot;| __truncated__\r\n##   ..$ DKIM-Signature            : chr &quot;v=1; a=rsa-sha256; c=relaxed\/relaxed;        d=gmail.com;\\ns=20120113; h=mime-version:date:message-id:subject:f&quot;| __truncated__\r\n##   ..$ MIME-version              : chr &quot;1.0&quot;\r\n##   ..$ X-Received                : chr &quot;by 10.221.47.193 with SMTP id ut1mr14470624vcb.8.1384763184960;\\nMon, 18 Nov 2013 00:26:24 -0800 (PST)&quot;\r\n##   ..$ Date                      : chr &quot;Mon, 18 Nov 2013 10:26:24 +0200&quot;\r\n##   ..$ Message-id                : chr &quot;&lt;CADtJ4eNjQSkGcBtVteCiTF+YFG89+AcHxK3QZ=-Mt48xygkvdQ@mail.gmail.com&gt;&quot;\r\n##   ..$ Subject                   : chr &quot;Test for TIF files&quot;\r\n##   ..$ From                      : chr &quot;Brian Zhou &lt;brizhou@gmail.com&gt;&quot;\r\n##   ..$ To                        : chr &quot;brianzhou@me.com&quot;\r\n##   ..$ Cc                        : chr &quot;Brian Zhou &lt;brizhou@gmail.com&gt;&quot;\r\n##   ..$ Content-type              : chr &quot;multipart\/mixed; boundary=001a113392ecbd7a5404eb6f4d6a&quot;\r\n##   ..$ Authentication-results    : chr &quot;st11p00mm-smtpin007.mac.com; dkim=pass\\nreason=\\&quot;2048-bit key\\&quot; header.d=gmail.com header.i=@gmail.com\\nheader.&quot;| __truncated__\r\n##   ..$ x-icloud-spam-score       : chr &quot;33322\\nf=gmail.com;e=gmail.com;pp=ham;spf=pass;dkim=pass;wl=absent;pwl=absent&quot;\r\n##   ..$ X-Proofpoint-Virus-Version: chr &quot;vendor=fsecure\\nengine=2.50.10432:5.10.8794,1.0.14,0.0.0000\\ndefinitions=2013-11-18_02:2013-11-18,2013-11-17,19&quot;| __truncated__\r\n##   ..$ X-Proofpoint-Spam-Details : chr &quot;rule=notspam policy=default score=0 spamscore=0\\nsuspectscore=0 phishscore=0 bulkscore=0 adultscore=0 classifie&quot;| __truncated__\r\n##  $ sender          :List of 2\r\n##   ..$ sender_email: chr &quot;brizhou@gmail.com&quot;\r\n##   ..$ sender_name : chr &quot;Brian Zhou&quot;\r\n##  $ recipients      :List of 2\r\n##   ..$ :List of 3\r\n##   .. ..$ display_name : NULL\r\n##   .. ..$ address_type : chr &quot;SMTP&quot;\r\n##   .. ..$ email_address: chr &quot;brianzhou@me.com&quot;\r\n##   ..$ :List of 3\r\n##   .. ..$ display_name : NULL\r\n##   .. ..$ address_type : chr &quot;SMTP&quot;\r\n##   .. ..$ email_address: chr &quot;brizhou@gmail.com&quot;\r\n##  $ subject         : chr &quot;Test for TIF files&quot;\r\n##  $ body            : chr &quot;This is a test email to experiment with the MS Outlook MSG Extractor\\r\\n\\r\\n\\r\\n-- \\r\\n\\r\\n\\r\\nKind regards\\r\\n&quot;| __truncated__\r\n##  $ attachments     :List of 2\r\n##   ..$ :List of 4\r\n##   .. ..$ filename     : chr &quot;importOl.tif&quot;\r\n##   .. ..$ long_filename: chr &quot;import OleFileIO.tif&quot;\r\n##   .. ..$ mime         : chr &quot;image\/tiff&quot;\r\n##   .. ..$ content      : raw [1:969674] 49 49 2a 00 ...\r\n##   ..$ :List of 4\r\n##   .. ..$ filename     : chr &quot;raisedva.tif&quot;\r\n##   .. ..$ long_filename: chr &quot;raised value error.tif&quot;\r\n##   .. ..$ mime         : chr &quot;image\/tiff&quot;\r\n##   .. ..$ content      : raw [1:1033142] 49 49 2a 00 ...\r\n##  $ display_envelope:List of 2\r\n##   ..$ display_cc: chr &quot;Brian Zhou&quot;\r\n##   ..$ display_to: chr &quot;brianzhou@me.com&quot;\r\n## NULL<\/code><\/pre>\n<p>NOTE: Don&#8217;t try to read those TIFF images with <code>magick<\/code> or even the <code>tiff<\/code> package. The content seems to have some strange tags\/fields. But, saving it (use <code>writeBin()<\/code>) and opening with Preview (or your favorite image viewer) should work (it did for me and produces the following image that I&#8217;ve converted to png):<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/08\/bottle.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"6187\" data-permalink=\"https:\/\/rud.is\/b\/2017\/08\/25\/unbottling-msg-files-in-r\/bottle\/\" data-orig-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/08\/bottle.png?fit=1920%2C1080&amp;ssl=1\" data-orig-size=\"1920,1080\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"bottle\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/08\/bottle.png?fit=510%2C287&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/08\/bottle.png?resize=510%2C287&#038;ssl=1\" alt=\"\" width=\"510\" height=\"287\" class=\"aligncenter size-full wp-image-6187\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>There was a discussion on Twitter about the need to read in &#8220;.msg&#8221; files using R. The &#8220;MSG&#8221; file format is one of the many binary abominations created by Microsoft to lock folks and users into their platform and tools. Thankfully, they (eventually) provided documentation for the MSG file format which helped me throw together [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":6182,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":3,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[764,91],"tags":[810],"class_list":["post-6180","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-wrangling","category-r","tag-post"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Unbottling &quot;.msg&quot; Files in R - rud.is<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/rud.is\/b\/2017\/08\/25\/unbottling-msg-files-in-r\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Unbottling &quot;.msg&quot; Files in R - rud.is\" \/>\n<meta property=\"og:description\" content=\"There was a discussion on Twitter about the need to read in &#8220;.msg&#8221; files using R. The &#8220;MSG&#8221; file format is one of the many binary abominations created by Microsoft to lock folks and users into their platform and tools. Thankfully, they (eventually) provided documentation for the MSG file format which helped me throw together [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rud.is\/b\/2017\/08\/25\/unbottling-msg-files-in-r\/\" \/>\n<meta property=\"og:site_name\" content=\"rud.is\" \/>\n<meta property=\"article:published_time\" content=\"2017-08-25T23:10:35+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-11-04T12:36:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/08\/shutterstock_203013673-copy.jpg?fit=1000%2C667&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"1000\" \/>\n\t<meta property=\"og:image:height\" content=\"667\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"hrbrmstr\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"hrbrmstr\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/08\\\/25\\\/unbottling-msg-files-in-r\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/08\\\/25\\\/unbottling-msg-files-in-r\\\/\"},\"author\":{\"name\":\"hrbrmstr\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\"},\"headline\":\"Unbottling &#8220;.msg&#8221; Files in R\",\"datePublished\":\"2017-08-25T23:10:35+00:00\",\"dateModified\":\"2018-11-04T12:36:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/08\\\/25\\\/unbottling-msg-files-in-r\\\/\"},\"wordCount\":313,\"commentCount\":8,\"publisher\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\"},\"image\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/08\\\/25\\\/unbottling-msg-files-in-r\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2017\\\/08\\\/shutterstock_203013673-copy.jpg?fit=1000%2C667&ssl=1\",\"keywords\":[\"post\"],\"articleSection\":[\"data wrangling\",\"R\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/08\\\/25\\\/unbottling-msg-files-in-r\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/08\\\/25\\\/unbottling-msg-files-in-r\\\/\",\"url\":\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/08\\\/25\\\/unbottling-msg-files-in-r\\\/\",\"name\":\"Unbottling \\\".msg\\\" Files in R - rud.is\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/08\\\/25\\\/unbottling-msg-files-in-r\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/08\\\/25\\\/unbottling-msg-files-in-r\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2017\\\/08\\\/shutterstock_203013673-copy.jpg?fit=1000%2C667&ssl=1\",\"datePublished\":\"2017-08-25T23:10:35+00:00\",\"dateModified\":\"2018-11-04T12:36:16+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/08\\\/25\\\/unbottling-msg-files-in-r\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/08\\\/25\\\/unbottling-msg-files-in-r\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/08\\\/25\\\/unbottling-msg-files-in-r\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2017\\\/08\\\/shutterstock_203013673-copy.jpg?fit=1000%2C667&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2017\\\/08\\\/shutterstock_203013673-copy.jpg?fit=1000%2C667&ssl=1\",\"width\":1000,\"height\":667},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/2017\\\/08\\\/25\\\/unbottling-msg-files-in-r\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/rud.is\\\/b\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Unbottling &#8220;.msg&#8221; Files in R\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#website\",\"url\":\"https:\\\/\\\/rud.is\\\/b\\\/\",\"name\":\"rud.is\",\"description\":\"&quot;In God we trust. All others must bring data&quot;\",\"publisher\":{\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/rud.is\\\/b\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/rud.is\\\/b\\\/#\\\/schema\\\/person\\\/d7cb7487ab0527447f7fda5c423ff886\",\"name\":\"hrbrmstr\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/ukr-shield.png?fit=460%2C460&ssl=1\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/ukr-shield.png?fit=460%2C460&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/ukr-shield.png?fit=460%2C460&ssl=1\",\"width\":460,\"height\":460,\"caption\":\"hrbrmstr\"},\"logo\":{\"@id\":\"https:\\\/\\\/i0.wp.com\\\/rud.is\\\/b\\\/wp-content\\\/uploads\\\/2023\\\/10\\\/ukr-shield.png?fit=460%2C460&ssl=1\"},\"description\":\"Don't look at me\u2026I do what he does \u2014 just slower. #rstats avuncular \u2022 ?Resistance Fighter \u2022 Cook \u2022 Christian \u2022 [Master] Chef des Donn\u00e9es de S\u00e9curit\u00e9 @ @rapid7\",\"sameAs\":[\"http:\\\/\\\/rud.is\"],\"url\":\"https:\\\/\\\/rud.is\\\/b\\\/author\\\/hrbrmstr\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Unbottling \".msg\" Files in R - rud.is","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/rud.is\/b\/2017\/08\/25\/unbottling-msg-files-in-r\/","og_locale":"en_US","og_type":"article","og_title":"Unbottling \".msg\" Files in R - rud.is","og_description":"There was a discussion on Twitter about the need to read in &#8220;.msg&#8221; files using R. The &#8220;MSG&#8221; file format is one of the many binary abominations created by Microsoft to lock folks and users into their platform and tools. Thankfully, they (eventually) provided documentation for the MSG file format which helped me throw together [&hellip;]","og_url":"https:\/\/rud.is\/b\/2017\/08\/25\/unbottling-msg-files-in-r\/","og_site_name":"rud.is","article_published_time":"2017-08-25T23:10:35+00:00","article_modified_time":"2018-11-04T12:36:16+00:00","og_image":[{"width":1000,"height":667,"url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/08\/shutterstock_203013673-copy.jpg?fit=1000%2C667&ssl=1","type":"image\/jpeg"}],"author":"hrbrmstr","twitter_card":"summary_large_image","twitter_misc":{"Written by":"hrbrmstr","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/rud.is\/b\/2017\/08\/25\/unbottling-msg-files-in-r\/#article","isPartOf":{"@id":"https:\/\/rud.is\/b\/2017\/08\/25\/unbottling-msg-files-in-r\/"},"author":{"name":"hrbrmstr","@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"headline":"Unbottling &#8220;.msg&#8221; Files in R","datePublished":"2017-08-25T23:10:35+00:00","dateModified":"2018-11-04T12:36:16+00:00","mainEntityOfPage":{"@id":"https:\/\/rud.is\/b\/2017\/08\/25\/unbottling-msg-files-in-r\/"},"wordCount":313,"commentCount":8,"publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"image":{"@id":"https:\/\/rud.is\/b\/2017\/08\/25\/unbottling-msg-files-in-r\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/08\/shutterstock_203013673-copy.jpg?fit=1000%2C667&ssl=1","keywords":["post"],"articleSection":["data wrangling","R"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/rud.is\/b\/2017\/08\/25\/unbottling-msg-files-in-r\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/rud.is\/b\/2017\/08\/25\/unbottling-msg-files-in-r\/","url":"https:\/\/rud.is\/b\/2017\/08\/25\/unbottling-msg-files-in-r\/","name":"Unbottling \".msg\" Files in R - rud.is","isPartOf":{"@id":"https:\/\/rud.is\/b\/#website"},"primaryImageOfPage":{"@id":"https:\/\/rud.is\/b\/2017\/08\/25\/unbottling-msg-files-in-r\/#primaryimage"},"image":{"@id":"https:\/\/rud.is\/b\/2017\/08\/25\/unbottling-msg-files-in-r\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/08\/shutterstock_203013673-copy.jpg?fit=1000%2C667&ssl=1","datePublished":"2017-08-25T23:10:35+00:00","dateModified":"2018-11-04T12:36:16+00:00","breadcrumb":{"@id":"https:\/\/rud.is\/b\/2017\/08\/25\/unbottling-msg-files-in-r\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rud.is\/b\/2017\/08\/25\/unbottling-msg-files-in-r\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/rud.is\/b\/2017\/08\/25\/unbottling-msg-files-in-r\/#primaryimage","url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/08\/shutterstock_203013673-copy.jpg?fit=1000%2C667&ssl=1","contentUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/08\/shutterstock_203013673-copy.jpg?fit=1000%2C667&ssl=1","width":1000,"height":667},{"@type":"BreadcrumbList","@id":"https:\/\/rud.is\/b\/2017\/08\/25\/unbottling-msg-files-in-r\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/rud.is\/b\/"},{"@type":"ListItem","position":2,"name":"Unbottling &#8220;.msg&#8221; Files in R"}]},{"@type":"WebSite","@id":"https:\/\/rud.is\/b\/#website","url":"https:\/\/rud.is\/b\/","name":"rud.is","description":"&quot;In God we trust. All others must bring data&quot;","publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/rud.is\/b\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886","name":"hrbrmstr","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","contentUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","width":460,"height":460,"caption":"hrbrmstr"},"logo":{"@id":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1"},"description":"Don't look at me\u2026I do what he does \u2014 just slower. #rstats avuncular \u2022 ?Resistance Fighter \u2022 Cook \u2022 Christian \u2022 [Master] Chef des Donn\u00e9es de S\u00e9curit\u00e9 @ @rapid7","sameAs":["http:\/\/rud.is"],"url":"https:\/\/rud.is\/b\/author\/hrbrmstr\/"}]}},"jetpack_featured_media_url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/08\/shutterstock_203013673-copy.jpg?fit=1000%2C667&ssl=1","jetpack_shortlink":"https:\/\/wp.me\/p23idr-1BG","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":14177,"url":"https:\/\/rud.is\/b\/2023\/07\/07\/poor-dudes-janky-bluesky-feed-reader-cli-via-r-python\/","url_meta":{"origin":6180,"position":0},"title":"Poor Dude&#8217;s Janky Bluesky Feed Reader CLI Via R &#038; Python","author":"hrbrmstr","date":"2023-07-07","format":false,"excerpt":"Lynn (of TITAA and general NLP wizardy fame) was gracious enough to lend me a Bluesky invite, so I could claim my handle on yet-another social media site. I'm still wary of it (as noted in one of this week's Drops), but the AT protocol \u2014\u00a0whilst super (lacking a better\u2026","rel":"","context":"In &quot;Python&quot;","block_context":{"text":"Python","link":"https:\/\/rud.is\/b\/category\/python-2\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1730,"url":"https:\/\/rud.is\/b\/2012\/10\/24\/extracting-ose-firewall-alert-data-from-imap-gmail-mail-to-csv\/","url_meta":{"origin":6180,"position":1},"title":"Extracting OSE Firewall Alert Data From IMAP (Gmail) Mail To CSV With Python","author":"hrbrmstr","date":"2012-10-24","format":false,"excerpt":"I played around with OSE Firewall for WordPress for a couple days to see if it was worth switching to from the plugin I was previously using. It's definitely not as full featured and I didn't see any WP database extensions where it kept a log I could review\/analyze, so\u2026","rel":"","context":"In &quot;Development&quot;","block_context":{"text":"Development","link":"https:\/\/rud.is\/b\/category\/development\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":13834,"url":"https:\/\/rud.is\/b\/2023\/03\/18\/the-road-to-ggplot2-in-webr-part-1-the-road-is-paved-with-good-base-r-plots\/","url_meta":{"origin":6180,"position":2},"title":"The Road To ggplot2 In WebR, Part 1: The Road Is Paved With Good Base R Plots","author":"hrbrmstr","date":"2023-03-18","format":false,"excerpt":"I have graphics working in Vanilla JS WebR, now, and I'll cover the path to that in two parts. The intent was to jump straight into ggplot2-land, but, as you saw in my previous post, WASM'd ggplot2 is a bear. And, I really didn't grok what the WebR site docs\u2026","rel":"","context":"In &quot;ggplot&quot;","block_context":{"text":"ggplot","link":"https:\/\/rud.is\/b\/category\/ggplot\/"},"img":{"alt_text":"WebR plot example with a faceted scatterplot","src":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/03\/Screenshot-2023-03-18-at-10.10.23.png?fit=974%2C1200&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/03\/Screenshot-2023-03-18-at-10.10.23.png?fit=974%2C1200&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/03\/Screenshot-2023-03-18-at-10.10.23.png?fit=974%2C1200&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/03\/Screenshot-2023-03-18-at-10.10.23.png?fit=974%2C1200&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":19774,"url":"https:\/\/rud.is\/b\/2024\/05\/03\/cve-2024-27322-should-never-have-been-assigned-and-r-data-files-are-still-super-risky-even-in-r-4-4-0\/","url_meta":{"origin":6180,"position":3},"title":"CVE-2024-27322 Should Never Have Been Assigned And R Data Files Are Still Super Risky Even In R 4.4.0","author":"hrbrmstr","date":"2024-05-03","format":false,"excerpt":"I had not planned to blog this (this is an incredibly time-crunched week for me) but CERT\/CC and CISA made a big deal out of a non-vulnerability in R, and it's making the round on socmed, so here we are. A security vendor decided to try to get some hype\u2026","rel":"","context":"In &quot;R&quot;","block_context":{"text":"R","link":"https:\/\/rud.is\/b\/category\/r\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":6127,"url":"https:\/\/rud.is\/b\/2017\/07\/27\/reading-pcap-files-with-apache-drill-and-the-sergeant-r-package\/","url_meta":{"origin":6180,"position":4},"title":"Reading PCAP Files with Apache Drill and the sergeant R Package","author":"hrbrmstr","date":"2017-07-27","format":false,"excerpt":"It's no secret that I'm a fan of Apache Drill. One big strength of the platform is that it normalizes the access to diverse data sources down to ANSI SQL calls, which means that I can pull data from parquet, Hie, HBase, Kudu, CSV, JSON, MongoDB and MariaDB with the\u2026","rel":"","context":"In &quot;Apache Drill&quot;","block_context":{"text":"Apache Drill","link":"https:\/\/rud.is\/b\/category\/apache-drill\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3784,"url":"https:\/\/rud.is\/b\/2015\/11\/11\/using-monetdblite-with-real-world-csv-files\/","url_meta":{"origin":6180,"position":5},"title":"Using MonetDB[Lite] with real-world CSV files","author":"hrbrmstr","date":"2015-11-11","format":false,"excerpt":"[MonetDBLite](https:\/\/www.monetdb.org\/blog\/monetdblite-r) (for R) was announced\/released today and, while the examples they provide are compelling there's a \"gotcha\" for potential new folks using SQL in general and SQL + MonetDB + R together. The toy example on the site shows dumping `mtcars` with `dbWriteTable` and then doing things. Real-world CSV files\u2026","rel":"","context":"In &quot;monetdb&quot;","block_context":{"text":"monetdb","link":"https:\/\/rud.is\/b\/category\/monetdb\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/6180","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/comments?post=6180"}],"version-history":[{"count":0,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/6180\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/media\/6182"}],"wp:attachment":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/media?parent=6180"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/categories?post=6180"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/tags?post=6180"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}