Есть ли способ использовать django send_mail, но отправитель основан на определенном поле в модели django?

В настоящее время я использую smtp Gmail и Django send_mail.

EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = '[email protected]'
EMAIL_HOST_PASSWORD = 'samplepass'
EMAIL_USE_TLS = True

Всякий раз, когда я использую django для отправки почты, отправитель всегда основан на EMAIL_HOST_USER (в данном случае [email protected]).

Я хочу изменить отправителя, чтобы он не использовал [email protected], вместо этого он использовал адрес электронной почты из поля contact_email_address в моей модели Business_Profile.

#models.py
class Business_Profile(models.Model):   
    ...
    contact_email_address = models.EmailField()
    ...

Есть ли способ, чтобы это произошло? Я не хочу добавлять поле email_address_password в свой класс Business_Profile.

Если это невозможно, я открыт для предложений, таких как использование почтового сервера. У меня есть рабочий сервер, работающий на nginx, и я слышал о постфиксе. Могу ли я добиться того, чего хочу, используя постфикс? Или есть более удобные и удобные почтовые серверы вместо postfix?

Спасибо за чтение. Я впервые задаю вопрос.


person patty    schedule 09.12.2011    source источник
comment
comment
Есть изменения по этому поводу? У меня такая же проблема :(   -  person Romain Jouin    schedule 19.02.2015


Ответы (1)


Вы можете указать адрес отправителя в качестве параметра для send_mail():

from django.core.mail import send_mail

profile = BusinessProfile.objects.get(pk=1)

send_mail('Subject here', 'Here is the message.', profile.contact_email_address,
    ['[email protected]'], fail_silently=False)

Подробнее читайте на https://docs.djangoproject.com/en/dev/topics/email. /.

person Visa Kopu    schedule 09.12.2011
comment
Может ли проблема заключаться в том, что вы используете SMTP-сервер Gmail? Gmail, вероятно, позволяет отправлять почту только с авторизованных адресов. Убедитесь, что адрес отправителя указан на странице mail.google.com/mail/. u/0/#настройки/аккаунты - person Visa Kopu; 09.12.2011
comment
Да, я думаю, что то, что я хочу, невозможно использовать с сервером Gmail. Я читал из других источников, что пользовательские отправители не разрешены, потому что их можно использовать для рассылки спама. Однако я все еще надеюсь, что помимо использования почтовых серверов есть и другие способы. Спасибо за ответ! - person patty; 09.12.2011