【问题标题】:sending email using django使用 django 发送电子邮件
【发布时间】:2013-03-07 16:32:14
【问题描述】:

在我的项目中,可以使用电子邮件 ID 字段。

我正在收集作者的电子邮件 ID,并且在更新数据库中的详细信息时,应向该特定电子邮件 ID 发送一封电子邮件,说明书名已更新。

我的views.py是

def addbook(请求):

log.debug("test....")

form = BookForm

if request.POST:
    form = BookForm(request.POST)
    if form.is_valid():
        cd = form.cleaned_data
        send_mail(cd['book_name'],cd['author_name'],cd.get(''),['to@example.com'],)
        form.save()
        return redirect('/index/')
return render_to_response('addbook.html',{ 'form':form },context_instance=RequestContext(request))

我正在使用这个 send_mail() 方法来执行它,但它没有按我预期的那样工作。

models.py 是

类书(models.Model):

book_id=models.AutoField(primary_key=True,unique=True)
book_name=models.CharField(max_length=30)
author_name=models.CharField(max_length=30)
publisher_name=models.CharField(max_length=40)
email = models.EmailField()
bookref = models.CharField(max_length=10)
class Meta:
    db_table = u'Book'

def __unicode__(self):
    return "%d %s %s %s %s" % (self.book_id,self.book_name, self.author_name,self.publisher_name,self.email,self.bookref)

forms.py

class BookForm(ModelForm):

    log.debug("test....")

    class Meta:
        model = Book

        fields=['book_id','book_name','author_name','publisher_name','email','bookref']

邮件应发送到电子邮件字段中提到的电子邮件 ID。

谢谢

【问题讨论】:

  • 您是否在您的settings.py 中定义了EMAIL_HOSTEMAIL_PORTEMAIL_HOST_USEREMAIL_HOST_PASSWORD?还可以尝试打印cd['book_name']cd['author_name']cd.get(''),并确保您获得了适当的值。
  • “没有按预期工作” - 它是如何工作的
  • 我正在获取值,但它正在将邮件发送到硬编码的电子邮件 ID。我需要发送到字段中捕获的电子邮件 ID。接受任何帮助
  • @user2086641 很简单。传递从字段中捕获的电子邮件 ID,而不是对其进行硬编码。让您的问题变得清晰,以便更好地帮助您。
  • 先生,无论我们在数据库中保存什么,电子邮件都应该发送到电子邮件 ID,即点击提交按钮时,书籍详细信息会保存在数据库中。同时,邮件应该发送到捕获的电子邮件 ID也。我认为这可能会清除。在上面的代码中做同样的任何错误请通知。

标签: django email django-views


【解决方案1】:

settings.py

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

views.py

if request.POST:
    form = BookForm(request.POST)
    if form.is_valid():
        cd = form.cleaned_data

        email_to = cd['email']
        subject = "{0} Update".format(
            cd['book_name'])
        message = "Author: {0}\n\n Your book name is updated".format(
            cd['author_name'])
        send_mail(subject, message, settings.DEFAULT_FROM_EMAIL,[email_to,])

        form.save()
        return redirect('/index/')

【讨论】:

  • 在 settings.py 中,我应该在哪个段中编辑。我怀疑我是否应该在日志配置中这样做。
  • 您无需编辑内容,只需添加电子邮件设置
  • 我收到一个错误“未定义全局名称'设置'”它指向 send_mail() 行。任何要导入的头文件或要导入的文件请帮助我
  • 在您的视图中定义设置。插入视图头部from django.conf import settings
  • @Private 谢谢我从来没有注意到我放的是模板而不是视图 :)
猜你喜欢
  • 2011-10-18
  • 2016-06-10
  • 2015-11-24
  • 2020-09-08
  • 2020-08-09
  • 2014-10-10
  • 1970-01-01
  • 1970-01-01
  • 2019-07-10
相关资源
最近更新 更多