kootenpv / yagmail

Send email in Python conveniently for gmail using yagmail
MIT License
2.66k stars 265 forks source link

SMTP instance has no attribute 'is_closed'" #61

Open Euphorbium opened 7 years ago

Euphorbium commented 7 years ago

I am using click python package to parse command line arguments. When using it with yagmail, I get this error.

Traceback (most recent call last):
  File "/Users/euphorbium/PyCharmProjects/birthdaynotifier/test.py", line 12, in <module>
    send_mail()
  File "/Users/euphorbium/miniconda3/envs/birthdays/lib/python2.7/site-packages/click/core.py", line 716, in __call__
    return self.main(*args, **kwargs)
  File "/Users/euphorbium/miniconda3/envs/birthdays/lib/python2.7/site-packages/click/core.py", line 696, in main
    rv = self.invoke(ctx)
  File "/Users/euphorbium/miniconda3/envs/birthdays/lib/python2.7/site-packages/click/core.py", line 889, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/euphorbium/miniconda3/envs/birthdays/lib/python2.7/site-packages/click/core.py", line 534, in invoke
    return callback(*args, **kwargs)
  File "/Users/euphorbium/PyCharmProjects/birthdaynotifier/test.py", line 8, in send_mail
    yag = yagmail.SMTP(un, pw).send('mail@gmail.com', 'test', 'test')
  File "/Users/euphorbium/miniconda3/envs/birthdays/lib/python2.7/site-packages/yagmail/yagmail.py", line 54, in __init__
    self.user, self.useralias = self._make_addr_alias_user(user)
  File "/Users/euphorbium/miniconda3/envs/birthdays/lib/python2.7/site-packages/yagmail/yagmail.py", line 305, in _make_addr_alias_user
    raise YagAddressError
yagmail.error.YagAddressError
Exception AttributeError: "SMTP instance has no attribute 'is_closed'" in <bound method SMTP.__del__ of <yagmail.yagmail.SMTP instance at 0x102f6c098>> ignored

Here is the example program:

import yagmail
import click

@click.command()
@click.option('--un', help='Your gmail username')
@click.option('--pw', help='Your gmail password')
def send_mail(un, pw):
    yag = yagmail.SMTP(un, pw)

    yag.send('mail@gmail.com', 'test', 'test')

if __name__ == '__main__':
    send_mail()
doglex commented 7 years ago

+1

kootenpv commented 7 years ago

It's quite harmless, but I think I solved it. Note that the actual problem in your code is the yagmail.error.YagAddressError.

See if you get the AttributeError after an upgrade: pip install -U --no-cache yagmail