一、使用QQ邮箱发送邮件
使用第三方 SMTP 服务发送
这里使用了 QQ 邮箱(你也可以使用 163,Gmail等)的 SMTP 服务,需要做以下配置:
QQ 邮箱 SMTP 服务器地址:smtp.qq.com,ssl 端口:465。
以下实例你需要修改:发件人邮箱(你的QQ邮箱),密码,收件人邮箱(可发给自己)。
import smtplib from email.mime.text import MIMEText from email.utils import formataddr my_sender = '212225353@qq.com' # 发件人邮箱账号 my_pass = 'xxxxxxxxx' # 发件人邮箱授权码 不是qq密码 my_user = '212225353@qq.com' # 收件人邮箱账号,我这边发送给自己 def mail(): ret = True try: msg = MIMEText('填写邮件内容', 'plain', 'utf-8') msg['From'] = formataddr(["andy", my_sender]) # 括号里的对应发件人邮箱昵称、发件人邮箱账号 msg['To'] = formataddr(["FK", my_user]) # 括号里的对应收件人邮箱昵称、收件人邮箱账号 msg['Subject'] = "发送邮件测试" # 邮件的主题,也可以说是标题 server = smtplib.SMTP_SSL("smtp.qq.com", 465) # 发件人邮箱中的SMTP服务器,端口是25 server.login(my_sender, my_pass) # 括号中对应的是发件人邮箱账号、邮箱授权码 server.sendmail(my_sender, [my_user, ], msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件 server.quit() # 关闭连接 except Exception: # 如果 try 中的语句没有执行,则会执行下面的 ret=False ret = False return ret ret = mail() if ret: print("邮件发送成功") else: print("邮件发送失败")
发送带图片的邮件
import smtplib from email.header import Header from email.mime.text import MIMEText from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart def send_email_imag(SMTP_host, from_account, from_password, to_account, subject, img_data): html_content = """ <html><body> <img src="cid:image1" alt="image1" align="center" width=100% > </body></html> """ # 1. 实例化SMTP,链接邮件服务器(也可以使用上面的方法) smtp = smtplib.SMTP_SSL(SMTP_host, port=465) # 2. 登录邮箱,用户名和密码(授权码) smtp.login(from_account, from_password) print('Login Successful!') # 3. 配置发送内容msg msg = MIMEMultipart() # 3.1 创建超文本对象(用来确定图片布局) ,并将超文本加载到msg content = MIMEText(html_content, _subtype='html', _charset='utf8') msg.attach(content) # 3.2 创建图片对象,并将图片加载到msg img = MIMEImage(img_data, _subtype='octet-stream') img.add_header('Content-ID', 'image1') msg.attach(img) # 3.3 加载邮件主题和发送账户 msg['Subject'] = Header(subject, 'utf-8') # 主题 msg['From'] = from_account msg['To'] = to_account # 4. 配置发送邮箱,接受邮箱,以及发送内容 smtp.sendmail(from_account, to_account, msg.as_string()) # 5. 关闭邮件服务 smtp.quit() if __name__ == '__main__': # 相对路径和绝对路径 img_file = open(r"D:\project_58tribe\发送email\img.png", "rb") # img_data2 = open("C:\\Users\\cqfdcw\\Desktop\\456.png","rb").read() img_data = img_file.read() img_file.close() try: send_email_imag('smtp.qq.com', '自己的邮箱', '邮箱授权码', '自己的邮箱', '邮件主题', img_data) print("邮件发送成功") except smtplib.SMTPException: print("Error: 无法发送邮件")