Объяснение в сообщении об ошибке.Ваш хост электронной почты отклоняет электронную почту из-за адреса отправителя randomacc@hotmail.com
, который вы взяли из контактной формы.
Вместо этого вы должны использовать свой собственный адрес электронной почты в качестве адреса отправителя.Вы можете использовать опцию reply_to
, чтобы ответы отправлялись вашему пользователю.
email = EmailMessage(
'Subject',
'Body goes here',
'test@test.megiteam.pl',
['to@example.com',],
reply_to='randomacc@hotmail.com',
)
email.send()
В Django 1.7 и более ранних версиях аргумент reply_to
отсутствует, но вы можете вручную установить Reply-To
заголовок:
email = EmailMessage(
'Subject',
'Body goes here',
'test@test.megiteam.pl',
['to@example.com',],
headers = {'Reply-To': 'randomacc@hotmail.com'},
)
email.send()
Редактировать:
В комментариях вы спрашивали, как включить адрес отправителя в тело сообщения.message
и from_email
- это просто строки, поэтому вы можете объединить их так, как вы хотите, прежде чем отправлять электронное письмо.
Обратите внимание, что вы не должны получать аргумент from_email
из ваших cleaned_data.Вы знаете, что from_address
должно быть test@test.megiteam.pl
, поэтому используйте его или, возможно, импортируйте DEFAULT_FROM_EMAIL
из своих настроек.
Обратите внимание, что если вы создаете сообщение, используя EmailMessage
, как в моем примере выше,и установите ответ в заголовок, тогда ваш почтовый клиент должен делать все правильно, когда вы нажимаете кнопку ответа.В приведенном ниже примере используется send_mail
, чтобы сохранить его похожим на код , который вы связали с .
from django.conf import settings
...
if form.is_valid():
cd = form.cleaned_data
message = cd['message']
# construct the message body from the form's cleaned data
body = """\
from: %s
message: %s""" % (cd['email'], cd['message'])
send_mail(
cd['subject'],
body,
settings.DEFAULT_FROM_EMAIL, # use your email address, not the one from the form
['test@test.megiteam.pl'],
)