def test_set(self): header = SMTPAPIHeader() header.set_tos(["*****@*****.**"]) header.set_substitutions(json.loads('{"subKey":["subValue"]}')) header.set_sections(json.loads('{"testSection":"sectionValue"}')) header.set_categories(["testCategory"]) header.set_unique_args(json.loads('{"testUnique":"uniqueValue"}')) header.add_filter('testFilter', 'filter', 'filterValue') self.assertEqual(self.validHeader, json.loads(header.json_string()))
def test_drop_empty(self): header = SMTPAPIHeader() header.set_tos([]) header.set_substitutions(json.loads('{"subKey":["subValue"]}')) header.set_sections(json.loads('{}')) header.set_categories([]) header.set_unique_args(json.loads('{"testUnique":"uniqueValue"}')) header.add_filter('testFilter', 'filter', 'filterValue') self.assertEqual(self.dropsHeader, json.loads(header.json_string()))
def _prepare_payload(self, recipients=None): def namestr(rec): if not rec.get('name'): return rec.get('email') return '"{}" <{}>'.format(rec['name'].replace('"', ''), rec['email'].replace(',', '')) if not recipients: recipients = self.solidify_recipients() num_rec = len(recipients) payload = SMTPAPIHeader() merge_vars = {} for key, val in self.global_merge_vars.items(): keystr = ':{}'.format(key) new_key = '{1}{0}{2}'.format(key, *self.delimiters) merge_vars[new_key] = [keystr] * num_rec payload.add_section(keystr, val) for index, recip in enumerate(recipients): payload.add_to(recip if isinstance(recip, str) else namestr(recip)) for rkey, rvalue in recip.get('merge_vars', {}).items(): new_key = '{1}{0}{2}'.format(rkey, *self.delimiters) if not merge_vars.get(new_key): merge_vars[new_key] = [None] * num_rec merge_vars[new_key][index] = rvalue if self.webhook_data: payload.set_unique_args(self.webhook_data) if self.ip_pool: payload.set_ip_pool(self.ip_pool) if self.template_name: payload.add_filter('templates', 'enabled', 1) payload.add_filter('templates', 'template_id', self.template_name) payload.set_substitutions(merge_vars) payload.add_filter('clicktrack', 'enable', self.track_clicks and 1 or 0) payload.add_filter('opentrack', 'enable', self.track_opens and 1 or 0) payload.set_categories(self.tags) return payload
def build_header_json(notification): # build the header containing any relevant metadata # this is sent back to us by SendGrid via webhook events header_json = None if notification.metadata is not None: metadata = notification.metadata if 'bkrnd_nid' not in metadata: metadata['bkrnd_nid'] = notification.id header = SMTPAPIHeader() header.set_unique_args(metadata) header_json = {'X-SMTPAPI': header.json_string()} return header_json
def test_set(self): header = SMTPAPIHeader() header.set_tos(["*****@*****.**", "*****@*****.**", "*****@*****.**"]) header.set_substitutions(json.loads('{"subKey":["subValue"]}')) header.set_sections(json.loads('{"testSection":"sectionValue"}')) header.set_categories(["testCategory"]) header.set_unique_args(json.loads('{"testUnique":"uniqueValue"}')) header.set_asm_group_id(42) header.set_send_each_at([1409348513, 1409348514]) header.set_send_at(1409348515) header.add_filter('testFilter', 'filter', 'filterValue') self.assertEqual(self.validHeader, json.loads(header.json_string()))
def test_set(self): header = SMTPAPIHeader() header.set_tos( ["*****@*****.**", "*****@*****.**", "*****@*****.**"]) header.set_substitutions(json.loads('{"subKey":["subValue"]}')) header.set_sections(json.loads('{"testSection":"sectionValue"}')) header.set_categories(["testCategory"]) header.set_unique_args(json.loads('{"testUnique":"uniqueValue"}')) header.set_asm_group_id(42) header.set_send_each_at([1409348513, 1409348514]) header.set_send_at(1409348515) header.add_filter('testFilter', 'filter', 'filterValue') self.assertEqual(self.validHeader, json.loads(header.json_string()))
def test_drop_empty(self): header = SMTPAPIHeader() header.set_tos([]) header.set_substitutions({ "subKey": ["subValue"], "decimalKey": [decimal.Decimal("1.23456789")] }) header.set_sections(json.loads('{}')) header.set_categories([]) header.set_unique_args(json.loads('{"testUnique":"uniqueValue"}')) header.set_asm_group_id(None) header.set_send_each_at([]) header.set_ip_pool(None) header.add_filter('testFilter', 'filter', 'filterValue') self.assertEqual(self.dropsHeader, json.loads(header.json_string()))
def create_message(self, subscription, **kwargs) -> Message: """ Create the basic Message with the proper headers. Uses the SendGrid SMTPAPI. """ headers = SMTPAPIHeader() headers.set_unique_args({ "project_id": str(self.project_id), "subscription_id": str(subscription.id), }) unsubscribe_group = self.get_unsubscribe_group(subscription) if unsubscribe_group: headers.set_asm_group_id(int(unsubscribe_group)) return Message(recipients=[subscription.recipient], extra_headers={"X-SMTPAPI": headers.json_string()}, **kwargs)
from smtpapi import SMTPAPIHeader from smtpapi import SMTPAPIHeader header = SMTPAPIHeader() # [To](http://sendgrid.com/docs/API_Reference/SMTP_API/index.html) #header.add_to('*****@*****.**') header.set_tos(['*****@*****.**', '*****@*****.**']) # [Substitutions](http://sendgrid.com/docs/API_Reference/SMTP_API/substitution_tags.html) #header.add_substitution('key', 'value') header.set_substitutions({'key': ['value1', 'value2']}) # [Unique Arguments](http://sendgrid.com/docs/API_Reference/SMTP_API/unique_arguments.html) #header.add_unique_arg('key', 'value') header.set_unique_args({'key':'value'}) # [Categories](http://sendgrid.com/docs/API_Reference/SMTP_API/categories.html) #header.add_category('category') header.set_categories(['category1', 'category2']) # [Sections](http://sendgrid.com/docs/API_Reference/SMTP_API/section_tags.html) #header.add_section('key', 'section') header.set_sections({'key1':'section1', 'key2':'section2'}) # [Filters](http://sendgrid.com/docs/API_Reference/SMTP_API/apps.html) header.add_filter('filter', 'setting', 'value') # [ASM Group ID](https://sendgrid.com/docs/User_Guide/advanced_suppression_manager.html) header.set_asm_group_id('value')
sys.path.append(path.dirname(path.dirname(path.abspath(__file__)))) from smtpapi import SMTPAPIHeader header = SMTPAPIHeader() # [To](http://sendgrid.com/docs/API_Reference/SMTP_API/index.html) # header.add_to('*****@*****.**') header.set_tos(['*****@*****.**', '*****@*****.**']) # [Substitutions](http://sendgrid.com/docs/API_Reference/SMTP_API/substitution_tags.html) # header.add_substitution('key', 'value') header.set_substitutions({'key': ['value1', 'value2']}) # [Unique Arguments](http://sendgrid.com/docs/API_Reference/SMTP_API/unique_arguments.html) # header.add_unique_arg('key', 'value') header.set_unique_args({'key': 'value'}) # [Categories](http://sendgrid.com/docs/API_Reference/SMTP_API/categories.html) # header.add_category('category') header.set_categories(['category1', 'category2']) # [Sections](http://sendgrid.com/docs/API_Reference/SMTP_API/section_tags.html) # header.add_section('key', 'section') header.set_sections({'key1': 'section1', 'key2': 'section2'}) # [Filters](http://sendgrid.com/docs/API_Reference/SMTP_API/apps.html) header.add_filter('filter', 'setting', 'value') # [ASM Group ID](https://sendgrid.com/docs/User_Guide/advanced_suppression_manager.html) header.set_asm_group_id('value')