本文实例讲述了python发送邮件功能。分享给大家供大家参考,具体如下:
这里以qq邮箱为例说明
登录邮箱点账号
开启smtp
开启时会要求你发送一条短信,发送完成后点已发送。
就有授权码了
代码如下,只需更改发件人、收件人等信息即可
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
# encoding: utf-8 import logging import smtplib from email.mime.text import mimetext import email.utils from datetime import datetime _logger = logging.getlogger( 'utils.mailclient' ) class mailclient( object ): def __init__( self , host, port, user, pwd = ''): self ._host = host self ._port = port self ._user = user self ._pwd = pwd self ._smtp_server = none self ._debug = false self ._keepalive = true def set_keepalive( self , keepalive): self ._keepalive = keepalive def set_debug( self , debug): self ._debug = debug if self ._smtp_server is not none: self ._smtp_server.set_debuglevel( self ._debug) def _connect( self ): if self ._smtp_server is none: _smtp_server = smtplib.smtp( self ._host, self ._port) _smtp_server.ehlo() _smtp_server.starttls() _smtp_server.set_debuglevel( self ._debug) if self ._pwd: _smtp_server.login( self ._user, self ._pwd) self ._smtp_server = _smtp_server return self ._smtp_server def _dispose( self ): if self ._smtp_server is not none: self ._smtp_server.quit() self ._smtp_server = none def send( self , to_addrs, subject, content, isdispose = true): _smtp_server = self ._connect() if not isinstance (to_addrs, list ): to_addrs = [to_addrs] _msg = mimetext(content, 'html' , 'utf-8' ) _msg[ 'subject' ] = subject _msg[ 'from' ] = self ._user _msg[ 'to' ] = '; ' .join(to_addrs) _msg[ 'date' ] = datetime.now().strftime( '%y-%d-%m %h:%m:%s' ) _smtp_server.sendmail( self ._user, to_addrs, _msg.as_string()) isdispose and ( not self ._keepalive) and self ._dispose() def send_mails( self , mails): _smtp_server = self ._connect() for mail in mails: self ._send_mail(mail.get( 'to' ), mail.get( 'subject' ), mail.get( 'content' ), false) ( not self ._keepalive) and self ._dispose() def close( self ): self ._dispose() if __name__ = = '__main__' : logging.basicconfig(level = logging.debug, format = '%(asctime)s %(name)s %(levelname)s:%(message)s' , datefmt = '%y-%m-%d %h:%m:%s' ) import time s = mailclient( 'smtp.qq.com' , 587 , '10010@qq.com' , '授权码' ) # 注意,此处端口要用587,465端口是ssl使用的。 s.set_keepalive(false) s.set_debug(true) st = time.time() s.send( '收信人邮箱地址' , '测试' , '测试邮件 from qq' ) #要发送的账号、标题、内容 print (time.time() - st) |
希望本文所述对大家python程序设计有所帮助。
原文链接:https://blog.csdn.net/Yort2016/article/details/75109854