

Python3でsmtp.logを使ってGmailでメールを出そうとすると「AttributeError: module 'smtplib' has no
attribute 'SMTP'」と言われます。何が悪いか教えてください。

**batchMailerOne.py**

[code]

    #! /usr/bin/env python3
    #
    # batchMailerOne.py
    # -*- coding: utf-8 -*-
    
    #### START CUSTOMIZATION ####
    smtp_host     = 'smtp.gmail.com'
    smtp_port     = 587
    from_email    = 'foo <foo@example.com>'
    mail_subject  = 'bar'
    user_name     = 'xxxxx no such mail xxxxxxxxxx@gmail.com' # Gmail login name
    user_password = 'xxxxxxxxx' # Gmail psswd (2 steps authorization is not supported)
    
    # set mail address surrounded in double quote, ended with comma (you can send up to 100 mails a day)
    to_emails = [
            "recipient1 <recipient1@example.com>",
            "recipient2 <recipient2@example.com>",
            "recipient3 <recipient2@example.com>",
    ]
    
    # write your message between ''' and '''
    message_text = '''
    Dear someone,
    
    Hello
    '''
    
    ### END CUSTOMIZATION ###
    
    from email import message
    import smtplib
    
    server = smtplib.SMTP(smtp_host, smtp_port)
    server.ehlo()
    server.starttls()
    server.ehlo()
    server.login(user_name, user_password)
    
    for to_email in to_emails:
            msg            = message.EmailMessage()
            msg.set_content(message_text)
            msg['Subject'] = mail_subject
            msg['From']    = from_email
            msg['To']      = to_email
            server.send_message(msg)
    
    server.quit()
    
[/code]

**実行時のエラー**

[code]

    Traceback (most recent call last):
      File "C:\Users\cf\batchMailerOne.py", line 31, in <module>
        import smtplib
      File "C:\Users\cf\Anaconda3\lib\smtplib.py", line 49, in <module>
        import email.generator
      File "C:\Users\cf\Anaconda3\lib\email\generator.py", line 14, in <module>
        from copy import deepcopy
      File "C:\Users\cf\Anaconda3\lib\copy.py", line 60, in <module>
        from org.python.core import PyStringMap
      File "C:\Users\cf\batchMailerOne.py", line 39, in <module>
        server = smtplib.SMTP(smtp_host, smtp_port)
    AttributeError: module 'smtplib' has no attribute 'SMTP'
    
[/code]

**Python バージョン**

[code]

    C:\Users\cf>\Users\cf\Anaconda3\python.exe -V
    Python 3.6.3 :: Anaconda, Inc.
    
[/code]


CC BY-SA 4.0
2018-11-04T05:26:25.673
49945
2022-02-09T01:02:55.237
2020-11-21T06:09:28.173
3060
26673
question
python python3 gmail
Python: smtplib: エラー「AttributeError: module 'smtplib' has no attribute 'SMTP'」


私の(anacondaでない、素の)環境では、もっと先でエラーになりました。  
Anacondaで作成された環境に問題があると想像します。

[code]

    smtplib.SMTPAuthenticationError: (535, b'5.7.8 Username and Password not accepted. Learn more at
    5.7.8  https://support.google.com/mail/?p=BadCredentials t4-v6sm41336798pfh.45 - gsmtp')
    
[/code]


CC BY-SA 4.0
2018-11-04T08:36:59.880
49948
2018-11-04T08:36:59.880
652
49945
answer


もしかして、バイトコンパイルされた `org.pyc` というファイルが `batchMailer\Resources`
フォルダに残っていたりしないでしょうか？

\-- これは、[metropolis](https://ja.stackoverflow.com/users/16894/metropolis)
さんの[コメント](https://ja.stackoverflow.com/questions/49945/python-
smtplib-%E3%82%A8%E3%83%A9%E3%83%BC-attributeerror-module-smtplib-has-no-
attribute-smtp#comment52103_49945)をコミュニティ wiki 回答として投稿するものです。


CC BY-SA 4.0
2020-01-20T12:04:55.207
62395
2020-01-20T12:04:55.207
19110
49945
answer