【问题标题】:Django mail not sending mailDjango邮件不发送邮件
【发布时间】:2019-10-31 00:24:38
【问题描述】:

我创建了一个函数,当重定向到特定 url 时会向特定用户发送邮件。它一直工作到今天。但是,今天当它被重定向到 url 时,电子邮件显示在终端中,而不是在接收者的收件箱中。我在代码中附上了邮件功能和设置。

views.py

def mail(request,pk):
    pr = UserProfile.objects.get(pk=pk)
    subject = "Greetings"
    msg = "Congratulations for your success"
    to = 'urvi0728@gmail.com'
    res = send_mail(subject, msg, settings.EMAIL_HOST_USER, [to])
    if(res == 1):
        msg = "Mail Sent Successfuly"
    else:
        msg = "Mail could not be sent"
    return HttpResponse(msg)

settings.py

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = '*****@gmail.com'
EMAIL_HOST_PASSWORD = '*********'
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

【问题讨论】:

  • 如果电子邮件显示在控制台中,听起来好像你有EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' 而不是EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'。我会将from django.conf import settings; print(settings.EMAIL_BACKEND) 添加到mail 方法中以检查该值的真正含义。
  • 您已标记您的问题django-mailer。你真的在使用django-mailer吗?如果是这样,请在您的问题中添加更多相关信息。
  • 在控制台中它显示 django.core.mail.backends.console.EmailBackend 虽然我在设置中将它设置为 smtp.EmailBackend。
  • 那么你需要找出你在哪里设置了django.core.mail.backends.console.EmailBackend。也许您在设置中进一步重复EMAIL_BACKEND,或者您没有保存/签入/部署您的更改,或者您在切换到 smtp 后端后没有重新启动服务器。

标签: django django-mailer


【解决方案1】:
email_msg = EmailMessage(subject="subject",
                                     body="content",
                                     to=["xyz@gmail.com"])
email_msg.send()

使用电子邮件按摩

【讨论】:

    【解决方案2】:

    试试这个。这对我有用。您的 settings.py 文件似乎正确。

    from django.core.mail import EmailMessage
    
    SUBJECT = "Welcome To my site"
    
    
    def send_email(email, password):
        """ send email to new user with temp password"""
    
        msg = EmailMessage(SUBJECT, 'Your temporary login password here. {password}'.format(password=password), to=[email])
        msg.send()
        return True
    

    【讨论】:

      【解决方案3】:

      试试这个

      from django.core.mail import EmailMessage 
      
      to_email = your_user_email
      mail_subject = your_message_subject
      message = your_content
      send_message = EmailMessage(mail_subject, message, to=[to_email])
      send_message.content_subtype = "html"
      send_message.send()
      

      您可以根据需要添加字典或其他数据作为内容。 如果要发送模板,则可以使用

      render_to_string

      from django.template.loader import render_to_string
      
      message = render_to_string('path_to_your_template.html', {
              'domain':current_site,
              'email': request.user.email,
              'data' : your_data
          })
      send_message = EmailMessage(mail_subject, message, to=[to_email])
      send_message.content_subtype = "html"
      send_message.send()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-02
        • 2016-01-28
        • 2019-07-10
        • 2020-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-19
        相关资源
        最近更新 更多