extract-msg 0.48.5__tar.gz → 0.48.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. {extract_msg-0.48.5 → extract_msg-0.48.6}/CHANGELOG.md +3 -0
  2. {extract_msg-0.48.5 → extract_msg-0.48.6}/PKG-INFO +3 -3
  3. {extract_msg-0.48.5 → extract_msg-0.48.6}/README.rst +2 -2
  4. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/__init__.py +2 -2
  5. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/open_msg.py +10 -3
  6. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg.egg-info/PKG-INFO +3 -3
  7. {extract_msg-0.48.5 → extract_msg-0.48.6}/LICENSE.txt +0 -0
  8. {extract_msg-0.48.5 → extract_msg-0.48.6}/MANIFEST.in +0 -0
  9. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/__main__.py +0 -0
  10. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/_rtf/__init__.py +0 -0
  11. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/_rtf/create_doc.py +0 -0
  12. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/_rtf/inject_rtf.py +0 -0
  13. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/_rtf/token.py +0 -0
  14. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/_rtf/tokenize_rtf.py +0 -0
  15. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/attachments/__init__.py +0 -0
  16. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/attachments/attachment.py +0 -0
  17. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/attachments/attachment_base.py +0 -0
  18. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/attachments/broken_att.py +0 -0
  19. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/attachments/custom_att.py +0 -0
  20. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/attachments/custom_att_handler/__init__.py +0 -0
  21. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/attachments/custom_att_handler/custom_handler.py +0 -0
  22. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/attachments/custom_att_handler/lnk_obj_att.py +0 -0
  23. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/attachments/custom_att_handler/outlook_image_dib.py +0 -0
  24. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/attachments/emb_msg_att.py +0 -0
  25. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/attachments/signed_att.py +0 -0
  26. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/attachments/unsupported_att.py +0 -0
  27. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/attachments/web_att.py +0 -0
  28. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/constants/__init__.py +0 -0
  29. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/constants/ps.py +0 -0
  30. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/constants/re.py +0 -0
  31. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/constants/st.py +0 -0
  32. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/data/logging-config/logging-nt.json +0 -0
  33. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/data/logging-config/logging-posix.json +0 -0
  34. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/encoding/__init__.py +0 -0
  35. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/encoding/_dt/__init__.py +0 -0
  36. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/encoding/_dt/_mac_ce.py +0 -0
  37. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/encoding/_dt/_mac_cyrillic.py +0 -0
  38. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/encoding/_dt/_mac_greek.py +0 -0
  39. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/encoding/_dt/_mac_iceland.py +0 -0
  40. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/encoding/_dt/_mac_turkish.py +0 -0
  41. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/encoding/_dt/_win874_dec.py +0 -0
  42. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/encoding/_dt/_win950_dec.py +0 -0
  43. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/encoding/utils.py +0 -0
  44. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/enums.py +0 -0
  45. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/exceptions.py +0 -0
  46. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/msg_classes/__init__.py +0 -0
  47. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/msg_classes/appointment.py +0 -0
  48. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/msg_classes/calendar.py +0 -0
  49. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/msg_classes/calendar_base.py +0 -0
  50. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/msg_classes/contact.py +0 -0
  51. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/msg_classes/journal.py +0 -0
  52. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/msg_classes/meeting_cancellation.py +0 -0
  53. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/msg_classes/meeting_exception.py +0 -0
  54. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/msg_classes/meeting_forward.py +0 -0
  55. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/msg_classes/meeting_related.py +0 -0
  56. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/msg_classes/meeting_request.py +0 -0
  57. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/msg_classes/meeting_response.py +0 -0
  58. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/msg_classes/message.py +0 -0
  59. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/msg_classes/message_base.py +0 -0
  60. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/msg_classes/message_signed.py +0 -0
  61. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/msg_classes/message_signed_base.py +0 -0
  62. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/msg_classes/msg.py +0 -0
  63. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/msg_classes/post.py +0 -0
  64. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/msg_classes/sticky_note.py +0 -0
  65. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/msg_classes/task.py +0 -0
  66. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/msg_classes/task_request.py +0 -0
  67. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/null_date.py +0 -0
  68. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/ole_writer.py +0 -0
  69. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/properties/__init__.py +0 -0
  70. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/properties/named.py +0 -0
  71. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/properties/prop.py +0 -0
  72. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/properties/properties_store.py +0 -0
  73. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/py.typed +0 -0
  74. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/recipient.py +0 -0
  75. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/structures/__init__.py +0 -0
  76. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/structures/_helpers.py +0 -0
  77. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/structures/business_card.py +0 -0
  78. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/structures/cfoas.py +0 -0
  79. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/structures/contact_link_entry.py +0 -0
  80. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/structures/dev_mode_a.py +0 -0
  81. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/structures/dv_target_device.py +0 -0
  82. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/structures/entry_id.py +0 -0
  83. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/structures/misc_id.py +0 -0
  84. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/structures/mon_stream.py +0 -0
  85. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/structures/odt.py +0 -0
  86. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/structures/ole_pres.py +0 -0
  87. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/structures/ole_stream_struct.py +0 -0
  88. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/structures/recurrence_pattern.py +0 -0
  89. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/structures/report_tag.py +0 -0
  90. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/structures/system_time.py +0 -0
  91. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/structures/time_zone_definition.py +0 -0
  92. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/structures/time_zone_struct.py +0 -0
  93. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/structures/toc_entry.py +0 -0
  94. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/structures/tz_rule.py +0 -0
  95. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg/utils.py +0 -0
  96. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg.egg-info/SOURCES.txt +0 -0
  97. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg.egg-info/dependency_links.txt +0 -0
  98. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg.egg-info/entry_points.txt +0 -0
  99. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg.egg-info/requires.txt +0 -0
  100. {extract_msg-0.48.5 → extract_msg-0.48.6}/extract_msg.egg-info/top_level.txt +0 -0
  101. {extract_msg-0.48.5 → extract_msg-0.48.6}/requirements.txt +0 -0
  102. {extract_msg-0.48.5 → extract_msg-0.48.6}/setup.cfg +0 -0
  103. {extract_msg-0.48.5 → extract_msg-0.48.6}/setup.py +0 -0
