最近学习了python的又一个实用功能一发邮件,特此记录。
首先,邮箱服务器是有很多种的,我们这里采用的是QQ邮箱。
需要申请token,不然人家怎么知道你是谁
没什么特别的,直接上代码。
#!/usr/bin/python # -*- coding: UTF-8 -*- import smtplib from email.mime.text import MIMEText from email.utils import formataddr my_sender='1160578893@qq.com' # 发件人邮箱账号 my_pass = 'owgakdlcaatl1saaebagb1' # 发件人邮箱token【就是上面申请的那个】 my_user='yangxiaoru@moyi365.com' # 收件人邮箱账号,我这边发送给自己 def send_TextMail(): res=True try: speak="这是文本内容" msg=MIMEText(speak,'plain','utf-8') msg['From']=formataddr(["小茹的昵称还是小茹",my_sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号 msg['To']=formataddr(["这是收件人的昵称",my_user]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号 msg['Subject']="这是Title" # 邮件的主题,也可以说是标题 server=smtplib.SMTP_SSL("smtp.qq.com", 465) # QQ邮箱的邮箱中的SMTP服务器和端口 server.login(my_sender, my_pass) # 括号中对应的是发件人邮箱账号、邮箱密码 server.sendmail(my_sender,[my_user,],msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件 server.quit() # 关闭连接 except Exception: # 如果 try 中的语句没有执行,则会执行下面的 ret=False res=False return res def send_HTMLMail(): res=True try: speak=""" <h1>Hi, 小茹</h1> <p>工作了一周辛苦了,系统已经自动为你生成了本周的数据报表,快来看看吧!</p> <p>本周代码量</p> <table style="border-style:solid;border-color:#000;border="1";cellspacing="0""> <tr><td>本周代码量</td> <td>在RD中的排名</td><td>计算方式</td></tr> <tr><td>300</td><td>56/110</td><td>Gitlab上面的代码变更量</td></tr> </table> <p>代码量top3 RD的信息</p> <table style="border-style:solid;border-color:#000"> <tr><td>排名</td> <td>姓名</td><td>本周代码量</td></tr> <tr><td>Top1</td><td>z张三</td><td>1290</td></tr> <tr><td>Top2</td><td>李四</td><td>1090</td></tr> <tr><td>Top3</td><td>王五</td><td>900</td></tr> </table> <p>更多详细信息,请点击<a href="http://ekpss.ekwing.com">这里</a>查看</p> """ msg=MIMEText(speak,'html','utf-8') msg['From']=formataddr(["小茹的昵称还是小茹",my_sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号 msg['To']=formataddr(["这是收件人的昵称",my_user]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号 msg['Subject']="这是Title" # 邮件的主题,也可以说是标题 server=smtplib.SMTP_SSL("smtp.qq.com", 465) # QQ邮箱的邮箱中的SMTP服务器和端口 server.login(my_sender, my_pass) # 括号中对应的是发件人邮箱账号、邮箱密码 server.sendmail(my_sender,[my_user,],msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件 server.quit() # 关闭连接 except Exception: # 如果 try 中的语句没有执行,则会执行下面的 ret=False res=False return res res=send_TextMail() if res: print("纯文本邮件发送成功") else: print("纯邮件发送失败") res=send_HTMLMail() if res: print("HTML邮件发送成功") else: print("HTML邮件发送失败")