Djangopython电子邮件表单未通过gmail smtp转发发件人的电子邮件地址

2024-04-20 12:38:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在我基于django python的网页上设置电子邮件表单。我已经看到这个cool video很好地解释了如何设置django以及如何将gmail合并为smtp服务器

表单有三个字段:全名;电邮地址;和信息

一切正常,但gmail smtp表示,我(EMAIL\u HOST\u用户)是邮件的发件人,而不是填写表单的人,即,我缺少带有the default youtube video implementation的已填写电子邮件地址

This threadthis thread也就是说,我们不能更改发件人地址。我已将通过表单(即可变消息\电子邮件)询问的人的电子邮件地址添加到收件人中。这是一个保证,您不会丢失电子邮件地址,询问者将收到您正在处理他/她的问题的反馈

我们还需要得到另外两个动态变量。 1.)信息名称(询问人的全名) 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

@Maina Kamau建议通过hmtl格式将动态内容放入电子邮件中,内容清晰易懂,如here所述Here是一个有用的线程,描述如何替换python中的部分文本。修改后的nad工作代码现在显示如下:

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
)

将动态内容合并到电子邮件消息中的email.html(从render_到_string命令)可以如下显示:

<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的评论,没有他们我不会让它工作

最好的, 雷内


Tags: thetodjangonamefrombr消息表单
1条回答
网友
1楼 · 发布于 2024-04-20 12:38:03

我相信就更改无法更改的发件人地址而言,这是因为发件人电子邮件配置了执行发送所需的所有凭据。就格式化电子邮件而言,这可以通过在电子邮件正文中添加一些HTML语法来实现。关于这个thread的投票数最高的答案显示了如何实现这一点

相关问题 更多 >