@@ -1,3 +1,6 @@
1
+ **v0.48.6**
2
+ * [[TeamMsgExtractor #417](https://github.com/TeamMsgExtractor/msg-extractor/issues/417)] Fixed issues with `openMsg` where some corrupted MSG files could end up throwing an uncaught exception and leaving the file handle open.
3
+
1
4
  **v0.48.5**
2
5
  * [[TeamMsgExtractor #414](https://github.com/TeamMsgExtractor/msg-extractor/issues/414)] Fixed typo in `message_signed_base.py`.
3
6
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: extract_msg
3
- Version: 0.48.5
3
+ Version: 0.48.6
4
4
  Summary: Extracts emails and attachments saved in Microsoft Outlook's .msg files
5
5
  Home-page: https://github.com/TeamMsgExtractor/msg-extractor
6
6
  Download-URL: https://github.com/TeamMsgExtractor/msg-extractor/archives/master
@@ -278,8 +278,8 @@ your access to the newest major version of extract-msg.
278
278
  .. |License: GPL v3| image:: https://img.shields.io/badge/License-GPLv3-blue.svg
279
279
  :target: LICENSE.txt
280
280
 
281
- .. |PyPI3| image:: https://img.shields.io/badge/pypi-0.48.5-blue.svg
282
- :target: https://pypi.org/project/extract-msg/0.48.5/
281
+ .. |PyPI3| image:: https://img.shields.io/badge/pypi-0.48.6-blue.svg
282
+ :target: https://pypi.org/project/extract-msg/0.48.6/
283
283
 
284
284
  .. |PyPI2| image:: https://img.shields.io/badge/python-3.8+-brightgreen.svg
285
285
  :target: https://www.python.org/downloads/release/python-3810/
@@ -260,8 +260,8 @@ your access to the newest major version of extract-msg.
260
260
  .. |License: GPL v3| image:: https://img.shields.io/badge/License-GPLv3-blue.svg
261
261
  :target: LICENSE.txt
262
262
 
263
- .. |PyPI3| image:: https://img.shields.io/badge/pypi-0.48.5-blue.svg
264
- :target: https://pypi.org/project/extract-msg/0.48.5/
263
+ .. |PyPI3| image:: https://img.shields.io/badge/pypi-0.48.6-blue.svg
264
+ :target: https://pypi.org/project/extract-msg/0.48.6/
265
265
 
266
266
  .. |PyPI2| image:: https://img.shields.io/badge/python-3.8+-brightgreen.svg
267
267
  :target: https://www.python.org/downloads/release/python-3810/
@@ -27,8 +27,8 @@ https://github.com/TeamMsgExtractor/msg-extractor
27
27
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
28
28
 
29
29
  __author__ = 'Destiny Peterson & Matthew Walker'
30
- __date__ = '2024-04-03'
31
- __version__ = '0.48.5'
30
+ __date__ = '2024-07-06'
31
+ __version__ = '0.48.6'
32
32
 
33
33
  __all__ = [
34
34
  # Modules:
@@ -89,6 +89,14 @@ def openMsg(path, **kwargs) -> MSGFile:
89
89
 
90
90
  msg = MSGFile(path, **kwargs)
91
91
 
92
+ # Protect against corrupt MSG files.
93
+ try:
94
+ ct = msg.classType
95
+ except:
96
+ # All exceptions here mean we NEED to close the handle.
97
+ msg.close()
98
+ raise
99
+
92
100
  # Restore the option in the kwargs so we don't have to worry about it.
93
101
  kwargs['delayAttachments'] = delayAttachments
94
102
 
@@ -99,14 +107,14 @@ def openMsg(path, **kwargs) -> MSGFile:
99
107
  # other file types (like doc, ppt, etc.) might open but not return a class
100
108
  # type. If the stream is not found, classType returns None, which has no
101
109
  # lower function. So let's make sure we got a good return first.
102
- if not msg.classType:
110
+ if not cy:
103
111
  if kwargs.get('strict', True):
104
112
  raise InvalidFileFormatError('File was confirmed to be an olefile, but was not an MSG file.')
105
113
  else:
106
114
  # If strict mode is off, we'll just return an MSGFile anyways.
107
115
  logger.critical('Received file that was an olefile but was not an MSG file. Returning MSGFile anyways because strict mode is off.')
108
116
  return msg
109
- classType = msg.classType.lower()
117
+ classType = ct.lower()
110
118
  # Put the message class first as it is most common.
111
119
  if classType.startswith('ipm.note') or classType.startswith('report'):
112
120
  msg.close()
@@ -159,7 +167,6 @@ def openMsg(path, **kwargs) -> MSGFile:
159
167
  return msg
160
168
  elif kwargs.get('strict', True):
161
169
  # Because we are closing it, we need to store it in a variable first.
162
- ct = msg.classType
163
170
  msg.close()
164
171
  # Now we need to figure out exactly what we are going to be reporting to
165
172
  # the user.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: extract-msg
3
- Version: 0.48.5
3
+ Version: 0.48.6
4
4
  Summary: Extracts emails and attachments saved in Microsoft Outlook's .msg files
5
5
  Home-page: https://github.com/TeamMsgExtractor/msg-extractor
6
6
  Download-URL: https://github.com/TeamMsgExtractor/msg-extractor/archives/master
@@ -278,8 +278,8 @@ your access to the newest major version of extract-msg.
278
278
  .. |License: GPL v3| image:: https://img.shields.io/badge/License-GPLv3-blue.svg
279
279
  :target: LICENSE.txt
280
280
 
281
- .. |PyPI3| image:: https://img.shields.io/badge/pypi-0.48.5-blue.svg
282
- :target: https://pypi.org/project/extract-msg/0.48.5/
281
+ .. |PyPI3| image:: https://img.shields.io/badge/pypi-0.48.6-blue.svg
282
+ :target: https://pypi.org/project/extract-msg/0.48.6/
283
283
 
284
284
  .. |PyPI2| image:: https://img.shields.io/badge/python-3.8+-brightgreen.svg
285
285
  :target: https://www.python.org/downloads/release/python-3810/
File without changes
File without changes
File without changes
File without changes