2011-09-20 82 views
0

我有一个简单的django应用程序,它允许用户添加一个新用户。每当我们创建一个新用户时,一封邮件将发送到相应的email-id(我们在创建新用户时给的)。如果我添加了任何有电子邮件的新用户说xxxx @ xxxx.com,邮件将成功发送到[email protected]。这里没有问题。在django的testcase中发送电子邮件时出错?

但是当我尝试编写一个用于添加新用户的测试用例时,我的代码中的电子邮件发送行中出现错误...即TypeError: __init__() takes at most 2 non-keyword arguments (6 given)。 下面的代码中给出,

#from my views.py, 

Email().send_email(settings.FORGOT_SUBJECT, emailmessage, [username], 
    settings.CONTENT_TYPE)` 

请记住我在这一行,而没有任何问题,从网页&邮件发送测试用例期间sucesfully.only收到错误在此行中创建的用户。

# code for SMTP connection 
class Email: 

    def __init__(self): 
     return; 

    def send_email(self, subject, message, recipients, contenttype): 
     """ 
     Send email using smtp connection. 
     """ 
     try: 
      from django.core.mail import EmailMessage, SMTPConnection, send_mail 
      from settings import EMAIL_HOST, EMAIL_HOST_USER, EMAIL_HOST_PASSWORD, EMAIL_PORT, EMAIL_USE_TLS 
     finally: 
      connection = SMTPConnection(EMAIL_HOST, EMAIL_PORT, EMAIL_HOST_USER, EMAIL_HOST_PASSWORD, EMAIL_USE_TLS) 
      emailMessage = EmailMessage(subject, message, settings.EMAIL_HOST_USER, recipients) 
      emailMessage.content_subtype = contenttype 
      connection.send_messages([emailMessage]) 

请给出任何解决方案,以避免此错误。

TypeError: __init__() takes at most 2 non-keyword arguments (6 given) 

在此先感谢。

+0

请发布回溯,以及您遇到问题的测试代码 –

回答

0

你似乎在写一些不是Python的东西。

__init__方法什么都不做。去掉它。

事实上,完全删除类。这不是Java:如果你不存储状态或封装功能,没有理由有一个类。只需使用send_email函数。