设为首页 收藏本站
查看: 979|回复: 0

[经验分享] python发邮件的代码

[复制链接]

尚未签到

发表于 2017-4-29 09:32:17 | 显示全部楼层 |阅读模式
  写了个发邮件的python代码:
# -*- coding: utf-8 -*-
#
=================================================
#
#
   描述:    KEmail 发送邮件类
#
#
   作者:    hechangmin
#
#
   时间:    2008-05-30 
#
#
=================================================

import email
import mimetypes
from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from email.MIMEImage import MIMEImage
import smtplib
from logger import klog

def sendmail(paramMap):
    
    smtp 
= smtplib.SMTP()
    msgRoot 
= MIMEMultipart('related')
    msgAlternative 
= MIMEMultipart('alternative')
    
if paramMap.has_key("server"and paramMap.has_key("user"and paramMap.has_key("password"):
        
try:
            smtp.set_debuglevel(
1)
            smtp.connect(paramMap[
"server"])
            smtp.login(paramMap[
"user"], paramMap["password"])
        
except:
            klog.error(
"smtp login exception!")
            
return False
    
else:
        klog.error(
"Parameters incomplete!")
        
return False
    
#测试发现 邮件其头部信息 比如标题 发送地址 还有抄送之类 和stmp发送的具体信息脱离。
    if (paramMap.has_key("subject"and paramMap.has_key("from"and paramMap.has_key("to")) == False:
        klog.error(
"Parameters incomplete!")
        
return False
    
    msgRoot[
'subject'= paramMap["subject"]
    msgRoot[
'from'= paramMap["from"]
    
if paramMap.has_key("cc"):
        msgRoot[
'cc'= paramMap["cc"]
    
    msgRoot[
'to'= paramMap["to"]
    msgRoot.preamble 
= 'This is a multi-part message in MIME format.'
    msgRoot.attach(msgAlternative)
    TempAddTo 
= paramMap["to"]
    
    
if paramMap.has_key("text"):
        msgText 
= MIMEText(paramMap["text"] , 'plain''utf-8')
        msgAlternative.attach(msgText)
    
if paramMap.has_key("html"):
        msgText 
= MIMEText(paramMap["html"], 'html''utf-8')
        msgAlternative.attach(msgText)
    
if paramMap.has_key("image"):
        fp 
= open(paramMap["image"], 'rb')
        msgImage 
= MIMEImage(fp.read())
        fp.close()
        msgImage.add_header(
'Content-ID''<image1>')
        msgRoot.attach(msgImage)
    
if paramMap.has_key("cc"):
        TempAddTo 
= paramMap["to"+ "," + paramMap["cc"]
    
       
    
if TempAddTo.find(","!= -1:
        FinallyAdd 
= TempAddTo.split(",")
    
else:
        FinallyAdd 
= TempAddTo
        
    
#stmp 发送邮件. 发现群发地址用‘,’相隔的字符串,只有一个成功,所以改用列表。
    smtp.sendmail(paramMap["from"], FinallyAdd, msgRoot.as_string())
    smtp.quit()
    
return True

#===Test =========================================
if __name__ == '__main__' :
    
    
from mailconf import mailmap
    sendmail(mailmap)
    


其中日志记录器,当然你可以不用。
而mailmap的内容:
mailmap = { }
mailmap['server']   = 邮件服务器
mailmap['user']     = 用户名
mailmap['password'] = 密码
mailmap["from"]     =  发邮件人地址
#mailmap["cc"]       = 抄送地址,以逗号分隔
mailmap["to"]       = 接收人地址
mailmap["subject"]  = 标题
mailmap["text"]     = 信息内容
mailmap["html"]     = '<font color = red ><b>信息内容!  </b></font>'

其中比较有意思的是,发信信息是可以乱写的。而真正和stmp有密切关系的是 :
 smtp.sendmail(paramMap["from"], FinallyAdd, msgRoot.as_string())
也就是上面的什么发信人地址 ,收信人地址 ,抄送人地址都可以是假的。。。

当然愚人节用用还是比较好玩。对高手失效。因为高手觉得奇怪的时候,会去看看邮件的原始属性。。。

哈哈,刚刚我就收到了我梦中情人给我的情书 DSC0000.gif 。。。太yy了。改天通知所有同事到楼下集合。我想应该有不少人会上当。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-370635-1-1.html 上篇帖子: OpenCV with Python 下篇帖子: Python学习笔记(三)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表