Има ли начин да се използва django send_mail, но подателят е базиран на конкретно поле в django модел?

В момента използвам gmail smtp и 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 Model.

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

Има ли начин това да се случи? Не искам да добавям поле email_address_password в моя клас Business_Profile.

Ако не е възможно, съм отворен за предложения, като например използване на имейл сървър. Имам производствен сървър, работещ на nginx, и съм чувал за postfix. Мога ли да постигна това, което искам, използвайки postfix? Или има по-добри и лесни за използване пощенски сървъри вместо postfix?

Благодаря за четенето. За първи път задавам въпрос.


person patty    schedule 09.12.2011    source източник
comment
възможен дубликат на Как да замените от адрес в django имейл (изпратен през Gmail)   -  person Chris Pratt    schedule 09.12.2011
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
здрасти Благодаря за отговора. Опитах вашето решение, но то все още използва EMAIL_HOST_USER, посочен в settings.py, който е [email protected]. - person patty; 09.12.2011
comment
Възможно ли е проблемът да е, че използвате SMTP сървъра на Gmail? Gmail вероятно ви позволява да изпращате поща само с оторизирани адреси. Проверете дали имате адреса на подателя, посочен на mail.google.com/mail/ u/0/#settings/accounts - person Visa Kopu; 09.12.2011
comment
Да, мисля, че това, което искам, не е възможно чрез сървъра на gmail. Четох от други източници, че персонализирани податели не са разрешени, защото могат да се използват за спам. Въпреки това все още се надявам, че има други начини освен използването на пощенски сървъри. Благодаря за отговора! - person patty; 09.12.2011