Ошибка при отправке электронной почты во время тестового примера в django?

У меня есть простое приложение django, которое позволяет пользователям добавлять нового пользователя. Всякий раз, когда мы создаем нового пользователя, почта будет отправляться на соответствующий адрес электронной почты (то, что мы дали при создании нового пользователя). Если я добавил нового пользователя с электронной почтой скажем [email protected], письмо будет успешно отправлено на [email protected]. У меня нет проблем.

Но когда я пытаюсь написать тестовый пример для добавления нового пользователя, я получаю ошибку в строке отправки электронной почты в моем коде... т.е. 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)`

Пожалуйста, помните, что у меня нет проблем в этой строке, когда я создал пользователя с веб-страницы, и почта успешно отправлена. Только ошибка в этой строке во время теста.

# 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)

Заранее спасибо.


person mani    schedule 20.09.2011    source источник
comment
Пожалуйста, опубликуйте обратную трассировку и тестовый код, с которым вы видите проблему.   -  person Malcolm Box    schedule 20.09.2011


Ответы (1)


Похоже, вы пишете что-то, что не является Python.

Этот метод __init__ ничего не делает. Убери это.

На самом деле, удалить класс вообще. Это не Java: если вы не сохраняете состояние или не инкапсулируете функциональность, нет причин иметь класс. Просто используйте функцию send_email отдельно.

person Daniel Roseman    schedule 20.09.2011