Отправить письмо с помощью переменных среды через Django для безопасности - PullRequest
0 голосов
/ 13 апреля 2019

Я могу отправлять электронные письма, используя переменные окружения в моем файле settings.py, однако, как мне ввести эти переменные в views.py? Когда положить фактический адрес электронной почты в str - это работает; но для большей безопасности я написал это как env. переменная и выдал мне ошибку: SMTPRecipientsRefused. Кроме того, как мне заставить это показать электронную почту отправителя. Это отображается в консоли, но не когда я получаю письмо. Я пытаюсь заставить разных пользователей отправлять сообщения одному получателю в качестве контактной формы.

settings.py:

SECRET_KEY = os.environ.get('SECRET_KEY')
EMAIL_HOST_USER=os.environ.get('EMAIL_HOST_USER')
EMAIL_HOST_PASSWORD=os.environ.get('EMAIL_HOST_PASSWORD')

views.py:

def contact(request):
  message = request.POST.get('message', '')
  from_email = request.POST.get('from_email', '')

  send_mail('Contact Form', message, from_email, ['EMAIL_HOST_USER'])
  return render(request, 'first_app/contact.html')

contact.html:

<form action="/contact" method="POST">
  {% csrf_token %}
  <input type="email" name="from_email" placeholder="Your email">
  <textarea name="message" placeholder="Message...">
  </textarea>
  <input type="submit"/>
</form>

1 Ответ

0 голосов
/ 13 апреля 2019

Чтобы использовать настройки вашего проекта в views.py, вам необходимо импортировать объект django.conf.settings.

Измените ваш views.py на:

from django.conf import settings

def contact(request):

    if request.method == 'POST':
        message = request.POST.get('message', '')
        from_email = request.POST.get('from_email', '')
        send_mail('Contact Form', message, from_email, [settings.EMAIL_HOST_USER])

    return render(request, 'first_app/contact.html')
...