chiadog icon indicating copy to clipboard operation
chiadog copied to clipboard

Smtp error in chiadog's notification, but send emial using Smtp directly is work normal.

Open tedzhang2891 opened this issue 3 years ago • 2 comments

Describe the bug

I don't why when the chiadog try to send notification through smtp I got below error. seems the network is not connected to internet, but whan I try to send email directly through python code also with smtp is successed.

[2021-05-11 01:13:17] [ WARNING] --- Experiencing networking issues? Skipped 2+ signage points in the last hour. (non_skipped_signage_points.py:46)
--- Logging error ---
Traceback (most recent call last):
  File "/usr/lib/python3.8/smtplib.py", line 391, in getreply
    line = self.file.readline(_MAXLINE + 1)
  File "/usr/lib/python3.8/socket.py", line 669, in readinto
    return self._sock.recv_into(b)
socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/chiadog/src/notifier/smtp_notifier.py", line 55, in send_events_to_user
    server = smtplib.SMTP(self.host, self.port, timeout=self._conn_timeout_seconds)
  File "/usr/lib/python3.8/smtplib.py", line 253, in __init__
    (code, msg) = self.connect(host, port)
  File "/usr/lib/python3.8/smtplib.py", line 341, in connect
    (code, msg) = self.getreply()
  File "/usr/lib/python3.8/smtplib.py", line 394, in getreply
    raise SMTPServerDisconnected("Connection unexpectedly closed: "
smtplib.SMTPServerDisconnected: Connection unexpectedly closed: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.8/logging/__init__.py", line 1081, in emit
    msg = self.format(record)
  File "/usr/lib/python3.8/logging/__init__.py", line 925, in format
    return fmt.format(record)
  File "/usr/lib/python3.8/logging/__init__.py", line 664, in format
    record.message = record.getMessage()
  File "/usr/lib/python3.8/logging/__init__.py", line 369, in getMessage
    msg = msg % self.args
TypeError: not all arguments converted during string formatting
Call stack:
  File "/usr/lib/python3.8/threading.py", line 890, in _bootstrap
    self._bootstrap_inner()
  File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.8/threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "/chiadog/src/chia_log/log_consumer.py", line 80, in _consume_loop
    self._notify_subscribers(log_line)
  File "/chiadog/src/chia_log/log_consumer.py", line 50, in _notify_subscribers
    subscriber.consume_logs(logs)
  File "/chiadog/src/chia_log/log_handler.py", line 37, in consume_logs
    self._notify_manager.process_events(events)
  File "/chiadog/src/notifier/notify_manager.py", line 61, in process_events
    if not self._notifiers[key].send_events_to_user(events):
  File "/chiadog/src/notifier/smtp_notifier.py", line 65, in send_events_to_user
    logging.error("SMTP Notify Error: ", e)
Message: 'SMTP Notify Error: '
Arguments: (SMTPServerDisconnected('Connection unexpectedly closed: timed out'),)
[2021-05-11 01:13:27] [   ERROR] --- Failed to send events over smtp (notify_manager.py:62)

This is my python3 code for send email directly in docker, that can access internet with no error.

babybear@chiah001:~$ cat sendemail.py 
import smtplib, ssl

#port = 587  # For SSL
port = 465
password = "******"
smtp_server = "smtp.163.com"
sender_email = "******@163.com"  # Enter your address
receiver_email = "******@163.com"  # Enter receiver address
message = """\
Subject: Hi there

This message is sent from docker."""

context = ssl.create_default_context()
with smtplib.SMTP_SSL(smtp_server, port, context=context) as server:
    server.login(sender_email, password)
    server.sendmail(sender_email, receiver_email, message)

Environment:

  • OS: Ubuntu, chiadog in docker
  • Python version: 3.8.5
  • PIP version: 20.0.2
  • Chia version: 1.1.5

tedzhang2891 avatar May 11 '21 03:05 tedzhang2891

Addition information: I did the unittest but can not passed.

(venv) root@6570351871dd:/chiadog# python -m unittest tests.notifier.test_smtp_notifier 
--- Logging error ---
Traceback (most recent call last):
  File "/usr/lib/python3.8/smtplib.py", line 391, in getreply
    line = self.file.readline(_MAXLINE + 1)
  File "/usr/lib/python3.8/socket.py", line 669, in readinto
    return self._sock.recv_into(b)
socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/chiadog/src/notifier/smtp_notifier.py", line 55, in send_events_to_user
    server = smtplib.SMTP(self.host, self.port, timeout=self._conn_timeout_seconds)
  File "/usr/lib/python3.8/smtplib.py", line 253, in __init__
    (code, msg) = self.connect(host, port)
  File "/usr/lib/python3.8/smtplib.py", line 341, in connect
    (code, msg) = self.getreply()
  File "/usr/lib/python3.8/smtplib.py", line 394, in getreply
    raise SMTPServerDisconnected("Connection unexpectedly closed: "
smtplib.SMTPServerDisconnected: Connection unexpectedly closed: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.8/logging/__init__.py", line 1081, in emit
    msg = self.format(record)
  File "/usr/lib/python3.8/logging/__init__.py", line 925, in format
    return fmt.format(record)
  File "/usr/lib/python3.8/logging/__init__.py", line 664, in format
    record.message = record.getMessage()
  File "/usr/lib/python3.8/logging/__init__.py", line 369, in getMessage
    msg = msg % self.args
TypeError: not all arguments converted during string formatting
Call stack:
  File "/usr/lib/python3.8/runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.8/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/usr/lib/python3.8/unittest/__main__.py", line 18, in <module>
    main(module=None)
  File "/usr/lib/python3.8/unittest/main.py", line 101, in __init__
    self.runTests()
  File "/usr/lib/python3.8/unittest/main.py", line 271, in runTests
    self.result = testRunner.run(self.test)
  File "/usr/lib/python3.8/unittest/runner.py", line 176, in run
    test(result)
  File "/usr/lib/python3.8/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.8/unittest/suite.py", line 122, in run
    test(result)
  File "/usr/lib/python3.8/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.8/unittest/suite.py", line 122, in run
    test(result)
  File "/usr/lib/python3.8/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.8/unittest/suite.py", line 122, in run
    test(result)
  File "/usr/lib/python3.8/unittest/case.py", line 736, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.8/unittest/case.py", line 676, in run
    self._callTestMethod(testMethod)
  File "/usr/lib/python3.8/unittest/case.py", line 633, in _callTestMethod
    method()
  File "/chiadog/tests/notifier/test_smtp_notifier.py", line 51, in testSMTPNormalPriorityNotifications
    success = self.notifier.send_events_to_user(events=DummyEvents.get_normal_priority_events())
  File "/chiadog/src/notifier/smtp_notifier.py", line 65, in send_events_to_user
    logging.error("SMTP Notify Error: ", e)
Message: 'SMTP Notify Error: '
Arguments: (SMTPServerDisconnected('Connection unexpectedly closed: timed out'),)
F--- Logging error ---
Traceback (most recent call last):
  File "/usr/lib/python3.8/smtplib.py", line 391, in getreply
    line = self.file.readline(_MAXLINE + 1)
  File "/usr/lib/python3.8/socket.py", line 669, in readinto
    return self._sock.recv_into(b)
socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/chiadog/src/notifier/smtp_notifier.py", line 55, in send_events_to_user
    server = smtplib.SMTP(self.host, self.port, timeout=self._conn_timeout_seconds)
  File "/usr/lib/python3.8/smtplib.py", line 253, in __init__
    (code, msg) = self.connect(host, port)
  File "/usr/lib/python3.8/smtplib.py", line 341, in connect
    (code, msg) = self.getreply()
  File "/usr/lib/python3.8/smtplib.py", line 394, in getreply
    raise SMTPServerDisconnected("Connection unexpectedly closed: "
smtplib.SMTPServerDisconnected: Connection unexpectedly closed: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.8/logging/__init__.py", line 1081, in emit
    msg = self.format(record)
  File "/usr/lib/python3.8/logging/__init__.py", line 925, in format
    return fmt.format(record)
  File "/usr/lib/python3.8/logging/__init__.py", line 664, in format
    record.message = record.getMessage()
  File "/usr/lib/python3.8/logging/__init__.py", line 369, in getMessage
    msg = msg % self.args
TypeError: not all arguments converted during string formatting
Call stack:
  File "/usr/lib/python3.8/runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.8/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/usr/lib/python3.8/unittest/__main__.py", line 18, in <module>
    main(module=None)
  File "/usr/lib/python3.8/unittest/main.py", line 101, in __init__
    self.runTests()
  File "/usr/lib/python3.8/unittest/main.py", line 271, in runTests
    self.result = testRunner.run(self.test)
  File "/usr/lib/python3.8/unittest/runner.py", line 176, in run
    test(result)
  File "/usr/lib/python3.8/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.8/unittest/suite.py", line 122, in run
    test(result)
  File "/usr/lib/python3.8/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.8/unittest/suite.py", line 122, in run
    test(result)
  File "/usr/lib/python3.8/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.8/unittest/suite.py", line 122, in run
    test(result)
  File "/usr/lib/python3.8/unittest/case.py", line 736, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.8/unittest/case.py", line 676, in run
    self._callTestMethod(testMethod)
  File "/usr/lib/python3.8/unittest/case.py", line 633, in _callTestMethod
    method()
  File "/chiadog/tests/notifier/test_smtp_notifier.py", line 56, in testSTMPHighPriorityNotifications
    success = self.notifier.send_events_to_user(events=DummyEvents.get_high_priority_events())
  File "/chiadog/src/notifier/smtp_notifier.py", line 65, in send_events_to_user
    logging.error("SMTP Notify Error: ", e)
Message: 'SMTP Notify Error: '
Arguments: (SMTPServerDisconnected('Connection unexpectedly closed: timed out'),)
F--- Logging error ---
Traceback (most recent call last):
  File "/usr/lib/python3.8/smtplib.py", line 391, in getreply
    line = self.file.readline(_MAXLINE + 1)
  File "/usr/lib/python3.8/socket.py", line 669, in readinto
    return self._sock.recv_into(b)
socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/chiadog/src/notifier/smtp_notifier.py", line 55, in send_events_to_user
    server = smtplib.SMTP(self.host, self.port, timeout=self._conn_timeout_seconds)
  File "/usr/lib/python3.8/smtplib.py", line 253, in __init__
    (code, msg) = self.connect(host, port)
  File "/usr/lib/python3.8/smtplib.py", line 341, in connect
    (code, msg) = self.getreply()
  File "/usr/lib/python3.8/smtplib.py", line 394, in getreply
    raise SMTPServerDisconnected("Connection unexpectedly closed: "
smtplib.SMTPServerDisconnected: Connection unexpectedly closed: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.8/logging/__init__.py", line 1081, in emit
    msg = self.format(record)
  File "/usr/lib/python3.8/logging/__init__.py", line 925, in format
    return fmt.format(record)
  File "/usr/lib/python3.8/logging/__init__.py", line 664, in format
    record.message = record.getMessage()
  File "/usr/lib/python3.8/logging/__init__.py", line 369, in getMessage
    msg = msg % self.args
TypeError: not all arguments converted during string formatting
Call stack:
  File "/usr/lib/python3.8/runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.8/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/usr/lib/python3.8/unittest/__main__.py", line 18, in <module>
    main(module=None)
  File "/usr/lib/python3.8/unittest/main.py", line 101, in __init__
    self.runTests()
  File "/usr/lib/python3.8/unittest/main.py", line 271, in runTests
    self.result = testRunner.run(self.test)
  File "/usr/lib/python3.8/unittest/runner.py", line 176, in run
    test(result)
  File "/usr/lib/python3.8/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.8/unittest/suite.py", line 122, in run
    test(result)
  File "/usr/lib/python3.8/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.8/unittest/suite.py", line 122, in run
    test(result)
  File "/usr/lib/python3.8/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.8/unittest/suite.py", line 122, in run
    test(result)
  File "/usr/lib/python3.8/unittest/case.py", line 736, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.8/unittest/case.py", line 676, in run
    self._callTestMethod(testMethod)
  File "/usr/lib/python3.8/unittest/case.py", line 633, in _callTestMethod
    method()
  File "/chiadog/tests/notifier/test_smtp_notifier.py", line 46, in testSTMPLowPriorityNotifications
    success = self.notifier.send_events_to_user(events=DummyEvents.get_low_priority_events())
  File "/chiadog/src/notifier/smtp_notifier.py", line 65, in send_events_to_user
    logging.error("SMTP Notify Error: ", e)
Message: 'SMTP Notify Error: '
Arguments: (SMTPServerDisconnected('Connection unexpectedly closed: timed out'),)
--- Logging error ---
Traceback (most recent call last):
  File "/usr/lib/python3.8/smtplib.py", line 391, in getreply
    line = self.file.readline(_MAXLINE + 1)
  File "/usr/lib/python3.8/socket.py", line 669, in readinto
    return self._sock.recv_into(b)
socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/chiadog/src/notifier/smtp_notifier.py", line 55, in send_events_to_user
    server = smtplib.SMTP(self.host, self.port, timeout=self._conn_timeout_seconds)
  File "/usr/lib/python3.8/smtplib.py", line 253, in __init__
    (code, msg) = self.connect(host, port)
  File "/usr/lib/python3.8/smtplib.py", line 341, in connect
    (code, msg) = self.getreply()
  File "/usr/lib/python3.8/smtplib.py", line 394, in getreply
    raise SMTPServerDisconnected("Connection unexpectedly closed: "
smtplib.SMTPServerDisconnected: Connection unexpectedly closed: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.8/logging/__init__.py", line 1081, in emit
    msg = self.format(record)
  File "/usr/lib/python3.8/logging/__init__.py", line 925, in format
    return fmt.format(record)
  File "/usr/lib/python3.8/logging/__init__.py", line 664, in format
    record.message = record.getMessage()
  File "/usr/lib/python3.8/logging/__init__.py", line 369, in getMessage
    msg = msg % self.args
TypeError: not all arguments converted during string formatting
Call stack:
  File "/usr/lib/python3.8/runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.8/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/usr/lib/python3.8/unittest/__main__.py", line 18, in <module>
    main(module=None)
  File "/usr/lib/python3.8/unittest/main.py", line 101, in __init__
    self.runTests()
  File "/usr/lib/python3.8/unittest/main.py", line 271, in runTests
    self.result = testRunner.run(self.test)
  File "/usr/lib/python3.8/unittest/runner.py", line 176, in run
    test(result)
  File "/usr/lib/python3.8/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.8/unittest/suite.py", line 122, in run
    test(result)
  File "/usr/lib/python3.8/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.8/unittest/suite.py", line 122, in run
    test(result)
  File "/usr/lib/python3.8/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.8/unittest/suite.py", line 122, in run
    test(result)
  File "/usr/lib/python3.8/unittest/case.py", line 736, in __call__
    return self.run(*args, **kwds)
  File "/usr/lib/python3.8/unittest/case.py", line 676, in run
    self._callTestMethod(testMethod)
  File "/usr/lib/python3.8/unittest/case.py", line 633, in _callTestMethod
    method()
  File "/chiadog/tests/notifier/test_smtp_notifier.py", line 46, in testSTMPLowPriorityNotifications
    success = self.notifier.send_events_to_user(events=DummyEvents.get_low_priority_events())
  File "/chiadog/src/notifier/smtp_notifier.py", line 65, in send_events_to_user
    logging.error("SMTP Notify Error: ", e)
Message: 'SMTP Notify Error: '
Arguments: (SMTPServerDisconnected('Connection unexpectedly closed: timed out'),)
F
======================================================================
FAIL: testSMTPNormalPriorityNotifications (tests.notifier.test_smtp_notifier.TestSMTPNotifier)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/chiadog/tests/notifier/test_smtp_notifier.py", line 52, in testSMTPNormalPriorityNotifications
    self.assertTrue(success)
AssertionError: False is not true

======================================================================
FAIL: testSTMPHighPriorityNotifications (tests.notifier.test_smtp_notifier.TestSMTPNotifier)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/chiadog/tests/notifier/test_smtp_notifier.py", line 57, in testSTMPHighPriorityNotifications
    self.assertTrue(success)
AssertionError: False is not true

======================================================================
FAIL: testSTMPLowPriorityNotifications (tests.notifier.test_smtp_notifier.TestSMTPNotifier)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/chiadog/tests/notifier/test_smtp_notifier.py", line 47, in testSTMPLowPriorityNotifications
    self.assertTrue(success)
AssertionError: False is not true

----------------------------------------------------------------------
Ran 3 tests in 40.186s

FAILED (failures=3)

tedzhang2891 avatar May 11 '21 05:05 tedzhang2891

I actually called this out in #98 that ssl wouldnt work, only TLS.

kungfoome avatar May 11 '21 12:05 kungfoome