IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Python 邮件发送脚本

    Fish (fsh267@gmail.com)发表于 2014-04-21 00:00:00
    love 0

    今天补充完测试用例, 正好有一大把空闲的时间, 可以用来个Python发送邮件的脚本, 最烦的就是登陆卡卡的Gmail, 发送邮件了。 登陆网页查询单词, 发送飞信等常用操作行为, 我尽量用Python搞定, 所以说, 世界是靠懒人推动的!

    比较闹心的是, 使用smtplib模块登陆Gmail, 只能用python x.py 执行, 不可以修改权限后 ./x.py 执行, 否则会爆出如下错误:

    smtplib.SMTPException: SMTP AUTH extension not supported by server.

    就这个东西,卡了我好几个小时!!

    代码如下:

    #!/usr/bin/python
    #coding : utf-8
    import sys
    import smtplib
    #init server
    USAGE = ''
    The usages are blow:
    
    python mailto *@xx.com -t 'this is title' -c 'this is content'
    or
    python mailto *@xx.com -c 'this is content'
    ''
    
    SERVER = 'smtp.gmail.com'
    PORT = 587
    USER = 'f7@gmail.com'
    GF = '4@qq.com'
    PASSWD = '03'
    
    def send_email(receiver, msg):
    
       # print PASSWD, USER
        try:
            smtp = smtplib.SMTP(SERVER, PORT) 
            smtp.ehlo()
            smtp.starttls()
            smtp.login(USER, PASSWD)
            smtp.sendmail(USER, receiver, msg) 
            print 'Success!'
        except: 
            print 'failed to send'
    
    def main():
        length = len(sys.argv)
    #    print length
        if not (length == 6 or length == 4):
            print USAGE
            return 
    
        if sys.argv[1] == 'me':
            receiver = USER
        elif sys.argv[1] == 'love':
            receiver = GF
        else:
            receiver = sys.argv[1]
    
    #    print receiver
        if length == 4 and sys.argv[2] == '-c':
            headers  = '\r\n'.join([
                'from: ' + USER,
                'subject: ' + 'An email from ' + USER,
                'to: ' + receiver,
                'mime-version: 1.0',
                'content-type: text/html'
                ])
            content = headers + '\r\n\r\n' + sys.argv[3] 
        if length == 6 and sys.argv[2] == '-t':
            headers  = '\r\n'.join([
                'from: ' + USER,
                'subject: ' + sys.argv[3],
                'to: ' + receiver,
                'mime-version: 1.0',
                'content-type: text/html'
                ])
            content = headers + '\r\n\r\n' + sys.argv[5] 
        try:
            send_email(receiver, content) 
        except:
            print 'failed to send email'
            print USAGE
    if __name__ == '__main__':
        main()        

    #END



沪ICP备19023445号-2号
友情链接