资讯专栏INFORMATION COLUMN

Python 发送邮件

tuomao / 1109人阅读

摘要:程序人员对于邮件自动化的日常需求还是很高的。更是自带一套模块实现邮件发送。正是为了实现这个而生的,一句话就可以完成所有的登录发送文字附件等功能。参考一句话发送邮件正常一点的发送邮件

程序人员对于邮件自动化的日常需求还是很高的。但是入过了Linux的命令行邮件客户端如Sendmail, Mutt, Alpine等坑之后,发现现代其实很少人真的在用它们实现邮件自动化,根据搜索引擎里相关文章的数量就可知一二。取而代之的是,现代都在用Python或PHP等编程语言直接实现。Python更是自带一套模块实现邮件发送。

先上示例代码,之后再详解。

注:全部代码在Python3环境下测试通过,正常使用,正常显示,无需任何外置模块。

参考:菜鸟教程 - Python SMTP发送邮件
参考:简单三步,用 Python 发邮件

发送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)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/43080.html

相关文章

  • 简单三步,用 Python邮件

    摘要:使用脚本发送邮件并不复杂。以下为思路导图模块与发送邮件相关的模块是关于简单邮件传输协议的操作模块,在发送邮件的过程中起到服务器之间互相通信的作用。 0. 前言 发送电子邮件是个很常见的开发需求。比如你写了个监控天气的脚本,发现第二天要下雨,或者网站上关注的某个商品降价了,就可以发个邮件到邮箱来提醒自己。 使用 Python 脚本发送邮件并不复杂。不过由于各家邮件的发送机制和安全策略不同...

    haobowd 评论0 收藏0
  • 利用Python自动发送邮件

    摘要:自动发送邮件我们把报表做出来以后一般都是需要发给别人查看,对于一些每天需要发的报表或者是需要一次发送多份的报表,这个时候可以考虑借助来自动发送邮件。一份邮件的组成下图是中发送一份邮件的界面,主要包含发件人收件人抄送人主题正文附件这几部分。 ...

    leo108 评论0 收藏0
  • Python发送电子邮件

    摘要:是发送邮件的协议,内置对的支持模块和模块可以发送纯文本邮件邮件以及带附件的邮件简单邮件传输协议,是从源地址到目的地址传送邮件的规则,由该协议控制信件的中转方式的提供了一种很方便的途径传递电子邮件,对进行了简单的封装发送纯文本邮件导入模块 SMTP是发送邮件的协议,Python内置对SMTP的支持(smtplib模块和email模块),可以发送纯文本邮件、HTML邮件以及带附件的邮件 S...

    李世赞 评论0 收藏0
  • Python 发送 email 的三种方式

    摘要:本米扑博客先介绍几个最简单的发送邮件方式记录下,像邮件,附件等也是支持的,需要时查文档即可。特别注意命令发送邮件,默认用端口号,由于阿里云腾讯云等封禁了端口号,因此本示例需在开通端口机器上测试执行命令收件结果 Python发送email的三种方式,分别为使用登录邮件服务器、使用smtp服务、调用sendmail命令来发送三种方法 本文原文自米扑博客:Python 发送 email 的三...

    kun_jian 评论0 收藏0
  • python发送邮件

    摘要:邮箱传输协议简单邮件传输协议由源地址到目的地址的传输规则邮箱服务器默认端口生成第三方登录邮箱的密钥,这样从第三方登录邮箱,不能输入密码,只需要输入第三方密钥就行需要使用到的库主要是负责发送邮件,连接邮箱服务器,登录邮箱构造邮件,邮件显示的内 QQ邮箱传输协议 SMTP:简单邮件传输协议(由源地址到目的地址的传输规则) smtp.qq.com :QQ邮箱服务器 默认端口:25 生成第三...

    wyk1184 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<