【问题标题】:How to send email through contact.html template in django如何通过 django 中的contact.html 模板发送电子邮件
【发布时间】:2020-11-14 23:08:57
【问题描述】:

这是我的contact.html代码

<div class="col-lg-8">
                            
form class="form-area " id="myForm" action="{% url 'contact' %}" method="post" class="contact-form text-right">

<div class="row">

{% csrf_token %}    
<div class="col-lg-6 form-group">

<input name="name" placeholder="Enter your name" onfocus="this.placeholder = ''" onblur="this.placeholder = 'Enter your name'" class="common-input mb-20 form-control" required="" type="text">
                                    
<input name="email" placeholder="Enter email address" pattern="[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{1,63}$" onfocus="this.placeholder = ''" onblur="this.placeholder = 'Enter email address'" class="common-input mb-20 form-control" required="" type="email">

<input name="subject" placeholder="Enter subject" onfocus="this.placeholder = ''" onblur="this.placeholder = 'Enter subject'" class="common-input mb-20 form-control" required="" type="text">
</div>

<div class="col-lg-6 form-group">
<textarea class="common-textarea form-control" name="message" placeholder="Enter Messege" onfocus="this.placeholder = ''" onblur="this.placeholder = 'Enter Messege'" required=""></textarea>   
</div>

这是我的views.py文件

def contact(request):
if request.method == 'POST':
    name = request.POST['name']
    email = request.POST['email']
    subject = request.POST['subject']
    message = request.POST['message']

    send an email 
    send_mail(
        subject,
        name,
        message,
        email,
        ['nishantkkr68@gmail.com'],
        fail_silently= False
    )
    return render(request,'contact.html',{'name': name})
else:
    return render(request,'contact.html',{})

这是我的 settings.py 文件

EMAIL_HOST = 'localhost'
EMAIL_HOST = '1025'
EMAIL_HOST_USER = ''
EMAIL_HOST_PASSWORD = ''
EMAIL_USE_TLS = False

似乎我在contact.html 中的操作按钮没有做任何工作 (注意:我的 localhost 1025 正在工作)

请帮忙解决这个问题

谢谢。

【问题讨论】:

    标签: python-3.x django django-forms django-views django-templates


    【解决方案1】:

    要发送邮件,您必须使用 django 邮件包。您可以按照以下代码:

    from django.core.mail import EmailMultiAlternatives
    from email.mime.application import MIMEApplication
    from email.mime.multipart import MIMEMultipart
    from email.mime.text import MIMEText
    from django.template.loader import get_template
    
    def send_email_smtp(from_email, recipient_list, subject, body):
        msg = EmailMultiAlternatives(subject, body, from_email, recipient_list)
        msg.attach_alternative(body, "text/html")
        msg.send()
        return True, None
    
    name = request.POST['name']
    recipient_email = request.POST['email']
    subject = request.POST['subject']
    message = request.POST['message']
    
    html_template = get_template('email_template.html')
    html_content = html_template.render(
        {
            'message': message,
        })
    send_email_smtp(settings.EMAIL_HOST_USER, [recipient_email],
                    subject, body=html_content)
    

    除此之外,您还必须为电子邮件正文创建一个名为“email_template.html”的模板。我为此提供了简单的 sn-p ...

    File name : email_template.html
    

    <html lang="en">
        <head>
        </head>
        <body>
             <h1> {{ message }} </h1>
        </body>
        </html>

    在settings.py中添加以下变量

    EMAIL_HOST = 'smtp.gmail.com'
    EMAIL_PORT = '587'
    EMAIL_HOST_USER = 'nishantkkr68@gmail.com'
    EMAIL_HOST_PASSWORD = 'your email password'
    EMAIL_USE_TLS = True
    

    而且您还必须授予您的电子邮件权限才能访问不太安全的应用程序。你可以使用这个link 来提供它。

    对于简单的表单模板“contact.html”,请遵循以下代码 sn-p:

    <form class="your css classes" action="" method="post" enctype="multipart/form-data">
      {% csrf_token %}
      <div class="col-lg-6 form-group">
    
    <input name="name" placeholder="Enter your name" onfocus="this.placeholder = ''" onblur="this.placeholder = 'Enter your name'" class="common-input mb-20 form-control" required="" type="text">
                                        
    <input name="email" placeholder="Enter email address" pattern="[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{1,63}$" onfocus="this.placeholder = ''" onblur="this.placeholder = 'Enter email address'" class="common-input mb-20 form-control" required="" type="email">
    
    <input name="subject" placeholder="Enter subject" onfocus="this.placeholder = ''" onblur="this.placeholder = 'Enter subject'" class="common-input mb-20 form-control" required="" type="text">
    </div>
    
    <div class="col-lg-6 form-group">
    <textarea class="common-textarea form-control" name="message" placeholder="Enter Messege" onfocus="this.placeholder = ''" onblur="this.placeholder = 'Enter Messege'" required=""></textarea>   
    </div>
    <input type="submit" class="" value="submit" style="margin-bottom: 40px;">
    </form>

    否则你可以关注link 了解如何在 django 中管理表单

    【讨论】:

    • 使用还得加上这个属性setting.py : EMAIL_HOST = 'smtp.gmail.com' EMAIL_PORT = 587 EMAIL_HOST_USER = '' EMAIL_HOST_PASSWORD = '' EMAIL_USE_TLS = Ture
    • 兄弟,请给我发电子邮件至 nishantkkr68@gmail.com,以便我可以将整个 contact.html 文件发送给您,并在查看后告诉我应该怎么做才能解决我的问题。
    • @NishantSagar 您只能在此处提供该文件。
    • @NishantSagar 请查看更新后的答案,您可以在 Linkedin 上与我联系这是我的个人资料 link
    猜你喜欢
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    • 2020-09-08
    • 1970-01-01
    • 2021-05-06
    • 2021-08-25
    • 1970-01-01
    • 2018-08-19
    相关资源
    最近更新 更多