This repository has been archived on 2023-02-21. You can view files and clone it, but cannot push or open issues or pull requests.
python-emails/emails/testsuite/smtp/test_smtp_backend.py

76 lines
2.5 KiB
Python

# encoding: utf-8
from __future__ import unicode_literals
import os
import pytest
import emails
from emails.backend.smtp import SMTPBackend
TRAVIS_CI = os.environ.get('TRAVIS')
SAMPLE_MESSAGE = {'html': '<p>Test from python-emails',
'text': 'Test from python-emails',
'mail_from': 's@lavr.me',
'mail_to': 'sergei-nko@yandex.ru',
'subject': 'Sample message'}
def test_send_to_unknown_host():
server = SMTPBackend(host='invalid-server.invalid-domain-42.com', port=2525)
response = server.sendmail(to_addrs='s@lavr.me', from_addr='s@lavr.me', msg=emails.html(**SAMPLE_MESSAGE))
server.close()
assert response.status_code is None
assert isinstance(response.error, IOError)
assert not response.success
print("response.error.errno=", response.error.errno)
if not TRAVIS_CI:
# IOError: [Errno 8] nodename nor servname provided, or not known
assert response.error.errno == 8
def test_smtp_send(smtp_servers):
"""
Check SMTPBackend.sendmail
"""
for tag, server in smtp_servers.items():
print("-- test_smtp_send: %s" % server)
smtp = server.params
smtp['fail_silently'] = True
response = server.patch_message(emails.html(**SAMPLE_MESSAGE)).send(smtp=server.params)
assert response.success or response.status_code == 421 # gmail sometimes fail sending
#message.smtp_pool[smtp].get_client().quit()
server.sleep()
def test_smtp_send_with_reconnect(smtp_servers):
"""
Check SMTPBackend.sendmail reconnect
"""
for tag, server in smtp_servers.items():
print("-- test_smtp_reconnect: %s" % server)
params = server.params
params['fail_silently'] = True
backend = SMTPBackend(**params)
backend.get_client().sock.close() # simulate disconnect
response = backend.sendmail(to_addrs=server.to_email,
from_addr=server.from_email,
msg=server.patch_message(emails.html(**SAMPLE_MESSAGE)))
assert response.success or response.status_code == 421 # gmail sometimes fail sending
server.sleep()
def test_smtp_init_error():
"""
Test error when ssl and tls arguments both set
"""
with pytest.raises(ValueError):
SMTPBackend(host='X', port=25, ssl=True, tls=True)
def test_smtp_empty_sendmail():
response = SMTPBackend().sendmail(to_addrs=[], from_addr='a@b.com', msg='')
assert not response