我正在我基于django python的网页上设置电子邮件表单。我已经看到这个cool video很好地解释了如何设置django以及如何将gmail合并为smtp服务器
表单有三个字段:全名;电邮地址;和信息
一切正常,但gmail smtp表示,我(EMAIL\u HOST\u用户)是邮件的发件人,而不是填写表单的人,即,我缺少带有the default youtube video implementation的已填写电子邮件地址
This thread和this 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的评论,没有他们我不会让它工作
最好的, 雷内
我相信就更改无法更改的发件人地址而言,这是因为发件人电子邮件配置了执行发送所需的所有凭据。就格式化电子邮件而言,这可以通过在电子邮件正文中添加一些HTML语法来实现。关于这个thread的投票数最高的答案显示了如何实现这一点
相关问题 更多 >
编程相关推荐