python发邮件

来源:互联网 发布:娃娃学编程 书籍 编辑:程序博客网 时间:2024/04/29 12:13

python安装新的库,比如smtplib ,安装之后python才能正常使用”import smtplib”

sudo pip search smtplib sudo pip install PyEmail

python发邮件代码

#!/usr/bin/python3import smtplibfrom email.mime.text import MIMETextfrom email.header import Header# 第三方 SMTP 服务,目前支持发邮件的只有smtp#pop和IMAP是用来收邮件的mail_host="smtp.XXX.com"  #设置smtp服务器mail_user="XXXX"    #用户名mail_pass="XXXXXX"   #口令 sender = mail_user   #应该是跟mail_user一样,否则发送失败receivers = ['573270407@qq.com']  # 接收邮件,可设置为你的QQ邮箱或者其他邮箱mail_msg = """<p>Python 邮件发送测试...</p><p><a href="http://www.runoob.com">这是一个链接</a></p>"""r=open("1.html")    #连接一个文件             mail_msg =r.read()  #读取文件的内容message = MIMEText(mail_msg, 'html', 'utf-8')message['From'] = Header("菜鸟教程", 'utf-8')#发件人名字message['To'] =  Header("测试", 'utf-8')#收件人名字subject = 'Python SMTP 邮件测试' message['Subject'] = Header(subject, 'utf-8') #邮件标题try:#错误验证    smtpObj = smtplib.SMTP() #开启smtp服务    smtpObj.connect(mail_host, 25)    #连接smtp服务器, 25 为 SMTP 端口号    smtpObj.login(mail_user,mail_pass)  #邮箱登录    smtpObj.sendmail(sender, receivers, message.as_string())  #发送地址,接收地址,消息内容    print ("邮件发送成功")except smtplib.SMTPException:    print ("Error: 无法发送邮件")

改进

#!/usr/bin/python3import smtplibfrom email.mime.text import MIMETextfrom email.header import Header# 第三方 SMTP 服务mail_host="smtp.mxhichina.com"  #设置服务器mail_user="df@df315.top"    #用户名mail_pass="Iwillnevertellyoupassword"   #口令  sender = mail_user   #应该是跟mail_user一样,否则发送失败receivers = ['573270407@qq.com']  # 接收邮件,可设置为你的QQ邮箱或者其他邮箱mail_msg = """<p>Python 邮件发送测试...</p><p><a href="http://www.runoob.com">这是一个链接</a></p>"""      #html代码,python读取外部文件的中文会报错,算了,就写在这儿吧!message = MIMEText(mail_msg, 'html', 'utf-8')message['From'] = Header("Df", 'utf-8')#发件人名字message['To'] =  Header("Dfer", 'utf-8')#收件人名字subject = '你好,世界' message['Subject'] = Header(subject, 'utf-8') #邮件标题try:#错误验证    smtpObj = smtplib.SMTP() #开启smtp服务    smtpObj.connect(mail_host, 25)    #连接smtp服务器, 25 为 SMTP 端口号    smtpObj.login(mail_user,mail_pass)  #邮箱登录    smtpObj.sendmail(sender, receivers, message.as_string())  #发送地址,接收地址,消息内容    print ("邮件发送成功")except smtplib.SMTPException:    print ("Error: 无法发送邮件")

邮件服务器设置

阿里巴巴企业云邮箱各个服务器地址及端口信息如下:收件服务器地址:POP 服务器地址:pop3.mxhichina.com 端口110,SSL 加密端口995或IMAP 服务器地址:imap.mxhichina.com 端口143,SSL 加密端口993发件服务器地址:SMTP 服务器地址:smtp.mxhichina.com 端口25, SSL 加密端口465

值得一提的是
OSX有个mail命令可以直接发邮件,脱离邮件服务器的限制
格式如下:
mail -s df 573270407@qq.com < df
发出去的地址是:
df@DfdeMacBook-Air.local
对方收到信之后是无法回复的,也就只能发信,不能收信
这种形式跟传统的连接邮件服务器发邮件的方式不同,不需要登录名和密码