Example #1
0
def initialize_connection(connection: Optional[BaseEmailBackend] = None) -> BaseEmailBackend:
    if not connection:
        connection = get_connection()

    if connection.open():
        # If it's a new connection, no need to no-op to check connectivity
        return connection

    if isinstance(connection, EmailLogBackEnd) and not get_forward_address():
        # With the development environment backend and without a
        # configured forwarding address, we don't actually send emails.
        #
        # As a result, the connection cannot be closed by the server
        # (as there is none), and `connection.noop` is not
        # implemented, so we need to return the connection early.
        return connection

    # No-op to ensure that we don't return a connection that has been
    # closed by the mail server.
    if isinstance(connection, EmailBackend):
        try:
            status = connection.connection.noop()[0]
        except Exception:
            status = -1
        if status != 250:
            # Close and connect again.
            connection.close()
            connection.open()

    return connection
Example #2
0
def email_page(request: HttpRequest) -> HttpResponse:
    if request.method == 'POST':
        set_forward_address(request.POST["forward_address"])
        return json_success()
    try:
        with open(settings.EMAIL_CONTENT_LOG_PATH, "r+") as f:
            content = f.read()
    except FileNotFoundError:
        content = ""
    return render(request, 'zerver/email_log.html',
                  {'log': content,
                   'forward_address': get_forward_address()})
Example #3
0
def email_page(request: HttpRequest) -> HttpResponse:
    if request.method == 'POST':
        set_forward_address(request.POST["forward_address"])
        return json_success()
    try:
        with open(settings.EMAIL_CONTENT_LOG_PATH, "r+") as f:
            content = f.read()
    except FileNotFoundError:
        content = ""
    return render(request, 'zerver/email_log.html',
                  {'log': content,
                   'forward_address': get_forward_address()})
Example #4
0
def email_page(request: HttpRequest) -> HttpResponse:
    if request.method == "POST":
        set_forward_address(request.POST["forward_address"])
        return json_success(request)
    try:
        with open(settings.EMAIL_CONTENT_LOG_PATH, "r+") as f:
            content = f.read()
    except FileNotFoundError:
        content = ""
    return render(
        request,
        "zerver/development/email_log.html",
        {"log": content, "forward_address": get_forward_address()},
    )
    def test_forward_address_details(self) -> None:
        forward_address = "*****@*****.**"
        result = self.client_post("/emails/", {"forward_address": forward_address})
        self.assert_json_success(result)

        self.assertEqual(get_forward_address(), forward_address)

        with self.settings(EMAIL_BACKEND='zproject.email_backends.EmailLogBackEnd'), \
                mock.patch('logging.info', return_value=None):
            with mock.patch('zproject.email_backends.EmailLogBackEnd.send_email_smtp'):
                result = self.client_get('/emails/generate/')
                self.assertEqual(result.status_code, 302)
                self.assertIn('emails', result['Location'])
                result = self.client_get(result['Location'])
                self.assert_in_success_response([forward_address], result)
        os.remove(settings.FORWARD_ADDRESS_CONFIG_FILE)
Example #6
0
    def test_forward_address_details(self) -> None:
        forward_address = "*****@*****.**"
        result = self.client_post("/emails/", {"forward_address": forward_address})
        self.assert_json_success(result)

        self.assertEqual(get_forward_address(), forward_address)

        with self.settings(EMAIL_BACKEND='zproject.email_backends.EmailLogBackEnd'), \
                mock.patch('logging.info', return_value=None):
            with mock.patch('zproject.email_backends.EmailLogBackEnd.send_email_smtp'):
                result = self.client_get('/emails/generate/')
                self.assertEqual(result.status_code, 302)
                self.assertIn('emails', result['Location'])
                result = self.client_get(result['Location'])
                self.assert_in_success_response([forward_address], result)
        os.remove(settings.FORWARD_ADDRESS_CONFIG_FILE)
Example #7
0
    def test_forward_address_details(self) -> None:
        forward_address = "*****@*****.**"
        result = self.client_post("/emails/",
                                  {"forward_address": forward_address})
        self.assert_json_success(result)

        self.assertEqual(get_forward_address(), forward_address)

        with self.settings(
                EMAIL_BACKEND="zproject.email_backends.EmailLogBackEnd"):
            with mock.patch(
                    "zproject.email_backends.EmailBackend.send_messages"):
                result = self.client_get("/emails/generate/")
                self.assertEqual(result.status_code, 302)
                self.assertIn("emails", result["Location"])
                result = self.client_get(result["Location"])
                self.assert_in_success_response([forward_address], result)
        os.remove(settings.FORWARD_ADDRESS_CONFIG_FILE)