All notable changes to this project will be documented in this file.
Library - Chore
- PR #1203: correct code signing command. Thanks to @tiwarishubham635!
Library - Chore
- PR #1202: corrected nuget push. Thanks to @tiwarishubham635!
- PR #1201: added code-signing workflow. Thanks to @tiwarishubham635!
- PR #1199: adding skip-duplicate flag. Thanks to @tiwarishubham635!
- PR #1198: Update test-and-deploy.yml. Thanks to @tiwarishubham635!
- PR #1197: import-certificate added as prerequisite for deploy. Thanks to @tiwarishubham635!
- PR #1196: added import-certificate workflow. Thanks to @tiwarishubham635!
- PR #1193: Update LICENSE. Thanks to @shrutiburman!
Library - Fix
- PR #1191: update deployment pipeline to add signing step. Thanks to @shrutiburman!
Library - Feature
- PR #1190: Add data residency for eu and global regions. Thanks to @shrutiburman!
Library - Docs
- PR #1181: Example of adding a WebProxy using DI. Thanks to @mortenbock!
Library - Fix
- PR #1180: Use httpErrorAsException when passed as parameter to SendGridClient constructor. Thanks to @mortenbock!
Library - Miscellaneous
- PR #1178: bump Newtonsoft.Json from 11.0.2 to 13.0.1 in /examples/inbound-webhook-handler/Tests/Inbound.Tests. Thanks to @dependabot!
Library - Test
Library - Docs
- PR #1176: Update to align with SendGrid Support. Thanks to @garethpaul!
Library - Chore
- PR #1174: Security upgrade Newtonsoft.Json from 9.0.1 to 13.0.1. Thanks to @svcprodsec-sendgrid!
- PR #1173: Security upgrade Newtonsoft.Json from 9.0.1 to 13.0.1. Thanks to @svcprodsec-sendgrid!
- PR #1175: Security upgrade Newtonsoft.Json from 10.0.3 to 13.0.1. Thanks to @svcprodsec-sendgrid!
Library - Feature
- PR #1169: Add support for multiple Reply-Tos. Thanks to @RyanFlemingOlo!
Library - Fix
- PR #1168: fallback to private body and headers for response deserialization. Thanks to @childish-sambino!
Library - Feature
- PR #1153: Added mail settings attributes for bypass_spam_management, bypass_bou…. Thanks to @asos-vinodpatil!
Library - Feature
- PR #1156: make RetriableServerErrorStatusCodes public. Thanks to @maxkoshevoi!
Library - Chore
- PR #1166: push Datadog Release Metric upon deploy success. Thanks to @eshanholtz!
Library - Fix
- PR #1151: Use the private body and header datamembers for DeserializeResponseBodyAsync and DeserializeResponseHeaders. Thanks to @Wind010!
Library - Chore
- PR #1161: add gh release to workflow. Thanks to @shwetha-manvinkurke!
- PR #1158: merge test and deploy workflows. Thanks to @shwetha-manvinkurke!
Library - Chore
- PR #1152: update license year. Thanks to @JenniferMah!
Library - Chore
- PR #1141: [Snyk] Fix for 6 vulnerabilities. Thanks to @svcprodsec-sendgrid!
- PR #1142: migrate to GitHub Actions. Thanks to @eshanholtz!
Library - Chore
- PR #1140: bump ecdsa-dotnet version. Thanks to @JenniferMah!
Library - Feature
Library - Docs
- PR #1134: improve signed webhook event validation docs. Thanks to @shwetha-manvinkurke!
Library - Docs
- PR #1133: enhancing intellisense to provide parameter limits in the description…. Thanks to @jmounts234!
Library - Docs
- PR #1126: Updated broken Readme.md links. Thanks to @DanielHolland!
Library - Docs
- PR #1123: fix mistake in README.md. Thanks to @hakuna-matata-in!
Library - Chore
Library - Feature
- PR #1115: add
SendGridMessage
deserialization. Thanks to @jlawcordova!
Library - Fix
Library - Chore
- PR #1105: bump System.Net.Http from 4.0.0 to 4.3.4 in /ExampleNet45ASPNetProject/SendGrid.ASPSamples. Thanks to @dependabot!
- PR #1106: bump System.Net.Http from 4.3.3 to 4.3.4 in /ExampleNet45ASPNetProject/SendGrid.ASPWebFormsSamples. Thanks to @dependabot!
Library - Feature
- PR #578: Add Permissions API support. Thanks to @teabaggs!
- PR #1102: Add From Email to Personalization. Thanks to @Stonebkfly!
Library - Chore
- PR #1100: bump ecdsa-dotnet version. Thanks to @JenniferMah!
Library - Feature
Library - Fix
- PR #1064: Allow SendGridMessage serialization to optionally bypass defaults. Thanks to @duncanchung!
Library - Docs
Library - Chore
- PR #1036: simplify framework dependencies. Thanks to @childish-sambino!
- PR #1032: update GitHub branch references to use HEAD. Thanks to @thinkingserious!
Library - Feature
- PR #789: Add dockerized email inbound webhook consumer example. Thanks to @KoditkarVedant!
Library - Docs
- PR #757: Run *.md documents through Grammer.ly. Thanks to @danimart1991!
Library - Feature
- PR #812: Add dockerized event webhook consumer example. Thanks to @KoditkarVedant!
Library - Feature
- PR #1030: allow the
RetryDelegatingHandler
to be used withHttpClientFactory
. Thanks to @childish-sambino!
Library - Chore
- PR #1028: migrate to new default sendgrid-oai branch. Thanks to @eshanholtz!
Library - Docs
- PR #785: typos fixed. Thanks to @RodgerLeblanc!
Library - Docs
- PR #824: Remove references to "Whitelabel". Thanks to @crweiner!
- PR #826: cleanup README.md anchors and ToC. Thanks to @ajloria!
Library - Feature
- PR #1019: add option for throwing exception on non-successful API request. Thanks to @childish-sambino!
Library - Chore
- PR #1017: drop Elliptic Curve code in favor of 'starkbank-ecdsa'. Thanks to @childish-sambino!
Library - Fix
- PR #916: sendAt timestamp as 32bit integer. Thanks to @matrix0123456789!
Library - Feature
- PR #1010: verify signature from event webhook. Thanks to @childish-sambino!
- PR #1014: add Elliptic Curve code and utilities. Thanks to @childish-sambino!
- PR #1011: Added net40 target framework. Thanks to @HavenDV!
Library - Test
- PR #1008: Ensuring default serialization settings behave correctly. Thanks to @duncanchung!
Library - Feature
Library - Fix
- PR #1001: add back client constructors with client options and actually use its reliability settings. Thanks to @childish-sambino!
Library - Docs
Library - Fix
- PR #938: Ensures the serialization of the SendGridMessage is untainted by defaults set by applications on the JsonSerializer. Thanks to @duncanchung!
- PR #996: migrate to common prism setup. Thanks to @childish-sambino!
Library - Feature
- PR #997: add support for Twilio Email. Thanks to @childish-sambino!
Library - Fix
- PR #993: refactor and fix personalization inserts/updates. Thanks to @childish-sambino!
Library - Feature
- PR #991: ignore duplicate email addresses when serializing the message. Thanks to @childish-sambino!
- PR #905: Implement IEquatable in EmailAddress. Thanks to @aevitas!
Library - Fix
- PR #924: validate API key is non-empty. Thanks to @aevitas!
- PR #903: handle @ in display name when using MailHelper.StringToEmailAddress. Thanks to @Fieora!
Library - Docs
- PR #990: baseline all the templated markdown docs. Thanks to @childish-sambino!
Library - Docs
- PR #989: support verbiage for login issues. Thanks to @adamchasetaylor!
Library - Docs
Library - Fix
- PR #967: Remove char set from content headers for JSON payloads. Thanks to @marius-stanescu!
Library - Feature
- PR #981: sanity-check email address and address lists when adding to a message. Thanks to @indy-singh!
Library - Chore
Library - Fix
Library - Fix
- PR #971: nuget push flag. Thanks to @thinkingserious!
Library - Chore
- PR #970: update travis build command. Thanks to @thinkingserious!
Library - Chore
- PR #969: fix travis path for automated deploy. Thanks to @thinkingserious!
Library - Chore
- PR #966: deploy command needs a source URL. Thanks to @thinkingserious!
Library - Chore
- PR #965: prep the repo for automated releasing. Thanks to @thinkingserious!
- PR #753: Adds deploy phase that deploys to NuGet. Thanks to @Gimly!
Library - Docs
- PR #892 Replace nuspec and AssemblyInfo with csproj. Big thanks to Jonas Nyrup for the PR!
- PR #876 Add
EmailAddress
attribute. Big thanks to Jonathan for the PR! - PR #839 Refactored SendGridClient to support inject external managed HttpClient. Big thanks to Charley Wu for the PR!
- PR #877 Twilio SMS example and branding update.
- PR #790 Change the environment variable placeholders to be consistent amongst all example projects. Big thanks to Ross Macey for the PR!
- PR #783 Update documentation with new Git workflow. Big thanks to Tony Ho for the PR!
- PR #782 Update contribution to use Gitflow workflow. Big thanks to Anatoly for the PR!
- PR #814 Modification in Prerequisites for installation. Big thanks to Rishabh for the PR!
- PR #817 Added Announcement. Big thanks to Kris Choi for the PR!
- PR #741 Fix release date in changelog. Big thanks to Niladri Dutta for the PR!
- PR #751 Update to remove compiler warnings based on stylecop/xunit. Big thanks to Garry Dixon for the PR!
- PR #754 Removed references to Microsoft.AspNetCore.Http.Abstractions package. Big thanks to Jeremy Cantu for the PR!
- PR #794 Updated broken links to examples. Big thanks to Sanjay Singh for the PR!
- PR #791 Fixed typo in mail example. Big thanks to Daredevil Geek for the PR!
- PR #767 Directly link online version of CLA and fix email mentions. Big thanks to Bharat Raghunathan for the PR!
- PR #762 TROUBLESHOOTING.md broken link fix. Big thanks to Arshad Kazmi for the PR!
- PR #724 Add Dynamic Template Support. Big thanks to Carl Hartshorn for the PR!
- PR #643 HTML to Plain text documentation. Big thanks to Jorge Durán for the PR!
- PR #627 Add Code Review to Contributing.md. Big thanks to Thomas Alrek for the PR!
- PR #618 Added links to code base in CONTRIBUTION.md. Big thanks to Kunal Garg for the PR!
- PR #617 Added codecov support. Big thanks to Rishabh Chaudhary for the PR!
- PR #610 Added test to check the license date. Big thanks to Vitor Mascena Barbosa for the PR!
- PR #601 Update .Net 4.5 References and update the targetFramework monikers. Big thanks to Felipe Leusin for the PR!
- PR #586 Allow for duplicate keys in QueryParams. Big thanks to Florian Hofmair for the PR!
- PR #720 Update CONTRIBUTING.md for improved readability. Big thanks to Anshul Singhal for the PR!
- PR #718 Update README badge. Big thanks to Anshul Singhal for the PR!
- PR #701 Improved environment variable setup instructions. Big thanks to Siddharth Kochar for the PR!
- PR #537 Added .NET WebForms example. Big thanks to Roel de Vries for the PR!
- PR #522 Update add attachment interface. Big thanks to Graham Mueller for the PR!
- PR #609 Added unittest to check for specific repo files. Big thanks to Manjiri Tapaswi for the PR!
- PR #528 Made DeserializeResponseBody asynchronous. Big thanks to Xavier Hahn for the PR!
- PR #531 Skip invalid content objects during serialization. Big thanks to Roel de Vries for the PR!
- PR #557 Add Dockerfile. Big thanks to George Vanburgh for the PR!
- PR #599 Add a .env_sample file, update gitignore, update README.md. Big thanks to thepriefy for the PR!
- PR #596 Add github PR template. Big thanks to Alex for the PR!
- PR #582 SEO Friendly Section links. Big thanks to Alex for the PR!
- PR #581 Add/Update Badges on README. Big thanks to Alex for the PR!
- PR #554 Add a Code Of Conduct. Big thanks to Henrik Bergqvist for the PR!
- PR #548 Add status codes to USAGE.md. Big thanks to Hank McCord for the PR!
- PR #532 Added information about setting up environment variables. Big thanks to Roel de Vries for the PR!
- PR #523 README improvements. Big thanks to Kaylyn Sigler for the PR!
- PR #513 Reduced duplication in Integration tests. Big thanks to Dylan Morley for the PR!
- PR #514 Added UI thread information. Big thanks to Matt Bernier for the PR!
- PR #515 README improvements. Big thanks to Matt Bernier for the PR!
- PR #518 README improvements. Big thanks to Matt Bernier for the PR!
- PR #735 Fix #418 groupsToDisplay should be optional.
- PR #719 Update travis config to use a relative path. Big thanks to Maxim Rubis for the PR!
- PR #702 Fixed virtual bug. Big thanks to Phil for the PR!
- PR #700 Add default value for SubstitutionTag parameter. Big thanks to Vedant Koditkar for the PR!
- PR #688 Fix mixup of Response.Body and Response.Header summary. Big thanks to Ryan David Sheasb for the PR!
- PR #635 Fixed "Variable assigned but never used" issue. Big thanks to Unlocked for the PR!
- PR #615 Update USAGE.md - fix typo. Big thanks to Anvesh Chaturvedi for the PR!
- PR #613 Update CONTRIBUTING.md - fix typo. Big thanks to thepriefy for the PR!
- PR #669 Update Create Template Version Docs as per sendgrid support request. Big thanks to Tom Needham for the PR!
- PR #603 Minor readability fixes in README. Big thanks to Rion Williams for the PR!
- PR #592 Update USAGE.md - fix typos. Big thanks to Anatoly for the PR!
- PR #608 Updated the LICENSE.txt file to have the correct date range. Big thanks to Duarte Fernandes for the PR!
- PR #588 Update USAGE.md - fix typos. Big thanks to Varun Dey for the PR!
- PR #585 Update USAGE.md - fix typos. Big thanks to Alex for the PR!
- PR #584 Spelling corrections in md, xml docs and variable names. Big thanks to Brandon Smith for the PR!
- PR #527 Corrected list all recipients documentation. Big thanks to Xavier Hahn for the PR!
- PR #583 Fix a typo in CONTRIBUTING.md. Big thanks to ChatPion for the PR!
- PR #547 Fix TROUBLESHOOTING.md typo. Big thanks to Cícero Pablo for the PR!
- PR #546 Fix README.md typo. Big thanks to Cícero Pablo for the PR!
- PR #529 Update bounce usage Fixes. Big thanks to Xavier Hahn for the PR!
- PR #519 Change ContextAwait to ConfigureAwait in TROUBLESHOOTING.md doc. Big thanks to Brian Surowiec for the PR!
- #509 Transient Fault Handling (dependency free)
- Implements retry behaviour for transient faults when using HttpClient to send the request.
- Please see #509 and USE_CASES.md for details.
- Thanks to Dylan Morley for the PR!
- Single email to multiple recipients - Toggle display of recipients #508
- The method
CreateSingleEmailToMultipleRecipients
now has an additional optional parameter to control whether the email recipients can see each others email addresses. Please see USE_CASES.md for details. - Thanks to Niladri Dutta for the PR!
- Reverted to version 9.5.2, per the conversation here: #501
- Polly (which implemented Transient Fault Handling) was removed in favor of a dependency free solution.
- Transient Fault Handling with Polly still exists in version 9.6.1, if needed
- Fix for issue #501: Could not load file or assembly 'Polly, Version=5.2.0.0, Culture=neutral, PublicKeyToken=null'
- The dependency for Polly has been corrected
- Pull #497: Transient Fault Handling
- Thanks to Dylan Morley for the PR!
- Issue #494: Update pdb format for VSTS
- Thanks to Murray Crowe for the fix!
- Issue #494: Repair bad pdb file
- PR #478: Disable Json.Net reference handling for SendGrid objects
- Thanks to sepptruetsch for the PR!
- PR #459: Replace if statements with function
- Thanks to Jef Statham for the PR!
- PR #458: Add a StringToEmailAddress helper function
- Thanks to Jef Statham for the PR!
- PR #456: Fixed #403 Implements an interface for mocking and DI
- Thanks to Nate for the PR!
- PR #457: Tos, Bccs and CCs fields could be null
- Thanks to Jef Statham for the PR!
- PR #444: AddTo, AddBcc, AddCc and SetFrom that just takes an email and name
- Solves Issue #408
- Thanks to Paritosh Baghel for the PR!
- PR #358: SendGridClient.SendEmailAsync now throws original exception
- Thanks to Otto Dandenell for the PR!
- PR #405: Reuse HTTP Client
- Thanks to Jonny Bekkum for the PR!
- Allow for empty strings to be passed in as text or html content in All of the MailHelpers
- Issue #399: Allow for empty strings to be passed in as text or html content in the MailHelper
- Thanks to @Angry-Leprechaun for the heads up!
- Issue #395: Remove dependency for Microsoft.AspNetCore.Http.Abstractions in .NET 4
- Thanks to @Hinni for the heads up!
- Issue #396: Make 'stylecop' a development dependency
- Thanks to @knopa for the heads up!
- Issue #394: Issue with CreateSingleEmail
- You can now have either a null plain/text or plain/html type in the MailHelper
- Thanks to @onionhammer for the heads up!
- Support for .NET Standard 1.3
- Removed dynamic dependencies
- Updated Mail Helper
- Table of Contents in the README
- Added a USE_CASES.md section, with the first use case example for transactional templates
- Issue #297: Don't Include Empty Objects in JSON Request Body
- If you clear out the values of the to, bcc or cc lists in the personalization objects, they will no longer be included in the JSON request body
- Issue #273: Disable (or set) tracking
- Now, settings set to false will generate the correct JSON
- Big thanks to Pontus Öwre for the pull!
- Troubleshooting section
- updated dependency on SendGrid.CSharp.HTTP.Client, which had a breaking change
- Fixes issue #259
- the async behavior in the HTTP client has changed, as we don’t block on .Result anymore
- Updated USAGE, examples and README to demonstrate await usage
- 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 csharp-http-client dependency to support setting a WebProxy
- Fix for issue #256: SendGrid v3 and HTML emails - Creates bad Json
- Updated dependency to SendGrid.Csharp.HTTP.Client to 2.0.6
- Updated dependency to JSON.NET to 9.0.1 in the Example and SendGrid projects
- Removed dependencies to SendGrid.CSharp.HTTP.Client and SendGrid.SmtpApi from the Example and UnitTests projects as they are not needed
- Update examples, unit tests and USAGE.md to pass in valid JSON
- Thanks to Gunnar Liljas for helping find the root cause quickly!
- Update docs, unit tests and examples to include Sender ID
- Tests now mocked automatically against prism
- Accept: application/json header per https://sendgrid.com/docs/API_Reference/Web_API_v3/How_To_Use_The_Web_API_v3/requests.html
- Content based on our updated Swagger/OAI doc
- Send mail fails with BadRequest when apostrophe used in sender name: #232
- Async broken in library, causing deadlocks and responses not returning in non-console apps: #235
- Breaking change to support the v3 Web API
- New HTTP client
- v3 Mail Send helper
- Implemented the global stats /asm/stats endpoint [GET]
- Implemented the global suppressions /asm/suppressions/global endpoint [GET, POST, DELETE]
- Implemented the suppressions /asm/groups/:group_id/suppressions endpoint [GET, POST, DELETE]
- Implemented the unsubscribe groups /asm/groups endpoint [GET, POST, DELETE]
- Send emails using API Key
- Added support for using the Web API v3 endpoints
- Implemented the api_keys endpoint [GET, POST, PATCH, DELETE]
- Added support for sending via API keys in addition to credentials. Pass an API Key string to the Web transport constructor
- Fixed the endpoint URL. (⌒_⌒;)
The only breaking change in this release is the removal of the non-async Deliver method. All other changes are backwards compatible.
- AddSection() method for SMTP API substitution sections (thanks @awwa)
- EmbedStreamImage() to embed directly from a memory stream with no disk i/o (thanks @twilly86)
- SendToSink bool that when true will send all emails to the test sink (thanks @lukasz-lysik)
- SetSendAt() and SetSendEachAt() methods for scheduled sends
- SetIpPool() method for using IP pools
- SetAsmGroupId() method for using suppression groups
- Refactored error handling (thanks @HowardvanRooijen)
- Removed non-async Deliver() method as it was mixing sync and async code.
- Invalid Protocol Exception in Mono due to the way the endpoint URL was being assigned (thanks @mdymel, @rbarinov)
- Connections were not being reused. This was causing degraded performance with multiple threads open. Performance should be much better. (with help from @gatesvp)
- This changelog.
Web
transport constructor that accepts aTimeSpan
to specify HTTP timeout- Null values in header will now result in a
ArgumentNullException
- Updated to SendGrid.SmtpApi 1.2.0, which means Unicode in header values will work properly.
- Removed redundant status code check that was throwing unhelpful errors
- Unicode in header values will now work properly