推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
taomujian
V2EX  ›  Python

用纯 Python 实现一个发送邮件的功能

  •  
  •   taomujian · Dec 15, 2020 · 6457 views
    This topic created in 1987 days ago, the information mentioned may be changed or developed.

    最近需要用 python 做一个发送邮件的功能,不用第三方邮箱的 api,怎么才能实现呢?用 python 的 smtpd 库并不会向第三方邮箱投递邮箱,只能看到发送的信息.欢迎各位指点一二.

    32 replies    2020-12-21 11:10:10 +08:00
    RRRoger
        1
    RRRoger  
       Dec 15, 2020   ❤️ 1
    `import smtplib`
    taomujian
        2
    taomujian  
    OP
       Dec 15, 2020
    @RRRoger 想要的是怎么利用 python 发送邮件到 qq 等第三方邮箱,smtplib 用这个库得配置第三方邮箱接口,不符合需求
    herojaxy
        4
    herojaxy  
       Dec 15, 2020
    直接用 socket 不就行了,了解下 smtp 协议,很简单的
    taomujian
        5
    taomujian  
    OP
       Dec 15, 2020
    @herojaxy 好的
    taomujian
        6
    taomujian  
    OP
       Dec 15, 2020
    @renmu123 这个也是要配置接口的吧....
    renmu123
        7
    renmu123  
       Dec 15, 2020
    @taomujian #6 不太明白你所说的配置接口是什么意思,需要配置发送者的 SMTP 地址和端口
    ningbo2018
        8
    ningbo2018  
       Dec 15, 2020
    https://github.com/yangningbo666/operation-tools/tree/master/mail-by-local 之前写的用的就是 smtplib,在 Linux 本地发送邮件,不使用别的第三方邮箱 api
    Tink
        9
    Tink  
    PRO
       Dec 15, 2020
    @taomujian #6 不配发件人发给 qq 邮箱,99.99%进垃圾箱
    taomujian
        10
    taomujian  
    OP
       Dec 15, 2020
    @renmu123 需求是不需要配置登陆的邮箱登陆等信息,就只有一个发件人地址,就是伪造邮箱的意思
    taomujian
        11
    taomujian  
    OP
       Dec 15, 2020
    @Tink 需要伪造一个不存在的发件人地址,进垃圾箱也没事,能收到就好
    taomujian
        12
    taomujian  
    OP
       Dec 15, 2020
    @ningbo2018 OK,我借鉴下
    ericgui
        13
    ericgui  
       Dec 15, 2020
    你还是用第三方专业的邮件服务吧
    会否则进垃圾箱的
    TimePPT
        14
    TimePPT  
    PRO
       Dec 15, 2020 via Android
    进垃圾箱是小,严重的直接把你 IP ban 了
    love
        15
    love  
       Dec 15, 2020 via Android
    自己搭的想发给 qq 你想多了,qq 过头的反垃圾邮件是吃素的吗
    taomujian
        16
    taomujian  
    OP
       Dec 15, 2020
    进垃圾箱也无妨
    GG668v26Fd55CP5W
        17
    GG668v26Fd55CP5W  
       Dec 15, 2020 via iPhone
    好像可以调用系统的邮件,Linux 默认是 sendmail,php 的 mail 函数默认就是这样的。
    GG668v26Fd55CP5W
        18
    GG668v26Fd55CP5W  
       Dec 15, 2020
    楼上的都是想当然了,实际上 QQ 邮箱并不会一定会拦截伪造的发件人,只会显示由 xxx 代发,当然那个代发的地址只是跑 sendmail 进程的用户和主机名。不会进垃圾箱,更没有封 ip 一说,以下是我的 wordpress 网站注册用户提醒邮件。

    https://i.loli.net/2020/12/15/EFI4LCe6onms3Ti.png
    TimePPT
        19
    TimePPT  
    PRO
       Dec 15, 2020 via Android
    @falcon05 并不是想当然,你大规模发送试试,分分钟被 ban,邮件反垃圾跟 IP 行为评级,发送频率等相关。偶尔发和大批量发送两码事。
    我最高做过日发送量 200 万的 edm,QQ 邮箱收信是最难的
    GG668v26Fd55CP5W
        20
    GG668v26Fd55CP5W  
       Dec 15, 2020 via iPhone   ❤️ 1
    @TimePPT 那不是单一因素了,大规模发送任何一个合格的邮件系统都有风控。目前我见过最严格的是 hotmail,连 digital ocean 的正常验证邮件都收不到。
    TimePPT
        21
    TimePPT  
    PRO
       Dec 15, 2020   ❤️ 1
    @falcon05 对的,ESP 运营商发垃圾策略基本上会考虑几十个因素上百种策略,如果大面积群发,至少要做好相应策略规避风险。
    比如因素有:IP 历史行为评级(历史垃圾 IP 黑名单)、MX 记录 /TXT 记录、IP 反解析、SPF 设置、DKIM 设置、发送频率、无效投递邮件占比、邮件内容敏感词、邮件内容外链评级(垃圾外链)、订阅邮件是否提供可退订选项……等等等等。
    都做好了,才有可能有比较好的投递效果。

    当然,感觉 LZ 不在乎 ╮(╯_╰)╭
    julyclyde
        22
    julyclyde  
       Dec 15, 2020
    20 年前的话倒是可以这么写
    taomujian
        23
    taomujian  
    OP
       Dec 15, 2020
    发送邮件是为了注册系统用的,能收到验证码就好,在不在垃圾箱不重要,不是商用,个人开发的小系统用,现在注册得配置第三方邮箱 api,太麻烦了..........
    Hilalum
        24
    Hilalum  
       Dec 15, 2020
    就多四个配置,不明白有什么麻烦的
    taomujian
        25
    taomujian  
    OP
       Dec 15, 2020
    @Hilalum 单纯的 4 行代码当然简单,但这种方式个人觉着不好用
    cz5424
        26
    cz5424  
       Dec 15, 2020 via iPhone
    @taomujian 后面做出来发现自己写的更不好用,但以学技术为目的,没事有时间造轮子肯定是没问题的,随便折腾吧
    tonyaiken
        27
    tonyaiken  
       Dec 16, 2020 via iPhone
    就是配置一下服务器地址账号密码端口有什么麻烦的,别人收不到邮件每次都来问你才麻烦。
    taomujian
        28
    taomujian  
    OP
       Dec 16, 2020
    @tonyaiken 配置这个东西本身不麻烦,而是这种方式麻烦
    tonyaiken
        29
    tonyaiken  
       Dec 16, 2020 via iPhone
    @taomujian 只有这种方式能保证送达率,不然随便一个服务器就可以发送巨量垃圾邮件
    huichao
        30
    huichao  
       Dec 19, 2020
    个人推荐使用第三方的,我们公司有用 Mailgun 和 SendGrid
    hxy100
        31
    hxy100  
       Dec 20, 2020
    不使用第三方提供的服务的话那你得自己搭建 SMTP 服务器,需要准备较权威的域名和 DNS 反向解析记录,否则是无法顺利发送的,接收方邮箱是 QQ,163 这些的话直接就拦截了。对方看不到。
    taomujian
        32
    taomujian  
    OP
       Dec 21, 2020
    @hxy100 是的,我是在机器上用安装的 postfix,然后用其他的域名达到了效果
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3022 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 89ms · UTC 14:39 · PVG 22:39 · LAX 07:39 · JFK 10:39
    ♥ Do have faith in what you're doing.