SparkPost: требуется хотя бы один действительный получатель API python/django
У меня проблема с отправкой электронной почты с помощью SparkPost: мой код выглядит следующим образом:
from configurations.global_configs import site_base_url
from media.settings import SPARKPOST_API_KEY
from sparkpost import SparkPost
import traceback
def welcome_email(user_profile):
try:
user_profile.confirmation_key = user_profile.generate_key()
user_profile.save()
email_address = user_profile.user.email
print email_address
name = user_profile.user.first_name or email_address
email_confirmation_url = site_base_url + "api/account/signup/?ck=" + user_profile.confirmation_key
print email_confirmation_url
sp = SparkPost(SPARKPOST_API_KEY)
result = sp.transmissions.send(
recipients=[email_address],
template='welcome',
subject='this is my subject',
track_opens=True,
track_clicks=True,
substitution_data={
'email_validation_url': email_confirmation_url
},
transactional= True
)
return result
except:
traceback.print_exc()
но мой код выводится следующим образом и возвращает эту ошибку:
exampleemail@gmail.com
http://example.com/api/account/signup/?ck=1144f138439dc42e
Traceback (most recent call last):
File "./users_system/services/email_confirm.py", line 28, in welcome_email
transactional= True
File "/usr/local/lib/python2.7/dist-packages/sparkpost/transmissions.py", line 142, in send
results = self.request('POST', self.uri, data=json.dumps(payload))
File "/usr/local/lib/python2.7/dist-packages/sparkpost/base.py", line 26, in request
raise SparkPostAPIException(response)
SparkPostAPIException: Call to https://api.sparkpost.com/api/v1/transmissions returned 400, errors:
At least one valid recipient is required:
Как видите, у меня есть один получатель, и я знаю, что он действителен, потому что я отправил тестовое письмо через панель управления sparkpost. Но почему я получаю эту ошибку "Требуется хотя бы один действительный получатель"??!!! где моя проблема
2 ответа
Я нашел ответ: сначала я хочу поблагодарить службу поддержки Sparkpost, проблема была в парсере электронной почты в модуле spark, и проблема создана для решения проблемы в моем коде. Я сделал это изменение, чтобы исправить это:
получатели =[ dict(address=dict(email=email_address)) ],
Так как вы используете его как бэкэнд django для своей электронной почты, почему бы вам не сделать это напрямую с
from django.core.mail import send_mail
send_mail(
subject='hello from sparkpost',
message='Hello Rock stars!'
from_email='from@yourdomain.com',
recipient_list=['to@friendsdomain.com'],
html_message='<p>Hello Rock stars!</p>',
)
как упоминалось в их официальных документах