2011-09-20 3 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)` 

PLS 내가이 라인 동안 아무런 문제가 웹 페이지 & 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]) 

Pls는이 오류를 피하기 위해 해결책을 제시합니다.

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

미리 감사드립니다.

+0

문제를보고있는 테스트 코드와 백 트레이스를 게시하십시오. –

답변

0

당신은 파이썬이 아닌 것을 쓰고있는 것처럼 보입니다.

__init__ 메서드는 아무 것도 수행하지 않습니다. 그것을 제거하십시오.

실제로 클래스를 모두 제거하십시오. 이것은 Java가 아닙니다. 상태를 저장하지 않거나 기능을 캡슐화하지 않으면 클래스를 가질 이유가 없습니다. 그 자체만으로 send_email 기능을 사용하십시오.

관련 문제