V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
nihaorz
V2EX  ›  问与答

Python smtp 协议发送邮件贼鸡儿慢

  •  
  •   nihaorz · Jul 8, 2022 · 1996 views
    This topic created in 1389 days ago, the information mentioned may be changed or developed.

    小弟日常撸 java ,最近上手摸了一下 python ,搞搞自动 docker save 镜像、压缩上传、然后发送邮件通知

    到最后一步发送邮件了,用的 smtp 协议,结果发现发送邮件贼鸡儿慢,基本上 35 秒左右,但是我用 java 撸了一发,发现很快啊,5 秒内完事儿

    下面是我的代码:

    #!/usr/bin/python3
    
    import smtplib
    import traceback
    from email.mime.text import MIMEText
    from email.header import Header
    
    def send_html_email(smtp_host, smtp_port, use_ssl, from_addr, from_name, password, to_addrs, cc_addrs, subject, content):
        try:
            msg = MIMEText(content, _subtype='html', _charset='utf-8')
            msg['Subject'] = Header(subject, 'utf-8')
            msg['From'] = "{}<{}>".format(from_name, from_addr)
            msg['To'] = ",".join(to_addrs)
            msg['Cc'] = ",".join(cc_addrs)
            if use_ssl:
                smtp = smtplib.SMTP_SSL()
            else:
                smtp = smtplib.SMTP()
            smtp.connect(smtp_host, smtp_port)
            smtp.login(from_addr, password)
            smtp.sendmail(from_addr, to_addrs, msg.as_string())
        except:
            print("邮件发送失败")
            traceback.print_exc()
        finally:
            smtp.quit()
    
    
    if __name__ == '__main__':
    
        smtp_host = "mail.xxx.com.cn"
        smtp_port = 25
        from_addr = "[email protected]"
        from_name = "xxx"
        password = "xxx"
        to_addrs = ["[email protected]"]
        cc_addrs = ["[email protected]", "[email protected]"]
        subject = "python SMTP 测试邮件"
        content = '<a target="_blank" href="http://192.168.200.128">测试链接</a>'
    
        send_html_email(smtp_host, smtp_port, False, from_addr, from_name, password, to_addrs, cc_addrs, subject, content)
    
    

    用 126 邮箱、qq 邮箱、公司自己的邮箱发都一样的,35 秒左右,对比 java 5 秒左右,简直无地自容啊,各位彦祖指导一下,问题何在啊?先行谢过了

    说错了,代码打印了一下,java 是 500 毫秒左右,之前估算的,应该主观上加了编译的时间

    6 replies    2022-07-11 09:40:18 +08:00
    nihaorz
        1
    nihaorz  
    OP
       Jul 8, 2022
    说错了,代码打印了一下,java 是 500 毫秒左右,之前估算的,应该主观上加了编译的时间
    iikebug
        2
    iikebug  
       Jul 8, 2022
    这不应该吧,性能瓶颈怎么可能在这种情况碰到呢?
    CEBBCAT
        3
    CEBBCAT  
       Jul 8, 2022
    profile 一下呗
    awen233333
        4
    awen233333  
       Jul 10, 2022
    用你代码试了一下,QQ 邮箱 700 毫秒左右
    blankmiss
        5
    blankmiss  
       Jul 11, 2022 via iPhone
    为什么我感觉 java 很慢 用的 outlook
    nihaorz
        6
    nihaorz  
    OP
       Jul 11, 2022
    @iikebug @CEBBCAT @awen233333 今天上班又试了一下,一切正常了,那天估计是网络有问题,真是头秃啊,哈哈

    @blankmiss java 一直都挺好的,我这边没有问题,符合预期。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1005 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 19:09 · PVG 03:09 · LAX 12:09 · JFK 15:09
    ♥ Do have faith in what you're doing.