使用python smtplib 模块,用QQ邮箱发送邮件 |
您所在的位置:网站首页 › QQ在哪发邮箱 › 使用python smtplib 模块,用QQ邮箱发送邮件 |
本文已参与「新人创作礼」活动,一起开启掘金创作之路。 1 SMTP协议介绍简单邮件传输协议 / 发送邮件服务器(SMTP:Simple Mail Transfer Protocol)是用于电子邮件传输的通信协议。 Is 是一个 Internet 标准,该标准于 1982 年由 RFC 821 首次定义,并于 2008 年由 RFC 5321 更新为扩展 SMTP 添加。 邮件服务器和其他邮件传输代理使用 SMTP 发送和接收邮件。 2 python smtplib模块使用smtplib是一个 Python 库,用于使用简单邮件传输协议(SMTP)发送电子邮件。 smtplib是内置模块; 我们不需要安装它。 它抽象了 SMTP 的所有复杂性。 2.1 发送邮件到本地邮件服务器1、要实际发送电子邮件,我们需要有权访问邮件服务器。 Python 带有一个简单的开发邮件服务器。 Mailslurper 是易于使用的本地开发服务器。 共享的虚拟主机提供商使我们可以访问邮件服务器。 我们可以在帐户中找到详细信息。 注意:避免使用 Gmail,因为它是高度安全的服务器,并且使其工作非常复杂。 实际上,Internet 上的大多数(如果不是全部)示例演示了如何通过 Gmail 服务器发送电子邮件,这些示例都无法正常工作。 而是使用开发服务器或共享的虚拟主机服务器。 最后,我们可以使用 Web 服务。 有开发 Web 服务(例如 MailTrap 或 MailSlurp)或生产服务(例如 Mailgun 或 Mandrill)。 2、使用 Python 内置邮件服务器 python -m smtpd -c DebuggingServer -n localhost:1025 运行上面的命令,就可以在端口1025上启动 Python 内置邮件服务器。 3、向服务器上发送邮件信息 我们向上面python本地的邮件服务器,发送邮件,发送脚本如下: import smtplib from email.mime.text import MIMEText # 向本地开发邮件服务器发送一条简单的文本信息 # 发送者的邮箱 example.com是专门用于文档中的说明性示例的域名 sender = '[email protected]' # 接收者的邮箱 receivers = ['[email protected]'] # 服务器的端口 port = 1025 # 发送到服务器的文本信息 msg = MIMEText('This is test mail') # print(msg, type(msg)) # This is test mail msg['Subject'] = 'Test mail' msg['From'] = '[email protected]' msg['To'] = '[email protected]' # MimeText用于发送文本电子邮件。我们提供主题,从选项到选项 # SMTP类管理 与 SMTP服务器的连接 with smtplib.SMTP('localhost', port) as server: # 由于我们使用本地开发服务器,因此不用登录 # server.login('username', 'password') # 电子邮件带有sendmail()发送 server.sendmail(sender, receivers, msg.as_string()) print("Successfully sent email")发送电子邮件后,我们会在开启的本地邮件服务器的一端,接收到发送的消息 (base) PS C:\Users\shl> python -m smtpd -c DebuggingServer -n localhost:1025 ---------- MESSAGE FOLLOWS ---------- b'Content-Type: text/plain; charset="us-ascii"' b'MIME-Version: 1.0' b'Content-Transfer-Encoding: 7bit' b'Subject: Test mail' b'From: [email protected]' b'To: [email protected]' b'X-Peer: ::1' b'' b'This is test mail' ------------ END MESSAGE ------------Mailtrap提供了一项免费计划,使我们每个月可以发送 500 封邮件。 设置 Mailtrap 非常容易。 如果我们拥有 Github 或 Google 帐户,则只需几秒钟。 设置页面中提供了必要的凭据。 另外,还有一些简短的代码示例显示了如何使用服务,包括smtplib,Django或Flask。 mailtrap_simple.py import smtplib from email.mime.text import MIMEText # 向本地开发邮件服务器发送一条简单的文本信息 # 发送者的邮箱 example.com是专门用于文档中的说明性示例的域名 sender = '[email protected]' # 接收者的邮箱 receivers = ['[email protected]'] # 服务器的端口 port = 1025 # 发送到服务器的文本信息 msg = MIMEText('This is test mail') # print(msg, type(msg)) # This is test mail msg['Subject'] = 'Test mail' msg['From'] = '[email protected]' msg['To'] = '[email protected]' user = '[email protected]' password = 'xxx@bxx' # MineText用于发送文本电子邮件。我们提供主题,从选项到选项 # SMTP类管理 与 SMTP服务器的连接 with smtplib.SMTP('smtp.mailtrap.io', 2525) as server: server.login(user, password) # 电子邮件带有sendmail()发送 server.sendmail(sender, receivers, msg.as_string()) print("Successfully sent email")报错:smtplib.SMTPServerDisconnected: Connection unexpectedly closed 说解决方案是在:server.login()前加上如下两行代码,但是我尝试并不可行(参考) server.ehlo() server.starttls() 2.3 发送邮件到qq服务器这里用到了Python的两个包来发送邮件: smtplib 和 email 。 Python 的 email 模块里包含了许多实用的邮件格式设置函数,可以用来创建邮件“包裹”。使用的 MIMEText 对象,为底层的 MIME(Multipurpose Internet MailExtensions,多用途互联网邮件扩展类型)协议传输创建了一封空邮件,最后通过高层的SMTP 协议发送出去。 MIMEText 对象 msg 包括收发邮箱地址、邮件正文和主题,Python 通过它就可以创建一封格式正确的邮件。smtplib 模块用来设置服务器连接的相关信息。 要想通过QQ邮箱来发送邮件,需要开启QQ邮箱的设置-账户里SMTP服务,接下来会通过发送短信验证来获得授权码,有了授权码后就可以在代码里添加了。(参考) 使用qq邮箱给其他的邮箱发送简单的文本信息 1、首先获取发送者邮箱的授权码,这里我发送者用的是QQ邮箱,下面说下QQ邮箱如何获取授权码 1)首先登录qq账号邮箱,然后在设置-账户下找到SMTP服务 2)点击生成授权码,之后会让你发送短信,用户获取授权码 3)发送短信成功之后,会看到16位长度的授权码,如下图(后面使用授权码的时候,不要加空格) 2、下面是获取发送者邮箱服务器的域名和端口,这里我们的发送者使用的是QQ邮箱,其邮件服务器和端口为: QQ发送邮件服务器:smtp.qq.com 使用SSL,端口号为465 或 587您好: 以下内容是本次会议的纪要,请查收! 发言人:{fayanren} 主持人:{zhuchiren} {mytime} '''.format(fayanren=fayanren, zhuchiren=zhuchiren, mytime=mytime) msg.attach(MIMEText(_text=content, _subtype='html', _charset='utf-8')) msg['subject'] = subject msg['From'] = msg_from msg['To'] = msg_to try: server = smtplib.SMTP_SSL(host='smtp.qq.com', port=465) server.login(msg_from, passwd) server.sendmail(msg_from, msg_to, msg.as_string()) print('发送成功') except smtplib.SMTPException as e: print('发送失败') finally: server.quit() msg_from = '[email protected]' # 发送者邮箱 passwd = 'xnsgcuuavelrbbdj' # 发送者邮箱的授权码 msg_to = '[email protected]' # 接收者邮箱 msg_to = '[email protected]' text_content = 'This is a test demo!' # 发送文件和图片附件都是可以的! file_path1 = 'read.md' file_path2 = 'imgs/email1.png' send_email(msg_from, passwd, msg_to, text_content, file_path1, file_path2) if __name__ == '__main__': send_html_file()flask web开发电子邮箱 参考:geek-docs.com/python/pyth… 参考:cloud.tencent.com/developer/a… 参考:www.cnblogs.com/lovealways/… 参考:blog.csdn.net/MATLAB_matl… 参考:blog.csdn.net/weixin_4621… |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |