【Python】简单电子邮件发送功能实现

举报
王建峰 发表于 2021/11/19 01:19:08 2021/11/19
【摘要】 电子邮件传输机制 一般的网络服务程序在传输信息时就像拨打电话,需要双方同时保持在线,而在电子邮件系统中,当用户发送邮件后不必等待投递工作完成即可下线。如果对方邮件服务器(MTA)宕机或对方临时离线,则发件服务器(MTA)就会把要发送的内容自动的暂时保存到本地,等检测到对方邮件服务器恢复后会立即再次投递,期间一般无需运维人员维护处理,随...

电子邮件传输机制

一般的网络服务程序在传输信息时就像拨打电话,需要双方同时保持在线,而在电子邮件系统中,当用户发送邮件后不必等待投递工作完成即可下线。如果对方邮件服务器(MTA)宕机或对方临时离线,则发件服务器(MTA)就会把要发送的内容自动的暂时保存到本地,等检测到对方邮件服务器恢复后会立即再次投递,期间一般无需运维人员维护处理,随后收信人(MUA)就能在自己的信箱中找到这封邮件了。


简单来说,邮件的发送并不是直接将邮件从一个客户端A发送到另一个客户端B,中间要经过邮局服务器(server),这样就不需要保证通信双方同时在线了。

而SMTP是简单邮件传输协议,用于发送和中转发出的电子邮件,占用服务器的25/TCP端口。
 

 

代码实现

这里使用python的email模块实现电子邮件发送的功能。


  
  1. from email.header import Header
  2. from email.mime.text import MIMEText
  3. from email.utils import parseaddr, formataddr
  4. import smtplib
  5. def _format_addr(s):
  6. name, addr = parseaddr(s)
  7. return formataddr((Header(name, 'utf-8').encode(), addr))
  8. user_mail = '你本人的邮箱地址'
  9. password = '你的邮箱密码'
  10. send_mail = '收件人的邮箱地址'
  11. smtp_server = '你所在邮箱的smtp服务器地址'
  12. #填写邮件的正文、发件人信息、收件人信息、主题...
  13. msg = MIMEText('Gitchat is funny!', 'plain', 'utf-8')
  14. msg['From'] = _format_addr('Gitchat <%s>' % user_mail)
  15. msg['To'] = _format_addr('管理员 <%s>' % send_mail)
  16. msg['Subject'] = Header('Gitchat test', 'utf-8').encode()
  17. #发出邮件要执行的动作
  18. server = smtplib.SMTP(smtp_server, 25) #执行邮局服务器的25端口
  19. server.set_debuglevel(1) #
  20. server.login(user_mail, password) #登录服务器
  21. server.sendmail(user_mail, [send_mail], msg.as_string()) #发送信件到指定的地址
  22. server.quit() #结束服务:wq

 

展示

客户端软件使用Foxmail验证之前的程序

文章来源: blog.csdn.net,作者:hinzer,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/feit2417/article/details/86261092

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。