Django - python форма электронной почты не пересылает адрес электронной почты отправителя через gmail smtp - PullRequest
0 голосов
/ 30 апреля 2020

Я настраиваю форму электронной почты на моей django - python веб-странице. Я видел это классное видео , в котором подробно объясняется, как настроить django и как включить gmail в качестве сервера smtp.

Форма имеет три поля: Полное имя; Адрес электронной почты; и Message.

Все отлично работает, но SMTP Gmail говорит, что я (EMAIL_HOST_USER) являюсь отправителем сообщения, а не человеком, который заполнил форму, т.е. я пропускаю заполненный адрес электронной почты с по умолчанию реализация видео на YouTube .

Этот поток и этот поток говорят, что мы не можем изменить адрес отправителя. Я добавил адрес электронной почты человека, спрашивающего через форму (то есть переменная message_email) в получателей. Этот asegurar, вы не потеряете адрес электронной почты, и запрашивающий человек получит отзыв о том, что вы обрабатываете его / ее вопрос.

Есть две другие динамические c переменные, которые нам нужно получить. 1.) message_name (полное имя запрашивающего лица) 2.) сообщение (т.е. простой текст из формы с пометками \ r \ n в конце каждого абзаца с неплохим выводом python print ()). См .:

message = 'Dear website developers,\r\nI would like to ask when the website will be online available.\r\nKind regards,\r\nJohn Doe'

print(message)
Dear website developers,
I would like to ask when the website will be online available.
Kind regards,
John Doe

@ Майна Камау предложила получить динамический c концентрат в сообщение электронной почты с разборчивым содержимым через форматирование hmtl, как описано здесь . Здесь - полезная ветка, описывающая, как подставлять части текста в python. Измененный рабочий код теперь выглядит следующим образом:

from django.core.mail import send_mail
from django.template.loader import render_to_string
from django.utils.html import strip_tags

html_message = render_to_string(
        'email.html',
        {'name': message_name,'email': message_email, 'message': message}
)
plain_message = strip_tags(html_message)
html_message = html_message.replace("\r\n", "<br>")

send_mail(
        'message from ' + message_name, # email_subject
        plain_message, # message
        message_email, # from email
        ['recepient1@example.com', message_email], # To Email
        html_message=html_message, # html formated message
)

Электронное письмо. html (из команды render_to_string), включающее динамическое содержимое c в сообщение электронной почты, может выглядеть, например, следующим образом:

<p style="text-align: justify">Dear {{ name }},
   <br>We have recieved your message and will respond as soon as possible.
   <br>This is an automatically generated message.
   <br>If you want to provide some additional information to us you can easily respond at this email.
   <br>Yours sincerely,
   <br>Helpdesk
</p>
<p style="text-align: justify"><br></p>
<p style="text-align: justify"><i>Your initial message details are as follows:</i>
   <br><b>Full Name:</b> {{ name }}
   <br><b>Email Address:</b> {{ email }}
   <br><b>Message:</b>
   <br>{{ message }}
</p>

Большое спасибо @Maina Kamau за комментарии, я бы не стал работать без них !!!

Best, Rene

1 Ответ

0 голосов
/ 30 апреля 2020

Я полагаю, что если изменить адрес отправителя, который нельзя изменить, то это потому, что электронная почта отправителя настроена со всеми необходимыми учетными данными для выполнения отправки. Что касается форматирования вашей электронной почты, это может быть достигнуто путем добавления некоторого синтаксиса HTML в ваше тело электронной почты. Ответ с наибольшим количеством голосов в этой теме показывает, как этого добиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...