内容简介:程序人员对于先上示例代码,之后再详解。注:全部代码在Python3环境下测试通过,正常使用,正常显示,无需任何外置模块。
程序人员对于 邮件自动化
的日常需求还是很高的。但是入过了 Linux 的命令行邮件客户端如 Sendmail
, Mutt
, Alpine
等坑之后,发现现代其实很少人真的在用它们实现邮件自动化,根据搜索引擎里相关文章的数量就可知一二。取而代之的是,现代都在用 Python 或 PHP 等编程语言直接实现。Python更是自带一套模块实现邮件发送。
先上示例代码,之后再详解。
注:全部代码在Python3环境下测试通过,正常使用,正常显示,无需任何外置模块。
发送HTML格式的漂亮邮件
import smtplib from email.mime.text import MIMEText # Settings of sender's server host = 'smtp.aliyun.com' sender = 'Jason@aliyun.com' user = 'Jason@aliyun.com' password = input('Please type your password: ') to = ['Jason@outlook.com'] # Content of email subject = 'Python send html email test' with open('./test.html', 'r') as f: content = f.read() # Settings of the email string email = MIMEText(content,'html','utf-8') email['Subject'] = subject email['From'] = sender email['To'] = to[0] msg = email.as_string() # Login the sender's server print('Logging with server...') smtpObj = smtplib.SMTP() smtpObj.connect(host, 25) smtpObj.login(user, password) print('Login successful.') # Send email smtpObj.sendmail(sender, to, msg) smtpObj.quit() print('Email has been sent')
发送带附件的邮件
import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.image import MIMEImage # Settings of sender's server host = 'smtp.aliyun.com' sender = 'Jason@aliyun.com' user = 'Jason@aliyun.com' password = input('Please type your password: ') to = ['Jason@outlook.com'] # Make content of email subject = 'Python send email with attachments' with open('./test.html', 'r') as f: content = MIMEText(f.read(),'html','utf-8') content['Content-Type'] = 'text/html' print('Loaded content.') # Make txt attachment with open('./txt.md', 'r') as f: txt = MIMEText(f.read(),'plain','utf-8') txt['Content-Type'] = 'application/octet-stream' txt['Content-Disposition'] = 'attachment;filename="txt.md"' print('Loaded txt attachment file.') # Make image attachment with open('./pic.png', 'rb') as f: img = MIMEImage(f.read()) img['Content-Type'] = 'application/octet-stream' img['Content-Disposition'] = 'attachment;filename="pic.png"' print('Loaded image attachment file.') # Attach content & attachments to email email = MIMEMultipart() email.attach(content) email.attach(txt) email.attach(img) # Settings of the email string email['Subject'] = subject email['From'] = sender email['To'] = to[0] msg = email.as_string() # Login the sender's server print('Logging with server...') smtpObj = smtplib.SMTP() smtpObj.connect(host, 25) smtpObj.login(user, password) print('Login successful.') # Send email smtpObj.sendmail(sender, to, msg) smtpObj.quit() print('Email has been sent')
发送邮件大杀器:Yagmail
之所以放在最后,是相衬托出传统的发送邮件是多繁琐多麻烦,实际上我们需要的只是超级简单的东西。Yagmail正是为了实现这个而生的,一句话就可以完成所有的登录、发送文字、HTML、附件等功能。
参考Github:yagmail -- Yet Another GMAIL/SMTP client
一句话发送邮件:
yagmail.SMTP('username').send('to@a.com', 'Subject', 'This is the body')
正常一点的发送邮件:
import yagmail yag = yagmail.SMTP('user', 'password', host='server.com', port='123') contents = [ 'This is the body, and here is just text http://somedomain/image.png', 'You can find a file attached.', './dataset/pic.jpg' ] yag.send('solomonxie@outlook.com', 'yagmail tst', contents)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- SpringBoot系列(十四)集成邮件发送服务及邮件发送的几种方式
- Android 快速发送邮件
- Python邮件发送指南
- golang发送邮件
- 使用go发送邮件
- Laravel - 上手实现 - 邮件发送
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
VISUAL BASIC 6.0 WINDOWS API讲座
王国荣 / 人民邮电出版社 / 1999-06-01 / 76.00元
本书全面介绍了在Visual Basic 6.0中如何调用Windows API的技术,特别是结合读者在应用中经常遇到的具体问题编写了许多应用范例,书中还给出了API函数的速查表。本书主要内容包括: Windows API的基本概念和调用方法,资源文件的使用,Windows的消息系统及其应用,API在绘图中的应用,多媒体文件的播放,特殊命令按钮的制作等。 本书适用于已熟悉Visual Basic的一起来看看 《VISUAL BASIC 6.0 WINDOWS API讲座》 这本书的介绍吧!