2013-03-19 158 views
0

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

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

我views.py是

高清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(''),['[email protected]'],) 
     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 。

感谢

+1

是否定义'EMAIL_HOST','EMAIL_PORT','EMAIL_HOST_USER'和'EMAIL_HOST_PASSWORD'在你的settings.py中?也可以尝试打印cd ['book_name']','cd ['author_name']'和'cd.get('')',并确保您获得了合适的值。 – arulmr 2013-03-19 05:32:09

+0

“不按预期工作” - 它是如何工作的? – 2013-03-19 05:36:56

+0

我正在获取的值,但它是发送邮件到硬编码的电子邮件ID.I需要发送到该字段中捕获的电子邮件ID。任何帮助接受 – user2086641 2013-03-19 05:42:59

回答

4

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/') 
+0

在settings.py中,我应该在哪段编辑。我怀疑是否应该在日志配置中执行它。 – user2086641 2013-03-19 06:15:01

+0

您不必编辑东西只需添加电子邮件设置 – catherine 2013-03-19 06:16:39

+0

我收到一个错误“全局名称”设置未定义“它指向send_mail()line.Any头文件要导入或要导入的文件请帮我 – user2086641 2013-03-19 06:43:30