sendgrid / sendgrid-python

The Official Twilio SendGrid Python API Library
https://sendgrid.com
MIT License
1.55k stars 714 forks source link

Mail.add_header doesn't accept a dict #997

Open tzachyrm opened 3 years ago

tzachyrm commented 3 years ago

Issue Summary

The docs mentions that the Mail.add_header should accept a dict of key-value pairs. However, when passing a dict, the function fails.

Steps to Reproduce

  1. Initialize a new Mail object
  2. Call add_header with a dict. According to the docs this should work.

Code Snippet

from sendgrid .helpers.mail import Mail
Mail().add_header({"X": "y"})

Exception/Log

Traceback (most recent call last):
  File "/env/lib/python3.8/site-packages/sendgrid/helpers/mail/mail.py", line 466, in add_header
    if header.personalization is not None:
AttributeError: 'dict' object has no attribute 'personalization'

Technical details:

eshanholtz commented 3 years ago

This issue has been added to our internal backlog to be prioritized. Pull requests and +1s on the issue summary will help it move up the backlog.

hassaku63 commented 2 years ago

I sent a pull request for code to fix this issue.

As I mentioned in the pull request, the current implementation seems intended to only add the first key/value item if the header argument given to add_header is dict that has multiple key/values.

I believe this is non-intuitive and confusing to users. However, as long as the intent is not clear, I did not think this should be changed and kept it as is.