V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
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
xionghengheng
V2EX  ›  Python

有个关于 python 发邮件的问题

  •  
  •   xionghengheng · 2015-05-29 23:14:37 +08:00 · 4277 次点击
    这是一个创建于 3494 天前的主题,其中的信息可能已经有所发展或是发生改变。
    python的邮件模块可以指定的第三方的smtp服务器,在linux中,那我可不可以像php的mail函数那样直接指定为本机的smtp,host='localhhost'   这样能自动发邮件吗?
    19 条回复    2015-05-31 12:42:03 +08:00
    tigerstudent
        1
    tigerstudent  
       2015-05-30 01:31:41 +08:00 via Android
    按我的了解,那样需要你在本机建立smtp服务器
    cc7756789
        2
    cc7756789  
       2015-05-30 08:31:00 +08:00
    用Python调用Linux命令 os.system subprocess.Popen
    clino
        3
    clino  
       2015-05-30 09:55:16 +08:00 via Android
    可以!
    xionghengheng
        4
    xionghengheng  
    OP
       2015-05-30 10:02:44 +08:00
    @cc7756789 我知道linux有个mutt命令 尝试了 但是该命令不能直接发html 不满足需求啊
    xionghengheng
        5
    xionghengheng  
    OP
       2015-05-30 10:03:58 +08:00
    @clino 求个说法 哥们。。。。php实在恶心,怎么个使用法,我看python的邮件模块都是需要先connect然后login,而php得mail函数直接唰一下,就可以发
    111111111111
        6
    111111111111  
       2015-05-30 10:09:54 +08:00 via Android
    @xionghengheng 那是在php.ini配好了发送邮件的命令。

    同样的 你可以在Python自己写个mail 函数
    xionghengheng
        7
    xionghengheng  
    OP
       2015-05-30 10:13:08 +08:00
    @111111111111 哥们 咋写。。。
    loading
        8
    loading  
       2015-05-30 10:22:09 +08:00
    看看 mailgun 文档。
    clino
        9
    clino  
       2015-05-30 10:22:30 +08:00
    knktc
        10
    knktc  
       2015-05-30 10:28:54 +08:00
    用python就要常找找有没有现成的模块,比如这个sender模块,已经非常简单了 http://sender.readthedocs.org/en/latest/
    n37r06u3
        11
    n37r06u3  
       2015-05-30 10:32:05 +08:00
    本地装个postfix发信
    xionghengheng
        12
    xionghengheng  
    OP
       2015-05-30 10:38:24 +08:00
    @clino 给力啊 哥们
    xionghengheng
        13
    xionghengheng  
    OP
       2015-05-30 10:38:38 +08:00
    @knktc 速度看看 感谢
    clino
        14
    clino  
       2015-05-30 10:50:30 +08:00
    xionghengheng
        15
    xionghengheng  
    OP
       2015-05-30 18:31:47 +08:00
    @clino 哥们 没用 报错
    Traceback (most recent call last):
    File "haha.py", line 2, in <module>
    server = smtplib.SMTP('localhost')
    File "/home/users/wuzengxiong/.jumbo/lib/python2.7/smtplib.py", line 249, in __init__
    (code, msg) = self.connect(host, port)
    File "/home/users/wuzengxiong/.jumbo/lib/python2.7/smtplib.py", line 309, in connect
    self.sock = self._get_socket(host, port, self.timeout)
    File "/home/users/wuzengxiong/.jumbo/lib/python2.7/smtplib.py", line 284, in _get_socket
    return socket.create_connection((port, host), timeout)
    File "/home/users/wuzengxiong/.jumbo/lib/python2.7/socket.py", line 571, in create_connection
    raise err
    socket.error: [Errno 111] Connection refused
    xionghengheng
        16
    xionghengheng  
    OP
       2015-05-30 18:39:49 +08:00
    mail.force_extra_parameters => no value => no value
    sendmail_from => no value => no value
    sendmail_path => /usr/sbin/sendmail -t -i => /usr/sbin/sendmail -t -i
    Path to sendmail => /usr/sbin/sendmail -t -i
    MAIL => /var/spool/mail/wuzengxiong
    _SERVER["MAIL"] => /var/spool/mail/wuzengxiong
    _ENV["MAIL"] => /var/spool/mail/wuzengxiong

    php.ini的配置
    xionghengheng
        17
    xionghengheng  
    OP
       2015-05-30 18:46:57 +08:00
    @knktc 你这也不能用本机smtp啊 也被拒绝
    clino
        18
    clino  
       2015-05-30 19:50:13 +08:00
    你这两个配置的是什么?
    _SERVER["MAIL"] => /var/spool/mail/wuzengxiong
    _ENV["MAIL"] => /var/spool/mail/wuzengxiong
    我是说 /var/spool/mail/wuzengxiong 里的内容

    不过php的我完全不了解...
    mengzhuo
        19
    mengzhuo  
       2015-05-31 12:42:03 +08:00
    LS说得都不对!!!
    发邮件其实根本不需要本地建MTA(邮件传输代理), 不想花大钱也可以自己建。

    smtplib就是和smtp服务器沟通用的!!!
    所以,你只需要知道对方邮箱域名,通过MX记录查询,然后扔进去就行了,没那么多问题

    当然,要保证送达率,首先得有稳定的IP,必须有DKIM、SPF,更高的话就需要DRAMC、SPF、Reverse DNS record了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2965 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 13:15 · PVG 21:15 · LAX 05:15 · JFK 08:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.