文档章节

八、发送邮件

ssshen
 ssshen
发布于 2017/08/29 18:05
字数 292
阅读 1
收藏 0

发送邮件代码如下:

from email.mime.text import MIMEText
from email.header import Header
import smtplib
import datetime
from poseidon.myutil import MyUtil
import logging
from _socket import timeout

class SendMail:
    '''
    发送邮件
    ‘发件服务器地址’、‘发件服务器端口’,‘是否使用ssl加密’
    '''
    def __init__(self, smtpServer, port, isSSL):
        self.logger = logging.getLogger('myLogger.mail.SendMail')
        
        self.smtpServer = smtpServer 
        self.port = port
        self.isSSL = isSSL == 'True'
        
        self.logger.info('%s %s %s' % (self.smtpServer, self.port, self.isSSL))
    
    def send(self, content, sendto, title):
        '''
        发送邮件
        @param content: 邮件内容
        @param sendto: 收件人,多个收件人以','分割
        @param title:邮件标题 
        @return: True,发送成功;否则,False
        '''
        todayStr = datetime.datetime.now().strftime('%Y-%m-%d')
        msg = MIMEText(content, 'html', 'utf-8')
        fromUser = MyUtil.loadProperty('mail', 'from')
        password = MyUtil.loadProperty('mail', 'password')
        mailTitle = '%s%s' % (todayStr, title)
        
        self.logger.info(' from:%s to:%s title:%s' % (fromUser, sendto, mailTitle))
                         
        msg['From'] = Header(u'%s' % fromUser)
        msg['To'] = Header(u'%s' % sendto)
        msg['Subject'] = Header(u'%s' % mailTitle, 'utf-8').encode()
        
        if self.isSSL:
            server = smtplib.SMTP_SSL(self.smtpServer, self.port, timeout=20)
        else:
            server = smtplib.SMTP(self.smtpServer, self.port, timeout=20)
            
        # 开启debug日志
        server.set_debuglevel(1)
        server.login(fromUser, password)
        server.sendmail(fromUser, sendto.split(','), msg.as_string())
        server.quit()
    
if  __name__ == '__main__':
    MyUtil('../../../config.properties')
    sm = SendMail('smtp.exmail.qq.com', 465, 'True')
    sm.send('hello buddy!','aaa@163.com', 'hello')

config.properties中需要配置

[mail]
#邮箱发送账户
from=aaa@qq.com
#发送账户密码
password=bbb
#发件服务器
smtp=smtp.exmail.qq.com
#发件服务器端口
port=465
#是否加密传输
isSSL=True

参考文章: SMTP发送邮件--廖雪峰

© 著作权归作者所有

ssshen
粉丝 2
博文 34
码字总数 12481
作品 0
海淀
程序员
私信 提问
易宝典文章——玩转Office 365中的Exchange Online服务 之十九 怎样实现邮件代理功能

在企业中,常常会遇到这样的需求,老板级别的员工往往没有过多的时间处理大量的邮件,需要秘书或助手帮其处理邮件。如果这些老板能将自己的用户名和密码共享给秘书,那么可能会导致其它很多不...

liulike
2016/06/29
0
0
commons-mail邮件发送问题,help!

现在使用commons-mail做了一个邮件发送,在外网环境下都可以发送正常,外网向内网邮箱也能发送,但是内网邮箱互发以及向外发就不行了。报异常了,看异常应该是证书问题,但是内网邮件服务器是...

缪斯的情人
2013/01/31
1K
10
[springboot](九)邮件服务

发送邮件应该是网站的必备功能之一,什么注册验证,忘记密码或者是给用户发送营销信息。最早期的时候我们会使用JavaMail相关api来写发送邮件的相关代码,后来spring退出了JavaMailSender更加...

菜鸟腾飞
2018/09/21
0
0
springboot(十):邮件服务

springboot仍然在狂速发展,才五个多月没有关注,现在看官网已经到1.5.3.RELEASE版本了。准备慢慢在写写springboot相关的文章,本篇文章使用springboot最新版本1.5.3进行开发。 发送邮件应该...

ityouknow
2017/05/04
0
0
邮件实用技巧十:如何恢复已经删除的旧邮件

系统管理员在维护邮件系统过程中,其中必备不可少的一个步骤就是邮件备份。有些邮件,用户当时觉得没什么大的用处,给删除了。但几个月后,甚至几年后,往往还要翻找出当时已经删除的旧邮件。...

月亮湖泊
2010/07/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

好文:华杉:我等用功,不求日增,但求日减。减一分人欲,则增一分天理,这是何等简易!何等洒脱!

#写在前面1.怎么理解“减一分人欲,则增一分天理,这是何等简易!”?1)华杉提倡 “一劳永逸” 排除浪费,少干活,多赚钱,一战而定,降低作业成本。2)华杉提倡学海无涯,回头是岸...

阿锋zxf
26分钟前
3
0
vue 的bus总线

bus声明 global.bus = new Vue() 事件发送 controlTabbar () {global.bus.$emit('pickUp', 'ddd')}, 事件接收 global.bus.$on('pickUp', (res) => {this.isFocus = true})......

Js_Mei
31分钟前
2
0
大型系统演进之路-负载均衡演进

Nginx做负载均衡 通过Nginx的反向代理将请求分发到tomcat中,如果tomcat支持100并发,Nginx支持50000并发,理论上nginx把请求发送到500个tomcat就可以了。 LVS或F5做多个Nginx负载均衡 Tomc...

春哥大魔王的博客
35分钟前
4
0
Sqlite时间段查询中遇到的问题

问题: 我要查询DateTime时间其中的一段符合时间要求的数据,比如我要查询‘2019-06-06 16:50:00’至‘2019-06-06 16:59:00’这一段的数据 开始用这段代码 strSql= ("select * from Coll...

rainbowcode
39分钟前
2
0
大数据(hadoop-数据入库系统Sqoop原理架构)

Sqoop是什么 Sqoop:SQL-to-Hadoop 连接传统关系型数据库和Hadoop的桥梁 把关系型数据库的数据导入到 Hadoop 系统 ( 如 HDFS、HBase 和 Hive) 中; 把数据从 Hadoop 系统里抽取并导出到关系型...

这很耳东先生
54分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部