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
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()})
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)
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)