All notable changes to this project will be documented in this file.
- PR #593: Adds support for dynamic template data. Big thanks to Slam for the PR! Also, big thanks to Wojciech Bartosiak for PR #597!
- PR #588: Updates the Readme to include environment variable setup in windows. Big thanks to Bhargav Chandaka for the PR!
- PR #599: Updates the Readme to include additional API Key instruction. Big thanks to Anshul Singhal for the PR!
- PR #600: Add CodeTriage Badge. Big thanks to Anshul Singhal for the PR!
- PR #601: Readability improvements to CONTRIBUTING.md. Big thanks to Anshul Singhal for the PR!
- PR #604: Readability improvements to CONTRIBUTING.md. Big thanks to agnesjang98 for the PR!
- PR #595: Change type of category in Mail.add_category from string to Category. Big thanks to Phawin Khongkhasawan for the PR!
- PR #596: Fix Docker build. Big thanks to Phawin Khongkhasawan for the PR!
- PR #598: Fix python3 print example in TROUBLESHOOTING.md. Big thanks to Ryan Jarvis for the PR!
- PR #603: Update TROUBLESHOOTING.md to link to correct use cases page. Big thanks to James Purpura for the PR!
- PR #585: Fix typo in
mail_example.py
. Big thanks to Anurag Anand for the PR! - PR #583: Fix
Personalization.substitutions
setter. Trying to set substitutions directly rather than with add_substitution was causing an infinite regress. Big thanks to Richard Nias for the PR!
- PR #384: Adds how to set up domain whitelabel and how to view email statistics. Big thanks to Aditya Tandon for the PR!
- PR #427: Increase config.py coverage. Big thanks to Jeferson Daniel for the PR!
- PR #423: Update config.py with better file handling. Big thanks to Ajitesh Rai for the PR!
- PR #449: Add a .env_sample file and Update README.md. Big thanks to trangttt for the PR!
- PR #463: Add code climate.
- PR #455: Use with context manager and a few PEP8 changes. Big thanks to Tim for the PR!
- PR #470: Modularize lengthy method. Big thanks to Suprith Kumar Suvarneshwar for the PR!
- PR #425: Add tests for sendgrid.py apikey and api_key setters. Big thanks to Krista LaFentres for the PR!
- PR #446: Added PULL_REQUEST_TEMPLATE. Big thanks to Aleksandr Sobolev for the PR!
- PR #472: Moved mail helper classes into separate files. Big thanks to Milos Pejanovic for the PR!
- PR #481: Documented the new error handling functionality from python-http-client. Big thanks to Manjiri Tapaswi for the PR!
- PR #418: Add test for apps.py. Big thanks to Sinan Comert for the PR!
- PR #438: Update docstrings/pydoc/help. Big thanks to Gabriel Krell for the PR!
- PR #413: Error-checking in Mail helper/ASM. Big thanks to Gabriel Krell for the PR!
- PR #518: Announcement about Data Platform Engineer posting. Big thanks to Marghodk for the PR!
- PR #479: Add Project tests. Big thanks to Peter Hampton for the PR!
- PR #480: Test to check year in LICENSE.txt. Big thanks to Navin Pai for the PR!
- PR #476: Add tests for Send.py. Big thanks to Artiem K. for the PR!
- PR #366: Add AWS app tutorial to USE_CASES.md. Big thanks to Mike Vanbuskirk for the PR!
- PR #365: Write tutorial to deploy simple Django app on Heroku. Big thanks to Kan Ouivirach for the PR!
- PR #526: Include code reviews section. Big thanks to Jared Scott for the PR!
- PR #414: Provide utf-8 as encoding explicitly when opening text files. Big thanks to Ruslan Shestopalyuk for the PR!
- PR #537: Add unit testing support to .codeclimate.yml. Big thanks to Prashu Chaudhary for the PR!
- PR #554: Ensure params are applied independently. Big thanks to Nino Milenovic for the PR!
- PR #557: Client cleanup. Big thanks to Slam for the PR!
- PR #569: Make Mail helper parameters truly optional. Big thanks to Ian Beck for the PR!
- PR #415: Typos. Big thanks to Mohd Huzaifa Faruqui for the PR!
- PR #421: Typos. Big thanks to Abhishek Bhatt for the PR!
- PR #432: Typos. Big thanks to Gaurav Arora for the PR!
- PR #431: Typos. Big thanks to Gaurav Arora for the PR!
- PR #430: Attempt to sync before executing the shell command. Big thanks to Aditya Narayan for the PR!
- PR #429: Typos. Big thanks to daluntw for the PR!
- PR #492: Updated date-range in the LICENSE file. Big thanks to Dhruv Srivastava for the PR!
- PR #482: Typos. Big thanks to Karan Samani for the PR!
- PR #504: Fix .codeclimate.yml. Big thanks to Matt Bernier for the PR!
- PR #505: Remove unnecessary GitHub PR templates. Big thanks to Alex for the PR!
- PR #494: Remove unused import in register.py. Big thanks to Alexis Rivera De La Torre for the PR!
- PR #469: Removed the trailing white spaces. Big thanks to Siddaram Halli for the PR!
- PR #484: Python style fixes. Big thanks to Gabriel Krell for the PR!
- PR #508: Typos. Big thanks to Saksham Gupta for the PR!
- PR #353: Typos. Big thanks to Yothin M for the PR!
- PR #564: Typos. Big thanks to Chao for the PR!
- PR #424: Updating version 2.7.8 to 2.7.11 to match the version in pyenv install instruction. Big thanks to Krista LaFentres for the PR!
- PR #454: Requests to send mail with both plain text and HTML content fail if the HTML content is specified first. Big thanks to Ryan D'souza for the PR!
- PR #466: Fixed PEP8 issues. Big thanks to Piotr Szwarc for the PR!
- PR #522: Typos. Big thanks to Abhishek J for the PR!
- PR #514: Fix method_complexity issue in sendgrid/helpers/mail/ganalytics.py. Big thanks to Chetan Kumar for the PR!
- PR #515: Typos. Big thanks to Mohd Ali Rizwi for the PR!
- PR #519: Typos. Big thanks to Aashish Gaba for the PR!
- PR #532: Typos. Big thanks to ~ for the PR!
- PR #533: Fix shadowed builtins,
id
->id_
. Big thanks to ~ for the PR! - PR #581: Typos. Big thanks to Silvia Botros for the PR!
- PR #513: Typos. Big thanks to thepriefy for the PR!
- PR #538: Fix bug in get_mock_personalization_dict(). Big thanks to PierreMonico for the PR!
- PR #543: Typos. Big thanks to Matthieu Bonnefoy for the PR!
- Pull #348: Allows users to submit rfc822 formatted email addresses
- Big thanks to Matt Bernier for the pull request!
- Pull #364: Install prism with non superuser account
- Big thanks to meahow for the pull request!
- Pull #335: Permit unicode string values with Substitution helper
- Big thanks to Mehron Kugler for the pull request!
- Pull #338: Allow the
__str__
method for theMail
object return anString
instead of aNoneType
- Solves #292: The
__str__
method of theMail
class, doesn't actually return anything - Big thanks to belfazt for the pull request!
- Pull #337, fixes issue #366
- On install, some experienced:
ValueError: ("Expected ',' or end-of-list in", 'python-http-client ==3.0.*', 'at', '*')
- The breaking change actually happened in version 4.2.1, where I mistakenly applied a patch version bump. See issues #328 and #321 for details.
- This version (5.0.0) replaces error handling via HTTPError from urllib in favor of custom error handling via the HTTPError class as was the case in version 4.2.0.
- Issue #321: Installing 4.2.0 installs the wrong version of python-http-client
- Big thanks to w- for the heads up!
- Pull #318 Add ability to reset request headers on client attribute
- Big thanks to w- for the pull request!
- Pull #314 Add ability to impersonate subuser
- Big thanks to w- for the pull request!
- Pull #244 refactor helpers using property getter/setter
- Big thanks to Denis Vlasov for the pull request!
- The changes break the implementation of the Mail Helper
Mail()
class set_from()
is now the propertyfrom_email
set_subject()
is now the propertysubject
set_template_id()
is now the propertytemplate_id
set_send_at()
is now the propertysend_at
set_batch_id()
is now the propertybatch_id
set_asm()
is now the propertyasm
set_ip_pool_name()
is now the propertyip_pool_name
set_mail_settings()
is now the propertymail_settings
set_tracking_settings()
is now the propertytracking_settings
set_reply_to()
is now the propertyreply_to
personalization.set_send_at()
is now the propertypersonalization.send_at
personalization.set_subject()
is now the propertypersonalization.subject
attachment.set_content()
is now the propertyattachment.content
attachment.set_type()
is now the propertyattachment.type
attachment.set_filename()
is now the propertyattachment.filename
attachment.set_disposition()
is now the propertyattachment.disposition
attachment.set_content_id()
is now the propertyattachment.content_id
mail_settings.set_bcc_settings()
is now the propertymail_settings.bcc_settings
mail_settings.set_bypass_list_management()
is now the propertymail_settings.bypass_list_management
mail_settings.set_footer_settings()
is now the propertymail_settings.footer_settings
mail_settings.set_sandbox_mode()
is now the propertymail_settings.sandbox_mode
mail_settings.set_spam_check()
is now the propertymail_settings.spam_check
tracking_settings.set_click_tracking()
is now the propertyclick_tracking
tracking_settings.set_open_tracking()
is now the propertyopen_tracking
tracking_settings.set_subscription_tracking()
is now the propertysubscription_tracking
tracking_settings.set_ganalytics()
is now the propertyganalytics
- Pull #300 Exclude test package
- Big thanks to Iryna Shcherbina for the pull request!
- Pull #250 Improve code quality
- Big thanks to Andrii Soldatenko for the pull request!
- Pull #243 Update deprecated Heroku command
- Big thanks to Roberto Ortega for the pull request!
- Pull #240 Add six to requirements.txt
- Big thanks to Wataru Sato for the pull request!
- Pull #246 Typo 'user' for 'usr'
- Big thanks to Mike Ralphson for the pull request!
- Pull #234 Substitutions allow non-strings for values
- Big thanks to ittus for the pull request!
- Pull #233: Allow dict to be passed to add_headers
- Big thanks to Navin Pai for the pull request!
- Pull #215
- Support larger files. Note that there is a 20MB maximum.
- Pull #213
- Naming inconsistency, we now standardized on
file_name
- Support for use of
iteritems
in Python 3
- Pull #212
- Allow for custom Inbound Parse config.yml
- Pull #211
- Within sendgrid/helpers/inbound/parse.py - moved doc strings to be under function definitions
- broke up def attachments(...) into two individual private functions, so it's a bit less cumbersome and can be individually tested better
- Big thanks to Christopher Li for the pull request!
- Table of Contents in the README
- Added a USE_CASES.md section, with the first use case example for transactional templates
- pep8 formatting
- include Heroku config files in PyPi
- Helper code for our Inbound Parse webhook
- Release 3.1.9 was botched (sorry!), so the apikey/api_key fix 3.1.9 was supposed to address is now in this release
- Issue #197: api_key / apikey attribute logic incorrect
- Thanks to johguse for reporting the bug
- Troubleshooting section
- Solves issue 195
- The variable apikey and api_key are now interchangeable to help support those migrating from v2
- Thanks to Ian Douglas for the feedback!
- README updates
- Update introduction blurb to include information regarding our forward path
- Update the v3 /mail/send example to include non-helper usage
- Update the generic v3 example to include non-fluent interface usage
- Update docs, unit tests and examples to include Sender ID
- Fixed logic errors related to issue #189
- Dependency update to fix issue #186
- Tests now mocked automatically against prism
- Issue 185: Getting HTTP Error 406 when getting bounces
- Examples, USAGE.md and Unit Tests with updated content and new endpoints
- Breaking change to support the v3 Web API
- New HTTP client
- v3 Mail Send helper
- you can now pass a path to your .env file to the SendGridAPIClient
- you can now pass an apikey to the SendGridAPIClient, per issue #168. Thanks Matt!
- fix .rst formatting for PyPi
- breaking change is only for the Web API v3 endpoints
- we now have support for all Web API v3 endpoints
- a call to GET api_keys after a call to DELETE api_keys would throw an error.
- the timeout value is no longer hard coded.
- smtpi-sendgrid dependency is now 0.3.1, the latest version: 161. Thanks Kevin Brown!
- Can't install normally 155
- Fix "HTTP 406 Not Acceptable Errors" 149
- Global Stats [GET]
- Template Engine documentation
- SMTPAPI documentation
- API Keys documentation for [POST, PATCH, DELETE]
- Fix "Mail uses old-style class again" 144
- Fix timeout via URLError 104
- Minor Refactor and README update
- ASM Global Suppressions [POST]
- ASM Global Suppressions [DELETE]
- Suppression Unsubscribes [GET]
- Global Suppressions [GET]
- Include MIT.LICENSE in release tarball
- Removed unsupported endpoint
- Added Unsubscribe Groups [POST]
- Global Suppressions [GET]
- Refactored tests and added Tox support
- Framework for Web API v3 endpoints
- Web API v3 endpoints: apikeys, ASM groups and ASM suppressions
- Python 3 Fix #126
- Reply To header now supports friendly name #110
- Upgrade Mail to new-style class, on Python 2.x.
- Classifiers for compatible python versions
- Support for API keys
- Add new method for ASM Group ID via #98
- Add CHANGELOG.md