python 으로 간단하게 email 전송하기
참고로 email.py 라는 이름은 되도록 피하기 바란다.(참고 : Unable to import Python's email module at all - Stack Overflow)
# encoding=utf-8
# Import smtplib for the actual sending function
import smtplib
# Import the email modules we'll need
from email.mime.text import MIMEText
def main():
    textfile = 'sampletext.txt'
    me = 'sender-email@hbwhale.com'
    you = 'receiver-email@gmail.com'
    # Open a plain text file for reading.  For this example, assume that
    # the text file contains only ASCII characters.
    fp = open(textfile, 'rb')
    # Create a text/plain message
    msg = MIMEText(fp.read())
    fp.close()
    # me == the sender's email address
    # you == the recipient's email address
    msg['Subject'] = 'The contents of %s' % textfile
    msg['From'] = me
    msg['To'] = you
    # Send the message via our own SMTP server, but don't include the
    # envelope header.
    s = smtplib.SMTP('smtp.worksmobile.com', 587)
    s.login(me, 'password')
    s.sendmail(me, [you], msg.as_string())
    s.quit()
if __name__ == '__main__':
    main()
개인적인 자료
# encoding=utf-8
from __future__ import unicode_literals
# Import smtplib for the actual sending function
import smtplib, sys
# Import the email modules we'll need
from email.mime.text import MIMEText
# ================================================
#
#   Class
#
# ================================================
class SimpleEmail(object):
    def __init__(self, to=None):
        self.me = 'myemail@account.com'
        self.you = 'receiver@gmail.com' if to is None else to
        self.pw = 'myemail_password'
    def send(self, emailContent):
        
        # Create a text/plain message
        msg = MIMEText(emailContent)
        
        msg['Subject'] = 'The contents of %s' % emailContent
        msg['From'] = self.me
        msg['To'] = self.you
        # Send the message via our own SMTP server, but don't include the
        # envelope header.
        s = smtplib.SMTP('smtp.worksmobile.com', 587)
        s.ehlo() # it's for gmail
        s.starttls() # it's for gmail
        s.login(self.me, self.pw)
        s.sendmail(self.me, [self.you], msg.as_string())
        s.quit()
# ================================================
#
#   Decorator
#
# ================================================
def send_error_and_done_email(to=None):
    def dec(func):
        def dec_dec(*args, **kwargs):
            try:
                func(*args, **kwargs)
            except: # catch *all* exceptions
                e = sys.exc_info()[0]
                SimpleEmail(to=to).send(repr(e))   # send e-mail
                raise
            SimpleEmail().send('%s is done'%(str(func),))
            return
            
        return dec_dec
    return dec
gmail 이용시
기본적으로 google 이 unsecured app 에 대한 접근을 막고 있다. 그래서 이것을 풀어줘야 한다. (SMTP 로 login 하는 것이 unsecure 하긴 하니..) 아래 경로로 가면 된다.
개인적으로는 이정도까지 하면 gmail 을 사용할 수 있었다.
ref. 3 에서는 그밖에 captcha 등을 꺼야하는 등의 이야기도 있으니 참고하자.
그밖의
- linux 의 sendmail 을 사용하는 경우 : email - Sending mail via sendmail from python - Stack Overflow
 - image 를 삽입하는 경우 : python - Sending Multipart html emails which contain embedded images - Stack Overflow
 - file attach 하는 방법 : python - How to send email attachments? - Stack Overflow
 
Reference
- Using Python to Send Email
 - How to send an email with Gmail as provider using Python? - Stack Overflow
 - How to Send Emails with Gmail using Python
 
댓글 없음:
댓글 쓰기