{ "info": { "author": "Andrew DeOrio", "author_email": "awdeorio@umich.edu", "bugtrack_url": null, "classifiers": [], "description": "Mailmerge\n=========\n\n[![PyPI](https://img.shields.io/pypi/v/mailmerge.svg)](https://pypi.org/project/mailmerge/)\n[![Build Status](https://travis-ci.com/awdeorio/mailmerge.svg?branch=develop)](https://travis-ci.com/awdeorio/mailmerge)\n\nA simple, command line mail merge tool.\n\n`mailmerge` uses plain text files and the [jinja2 template engine](http://jinja.pocoo.org/docs/latest/templates/).\n\n**Table of Contents**\n- [Quickstart](#quickstart)\n- [Install](#install)\n- [Example](#example)\n- [Advanced template example](#advanced-template-example)\n- [HTML formatting](#html-formatting)\n- [Markdown formatting](#markdown-formatting)\n- [Attachments](#attachments)\n- [Contributing](#contributing)\n- [Acknowledgements](#acknowledgements)\n\n## Quickstart\n```console\n$ pip install mailmerge\n$ mailmerge\n```\n\n`mailmerge` will guide you through the process. Don't worry, it won't send real emails by default.\n\n## Install\nSystem-wide install\n```console\n$ pip install mailmerge\n```\n\nIf you get a `Permission denied` error, use administrator privileges. Alternatively, see the development install instructions.\n```console\n$ sudo pip install mailmerge\n```\n\n## Example\nThis example will walk you through the steps for creating a template email, database and STMP server configuration. Then, it will show how to test it before sending real emails.\n\n### Create a sample template email, database, and config\n```console\n$ mailmerge --sample\nCreating sample template email mailmerge_template.txt\nCreating sample database mailmerge_database.csv\nCreating sample config file mailmerge_server.conf\nEdit these files, and then run mailmerge again\n```\n\n### Edit the SMTP server config `mailmerge_server.conf`\nThe defaults are set up for gmail. Be sure to change your username. If you use 2-factor authentication, you may need to set up a one-time password for use by an app. `mailmerge` will give an error with a URL to the right GMail support page. Other configuration examples are in the comments of `mailmerge_server.conf`.\n```\n[smtp_server]\nhost = smtp.gmail.com\nport = 465\nsecurity = SSL/TLS\nusername = YOUR_USERNAME_HERE\n```\n\n### Edit the template email message `mailmerge_template.txt`\nThe `TO`, `SUBJECT`, and `FROM` fields are required. The remainder is the body of the message. Use `{{ }}` to indicate customized parameters that will be read from the database. For example, `{{email}}` will be filled in from the `email` column of `mailmerge_database.csv`.\n```\nTO: {{email}}\nSUBJECT: Testing mailmerge\nFROM: My Self \n\nHi, {{name}},\n\nYour number is {{number}}.\n```\n\n### Edit the database `mailmerge_database.csv`\nNotice that the first line is a header that matches the parameters in the template example, for example, `{{email}}`.\n\n**Pro-tip**: Add yourself as the first recipient. This is helpful for testing.\n```\nemail,name,number\nmyself@mydomain.com,\"Myself\",17\nbob@bobdomain.com,\"Bob\",42\n```\n\n### Dry run\nFirst, dry run one email message. This will fill in the template fields of the first email message and print it to the terminal.\n```console\n$ mailmerge --dry-run --limit 1\n>>> message 0\nTO: myself@mydomain.com\nSUBJECT: Testing mailmerge\nFROM: My Self \n\nHi, Myself,\n\nYour number is 17.\n\n>>> sent message 0 DRY RUN\n>>> Limit was 1 messages. To remove the limit, use the --no-limit option.\n>>> This was a dry run. To send messages, use the --no-dry-run option.\n```\n\nIf this looks correct, try a second dry run, this time with all recipients using the `--no-limit` option.\n```console\n$ mailmerge --dry-run --no-limit\n>>> message 0\nTO: myself@mydomain.com\nSUBJECT: Testing mailmerge\nFROM: My Self \n\nHi, Myself,\n\nYour number is 17.\n\n>>> sent message 0 DRY RUN\n>>> message 1\nTO: bob@bobdomain.com\nSUBJECT: Testing mailmerge\nFROM: My Self \n\nHi, Bob,\n\nYour number is 42.\n\n>>> sent message 1 DRY RUN\n>>> This was a dry run. To send messages, use the --no-dry-run option.\n```\n\n### Send first email\nWe're being extra careful in this example to avoid sending spam, so next we'll send *only one real email*. Recall that you added yourself as the first email recipient.\n```console\n$ mailmerge --no-dry-run --limit 1\n>>> message 0\nTO: myself@mydomain.com\nSUBJECT: Testing mailmerge\nFROM: My Self \n\nHi, Myself,\n\nYour number is 17.\n\n>>> sent message 0\n>>> Limit was 1 messages. To remove the limit, use the --no-limit option.\n```\n\nNow, check your email and make sure the message went through. If everything looks OK, then it's time to send all the messages.\n\n### Send all emails\n```console\n$ mailmerge --no-dry-run --no-limit\n>>> message 0\nTO: myself@mydomain.com\nSUBJECT: Testing mailmerge\nFROM: My Self \n\nHi, Myself,\n\nYour number is 17.\n\n>>> sent message 0\n>>> message 1\nTO: bob@bobdomain.com\nSUBJECT: Testing mailmerge\nFROM: My Self \n\nHi, Bob,\n\nYour number is 42.\n\n>>> sent message 1\n```\n\n## Advanced template example\nThis example will send progress reports to students. The template uses more of the advanced features of the [jinja2 template engine documentation](http://jinja.pocoo.org/docs/latest/templates/) to customize messages to students.\n\n#### Template `progress_report_template.txt`\n```\nTO: {{email}}\nSUBJECT: EECS 280 Mid-semester Progress Report\nFROM: My Self \n\nDear {{name}},\n\nThis email contains our record of your grades EECS 280, as well as an estimated letter grade.\n\nProject 1: {{p1}}\nProject 2: {{p2}}\nProject 3: {{p3}}\nMidterm exam: {{midterm}}\n\nAt this time, your estimated letter grade is {{grade}}.\n\n{% if grade == \"C-\" -%}\nI am concerned that if the current trend in your scores continues, you will be on the border of the pass/fail line.\n\nI have a few suggestions for the rest of the semester. First, it is absolutely imperative that you turn in all assignments. Attend lecture and discussion sections. Get started early on the programming assignments and ask for help. Finally, plan a strategy to help you prepare well for the final exam.\n\nThe good news is that we have completed about half of the course grade, so there is an opportunity to fix this problem. The other professors and I are happy to discuss strategies together during office hours.\n{% elif grade in [\"D+\", \"D\", \"D-\", \"E\", \"F\"] -%}\nI am writing because I am concerned about your grade in EECS 280. My concern is that if the current trend in your scores continues, you will not pass the course.\n\nIf you plan to continue in the course, I urge you to see your instructor in office hours to discuss a plan for the remainder of the semester. Otherwise, if you plan to drop the course, please see your academic advisor.\n{% endif -%}\n```\n\n#### Database `progress_report_database.csv`\nAgain, we'll use the best practice of making yourself the first recipient, which is helpful for testing.\n```\nemail,name,p1,p2,p3,midterm,grade\nmyself@mydomain.com,\"My Self\",100,100,100,100,A+\nborderline@fixme.com,\"Borderline Name\",50,50,50,50,C-\nfailing@fixme.com,\"Failing Name\",0,0,0,0,F\n```\n\n### Dry run one message\nTest one message without actually sending any email.\n```console\n$ mailmerge --template progress_report_template.txt --database progress_report_database.csv \n>>> message 0\nTO: myself@mydomain.com\nSUBJECT: EECS 280 Mid-semester Progress Report\nFROM: My Self \n\nDear My Self,\n\nThis email contains our record of your grades EECS 280, as well as an estimated letter grade.\n\nProject 1: 100\nProject 2: 100\nProject 3: 100\nMidterm exam: 100\n\nAt this time, your estimated letter grade is A+.\n\n\n>>> sent message 0 DRY RUN\n>>> Limit was 1 messages. To remove the limit, use the --no-limit option.\n>>> This was a dry run. To send messages, use the --no-dry-run option.\n```\n\n## HTML formatting\nMailmerge supports HTML formatting.\n\n### HTML only\nThis example will use HTML to format an email. Add `Content-Type: text/html` just under the email headers, then begin your message with ``.\n\n#### Template `mailmerge_template.txt`\n```\nTO: {{email}}\nSUBJECT: Testing mailmerge\nFROM: My Self \nContent-Type: text/html\n\n\n\n\n

Hi, {{name}},

\n\n

Your number is {{number}}.

\n\n

Sent by mailmerge

\n\n\n\n```\n\n\n### HTML and plain text\nThis example shows how to provide both HTML and plain text versions in the same message. A user's mail reader can select either one.\n\n#### Template `mailmerge_template.txt`\n```\nTO: {{email}}\nSUBJECT: Testing mailmerge\nFROM: My Self \nMIME-Version: 1.0\nContent-Type: multipart/alternative; boundary=\"outer-boundary\"\n\nThis is a MIME-encoded message. If you are seeing this, your mail\nreader is old.\n\n--outer-boundary\nContent-Type: text/plain; charset=us-ascii\n\nHi, {{name}},\n\nYour number is {{number}}.\n\nSent by mailmerge https://github.com/awdeorio/mailmerge\n\n--outer-boundary\nMIME-Version: 1.0\nContent-Type: multipart/related;\n type=\"text/html\"; start=\"\"; boundary=\"inner-boundary\"\n\n--inner-boundary\nContent-Type: text/html; charset=us-ascii\nContent-Disposition: inline\nContent-ID: \n\n\n\n\n

Hi, {{name}},

\n\n

Your number is {{number}}.

\n\n

Sent by mailmerge

\n\n\n\n```\n\n\n## Markdown formatting\nMailmerge supports [Markdown](https://daringfireball.net/projects/markdown/syntax) formatting by including the custom custom header `Content-Type: text/markdown` in the message. Mailmerge will render the markdown to HTML, then include both HTML and plain text versions in a multiplart message. A recipient's mail reader can then select either format.\n\n### Template `mailmerge_template.txt`\n```\nTO: {{email}}\nSUBJECT: Testing mailmerge\nFROM: My Self \nCONTENT-TYPE: text/markdown\n\nYou can add:\n\n- Emphasis, aka italics, with *asterisks*.\n- Strong emphasis, aka bold, with **asterisks**.\n- Combined emphasis with **asterisks and _underscores_**.\n- Unordered lists like this one.\n- Ordered lists with numbers:\n 1. Item 1\n 2. Item 2\n- Preformatted text with `backticks`.\n- How about some [hyperlinks](http://bit.ly/eecs485-wn19-p6)?\n\n# This is a heading.\n## And another heading.\n\nHere's an image not attached with the email:\n![python logo not attached](http://pluspng.com/img-png/python-logo-png-open-2000.png)\n```\n\n## Attachments\nThis example shows how to add attachments with a special `ATTACHMENT` header.\n\n#### Template `mailmerge_template.txt`\n```\nTO: {{email}}\nSUBJECT: Testing mailmerge\nFROM: My Self \nATTACHMENT: file1.docx\nATTACHMENT: ../file2.pdf\nATTACHMENT: /z/shared/{{name}}_submission.txt\n\nHi, {{name}},\n\nThis email contains three attachments.\nPro-tip: Use Jinja to customize the attachments based on your database!\n```\n\nDry run to verify attachment files exist. If an attachment filename includes a template, it's a good idea to dry run with the `--no-limit` flag.\n```console\n$ mailmerge\n>>> message 0\nTO: myself@mydomain.com\nSUBJECT: Testing mailmerge\nFROM: My Self \n\nHi, Myself,\n\nThis email contains three attachments.\nPro-tip: Use Jinja to customize the attachments based on your database!\n\n>>> encoding ascii\n>>> attached /Users/awdeorio/Documents/test/file1.docx\n>>> attached /Users/awdeorio/Documents/file2.pdf\n>>> attached /z/shared/Myself_submission.txt\n>>> sent message 0 DRY RUN\n>>> This was a dry run. To send messages, use the --no-dry-run option.\n```\n\n## Contributing\nContributions from the community are welcome! Check out the [guide for contributing](CONTRIBUTING.md).\n\n\n## Acknowledgements\nMailmerge is written by Andrew DeOrio , [http://andrewdeorio.com](http://andrewdeorio.com).\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/awdeorio/mailmerge/", "keywords": "mail merge", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "mailmerge", "package_url": "https://pypi.org/project/mailmerge/", "platform": "", "project_url": "https://pypi.org/project/mailmerge/", "project_urls": { "Homepage": "https://github.com/awdeorio/mailmerge/" }, "release_url": "https://pypi.org/project/mailmerge/1.9/", "requires_dist": null, "requires_python": "", "summary": "A simple, command line mail merge tool", "version": "1.9" }, "last_serial": 5172791, "releases": { "0.12": [ { "comment_text": "", "digests": { "md5": "bce53a04c13db2304c7a4bed21105e02", "sha256": "8e047959392388ab2afeb3c61934ffd9bbd8deaa3c64a272cb333b0ddce5a469" }, "downloads": -1, "filename": "mailmerge-0.12.tar.gz", "has_sig": false, "md5_digest": "bce53a04c13db2304c7a4bed21105e02", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2708, "upload_time": "2016-02-25T00:14:06", "url": "https://files.pythonhosted.org/packages/72/17/333ed134e37aafd7ce5afe9cde74a1b0bc2cb4a97cd4aa779b1bd2201205/mailmerge-0.12.tar.gz" } ], "0.15": [ { "comment_text": "", "digests": { "md5": "b3c9ac7e58d92afde54400b9c37760c3", "sha256": "24dae9afb5048dc5c0cd93048fb96f50c64d08f3a022d8ccdbf43721e7393b53" }, "downloads": -1, "filename": "mailmerge-0.15.tar.gz", "has_sig": false, "md5_digest": "b3c9ac7e58d92afde54400b9c37760c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3680, "upload_time": "2016-10-26T01:25:51", "url": "https://files.pythonhosted.org/packages/ea/68/5bcf481f072664aaebca36d461b94fd909b4a354b02e3105fe282fe481e1/mailmerge-0.15.tar.gz" } ], "1.4": [ { "comment_text": "", "digests": { "md5": "dfa72da8695ab14ab2a71f6c10bbc6e3", "sha256": "77d2be78f1a2e603cef08987e916756b6615b12e88354d0d5e97102c7989d210" }, "downloads": -1, "filename": "mailmerge-1.4.tar.gz", "has_sig": false, "md5_digest": "dfa72da8695ab14ab2a71f6c10bbc6e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3195, "upload_time": "2016-06-17T12:50:08", "url": "https://files.pythonhosted.org/packages/06/32/e25a2c3b3deaa0f8484b6da7813767bc67d5f7aab70faf543ec75bcff14c/mailmerge-1.4.tar.gz" } ], "1.5": [ { "comment_text": "", "digests": { "md5": "37c91096b1e88afb70d90e51ebb2eae0", "sha256": "3e5da0144dd8438e2b6a06b4465faaf009a1660ae00c69c2369e7b89b829314e" }, "downloads": -1, "filename": "mailmerge-1.5.tar.gz", "has_sig": false, "md5_digest": "37c91096b1e88afb70d90e51ebb2eae0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3683, "upload_time": "2016-10-26T01:38:11", "url": "https://files.pythonhosted.org/packages/57/c2/61261eb8c42e89af782ed660c0ed878bd13c9644a1479d48ce6be7ff2001/mailmerge-1.5.tar.gz" } ], "1.6.1": [ { "comment_text": "", "digests": { "md5": "a5d6e1301952d427ac7ca2197dc5513b", "sha256": "5a13f4bd4bf0e8ce2f8a5093ff7f31e20751e4182782cfd4083296ef012f597a" }, "downloads": -1, "filename": "mailmerge-1.6.1.tar.gz", "has_sig": false, "md5_digest": "a5d6e1301952d427ac7ca2197dc5513b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3690, "upload_time": "2016-10-29T19:23:27", "url": "https://files.pythonhosted.org/packages/dd/fe/a24a6970385c3bf219e78356ccd1cbc53dd87dc2a0d0bfa4077c24abad9c/mailmerge-1.6.1.tar.gz" } ], "1.6.2": [ { "comment_text": "", "digests": { "md5": "8be23a881074514ae87d791c676879b3", "sha256": "09d6588f97dfe4543995323481f6ddf96bf21c04e98be03360bdab13962e9e80" }, "downloads": -1, "filename": "mailmerge-1.6.2.tar.gz", "has_sig": false, "md5_digest": "8be23a881074514ae87d791c676879b3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3768, "upload_time": "2016-11-07T17:00:07", "url": "https://files.pythonhosted.org/packages/60/3d/59c39df27fcfafe96ef72a163332f03a9b65799a5ff07038ea5418acb76e/mailmerge-1.6.2.tar.gz" } ], "1.7.0": [ { "comment_text": "", "digests": { "md5": "b6c941339d1c44b7851f0ed7c5f3febf", "sha256": "456c934cce94317be0fad52b3851080155863ce809eff73729b1eca4515db8fd" }, "downloads": -1, "filename": "mailmerge-1.7.0.tar.gz", "has_sig": false, "md5_digest": "b6c941339d1c44b7851f0ed7c5f3febf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3947, "upload_time": "2016-11-08T18:37:12", "url": "https://files.pythonhosted.org/packages/e8/98/fbc25e12d3e1d9b50bb2e44dc67c86b17038148985871390e05f0e5f8fc6/mailmerge-1.7.0.tar.gz" } ], "1.7.2": [ { "comment_text": "", "digests": { "md5": "e19bc9a48aed6f5289d92932eec5c2a1", "sha256": "14db9672aad2f65e980b6cd40e1414544f856cd73c7c17902aecf92b1027529f" }, "downloads": -1, "filename": "mailmerge-1.7.2.tar.gz", "has_sig": false, "md5_digest": "e19bc9a48aed6f5289d92932eec5c2a1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3917, "upload_time": "2017-04-18T19:00:02", "url": "https://files.pythonhosted.org/packages/2a/b2/7a86eb8991b3a1822c4332c6d2312d5428c7e9aef0401796a6a3e489249f/mailmerge-1.7.2.tar.gz" } ], "1.7.3": [ { "comment_text": "", "digests": { "md5": "0472b549c81187cb3e403834edd2f692", "sha256": "ce3fd1f203e9ab66676e0b2b20a128c0f5ec4bde8444ce3ab2a87a6f65ad3752" }, "downloads": -1, "filename": "mailmerge-1.7.3.tar.gz", "has_sig": false, "md5_digest": "0472b549c81187cb3e403834edd2f692", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11097, "upload_time": "2017-07-16T14:19:38", "url": "https://files.pythonhosted.org/packages/64/6a/7d3e518962878800a7165698fa6d23319ac38c3aed94d625bc12e92bca66/mailmerge-1.7.3.tar.gz" } ], "1.7.4": [ { "comment_text": "", "digests": { "md5": "8e55ea6c398634608e2cc77a1ce0f60a", "sha256": "1c8b7816faf266bc9f7ed7e59cccca5b83dd798456ce0bde5f7406906f384583" }, "downloads": -1, "filename": "mailmerge-1.7.4.tar.gz", "has_sig": false, "md5_digest": "8e55ea6c398634608e2cc77a1ce0f60a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11104, "upload_time": "2017-07-17T13:34:07", "url": "https://files.pythonhosted.org/packages/f8/ad/371f387e8458d2edcc90f73d5eb4ef91e6fb15baef4cbc88f44ea61b9716/mailmerge-1.7.4.tar.gz" } ], "1.7.5": [ { "comment_text": "", "digests": { "md5": "140903eb8fb65a84d03e435d5db9f40d", "sha256": "ffd16f02954f135cceb3562b73b9a71508772d3a78091511bd6963ff37bd52a4" }, "downloads": -1, "filename": "mailmerge-1.7.5.tar.gz", "has_sig": false, "md5_digest": "140903eb8fb65a84d03e435d5db9f40d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12821, "upload_time": "2017-07-19T23:15:05", "url": "https://files.pythonhosted.org/packages/6f/9a/68a3af0a5687526cd5ae0f41ead901254fc860d41040f0708a9a35e9c651/mailmerge-1.7.5.tar.gz" } ], "1.7.6": [ { "comment_text": "", "digests": { "md5": "ba8446f52d79a6c76d0c602d0b43f22a", "sha256": "d630be4274beb4995bddbca883baa51354148affe2473612ca78351e1bb9c8de" }, "downloads": -1, "filename": "mailmerge-1.7.6.tar.gz", "has_sig": false, "md5_digest": "ba8446f52d79a6c76d0c602d0b43f22a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11755, "upload_time": "2017-07-25T11:37:55", "url": "https://files.pythonhosted.org/packages/1a/a9/dd99ae408f1729780c024eae52aaf1d907ac4edc2793574a181a919ceebf/mailmerge-1.7.6.tar.gz" } ], "1.7.7": [ { "comment_text": "", "digests": { "md5": "d48eec6da9af6ab4d91e81682ef0c808", "sha256": "ff82ff62ca6297695961381bd12f885331be579b1534ac69c2183a303304cb9f" }, "downloads": -1, "filename": "mailmerge-1.7.7.tar.gz", "has_sig": false, "md5_digest": "d48eec6da9af6ab4d91e81682ef0c808", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14358, "upload_time": "2017-10-12T20:16:33", "url": "https://files.pythonhosted.org/packages/d0/8f/7727819ae559c9cb52eeee18e550509e823bd0d62ad996f93cf14d0edbfd/mailmerge-1.7.7.tar.gz" } ], "1.7.8": [ { "comment_text": "", "digests": { "md5": "9ced9bdea8e6981ca13c9143403fe21b", "sha256": "04a726157d32b4f7d678e474e93aa08462f055c41fe85b15e3d7630f3c89b5f2" }, "downloads": -1, "filename": "mailmerge-1.7.8.tar.gz", "has_sig": false, "md5_digest": "9ced9bdea8e6981ca13c9143403fe21b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16177, "upload_time": "2017-11-01T16:42:21", "url": "https://files.pythonhosted.org/packages/24/14/0c8abf77c6b40cfe1b63666ff7138eec6dc3a17c1da0bb23de14220401d1/mailmerge-1.7.8.tar.gz" } ], "1.7.9": [ { "comment_text": "", "digests": { "md5": "210ec73295f7a4b2d1dd2aef1e8fa153", "sha256": "0724901a5ae7d02cd0b22e3c2434165b75aaa7b80875de2a48c3fbb555fb9481" }, "downloads": -1, "filename": "mailmerge-1.7.9.tar.gz", "has_sig": false, "md5_digest": "210ec73295f7a4b2d1dd2aef1e8fa153", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16818, "upload_time": "2018-09-21T18:39:58", "url": "https://files.pythonhosted.org/packages/eb/87/08828ac154993261b0b16171959d8df067d60c2cd600de5284375f59dd6a/mailmerge-1.7.9.tar.gz" } ], "1.8": [ { "comment_text": "", "digests": { "md5": "4b0d74fb891e63528d510072845543d4", "sha256": "fe8943e8d3d11fdb4971ff8bc7437154ecb2c60a05c923a4ad99aa415605aa39" }, "downloads": -1, "filename": "mailmerge-1.8.tar.gz", "has_sig": false, "md5_digest": "4b0d74fb891e63528d510072845543d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21298, "upload_time": "2019-01-23T14:01:37", "url": "https://files.pythonhosted.org/packages/57/49/b4036910fe4a00775588a32b3b1361bd711ca10edda33bfe4fc6b6aa6c9d/mailmerge-1.8.tar.gz" } ], "1.9": [ { "comment_text": "", "digests": { "md5": "e28b433172e48f54b8ab2595463fdd0a", "sha256": "8e92f66358903e7fa4541185f0c7bcf5e512416a296c77942e5d2a239c486993" }, "downloads": -1, "filename": "mailmerge-1.9.tar.gz", "has_sig": false, "md5_digest": "e28b433172e48f54b8ab2595463fdd0a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23501, "upload_time": "2019-04-22T12:38:48", "url": "https://files.pythonhosted.org/packages/17/76/3ff633e13b95e9e34264b25c826cfa30260966af18e9b53cedb1d67754c9/mailmerge-1.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e28b433172e48f54b8ab2595463fdd0a", "sha256": "8e92f66358903e7fa4541185f0c7bcf5e512416a296c77942e5d2a239c486993" }, "downloads": -1, "filename": "mailmerge-1.9.tar.gz", "has_sig": false, "md5_digest": "e28b433172e48f54b8ab2595463fdd0a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23501, "upload_time": "2019-04-22T12:38:48", "url": "https://files.pythonhosted.org/packages/17/76/3ff633e13b95e9e34264b25c826cfa30260966af18e9b53cedb1d67754c9/mailmerge-1.9.tar.gz" } ] }