Чтение почтового объекта SendGrid в Python

#python #sendgrid

#python #sendgrid

Вопрос:

Я новичок в Python, поэтому мне трудно понять, как получить доступ к определенному элементу в почтовом объекте. Я создаю объект Mail в функции и возвращаю его:

 data = getMessage()
  

Когда я это делаю print (data) , это дает мне следующее:

 {
  'from': {
    'email': 'my@email.com'
  },
  'subject': 'My Subject Line',
  'personalizations': [{
    'to': [{
      'email': 'another@email.com'
    }]
  }],
  'content': [{
    'type': 'text/plain',
    'value': 'http://localhost/some-url?t=ab99ceccf4ab4f97b1d014bb5e89707c'
  }]
}
  

Теперь я могу сделать что-то вроде print (data.subject) , и это дает мне My Subject Line , но я не могу понять, как добраться до value свойства content . Я просто хочу распечатать URL-адрес на консоли для тестирования, поэтому мне не нужно ждать, пока придет электронное письмо.

Теперь я просто печатаю его изнутри самой функции, потому что это простой способ, но я все равно хотел бы знать, как получить его из объекта Mail.

Ответ №1:

Содержимое представляет собой список, содержащий только 1 запись.

Вы можете добраться до него, выполнив:

 data["content"][0]["value"]
  

или, если вы не уверены, есть ли только 1 запись:

 for content in data["content"]:
    content["value"]
  

Комментарии:

1. Спасибо Уолтеру. Я пробовал подобные вещи, но даже с вашим кодом я в конечном итоге получаю TypeError: 'Mail' object is not subscriptable . Я получаю одну и ту же ошибку с обоими вариантами.

Ответ №2:

 for content in data["content"]:
    content["value"] 
  

Комментарии:

1. Небольшое объяснение сделало бы этот ответ только для кода лучше.