Python学习笔记——发邮件
1.首先需要注册一个网易的邮箱,开启smtp服务,并使用其授权码
2.发送邮件的Python脚本
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import smtplib
from email.header import Header
from email.mime.text import MIMEText
# 第三方 SMTP 服务
mail_host = "smtp.163.com" # SMTP服务器
mail_user = "XXX" # 用户名
mail_pass = "XXX" # 授权密码,非登录密码
sender = "XXX@163.com" # 发件人邮箱(最好写全, 不然会失败)
receivers = ["XXX@126.com"] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱
content = '我用Python'
title = '人生苦短' # 邮件主题
def sendEmail():
message = MIMEText(content, 'plain', 'utf-8') # 内容, 格式, 编码
message['From'] = "{}".format(sender)
message['To'] = ",".join(receivers)
message['Subject'] = title
try:
smtpObj = smtplib.SMTP_SSL(mail_host, 465) # 启用SSL发信, 端口一般是465
smtpObj.login(mail_user, mail_pass) # 登录验证
smtpObj.sendmail(sender, receivers, message.as_string()) # 发送
print("mail has been send successfully.")
except smtplib.SMTPException as e:
print(e)
def send_email2(SMTP_host, from_account, from_passwd, to_account, subject, content):
email_client = smtplib.SMTP(SMTP_host)
email_client.login(from_account, from_passwd)
# create msg
msg = MIMEText(content, 'plain', 'utf-8')
msg['Subject'] = Header(subject, 'utf-8') # subject
msg['From'] = from_account
msg['To'] = to_account
email_client.sendmail(from_account, to_account, msg.as_string())
email_client.quit()
if __name__ == '__main__':
sendEmail()
# receiver = '***'
# send_email2(mail_host, mail_user, mail_pass, receiver, title, content)
如果想美化邮件,可以在其中添加html样式,并将邮件的格式指定成html
content = """
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Email Template</title>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f4f4f4;
margin: 0;
padding: 0;
}
.container {
max-width: 600px;
margin: 20px auto;
background-color: #ffffff;
border: 1px solid #ddd;
border-radius: 5px;
overflow: hidden;
}
.header {
background-color: #007bff;
color: #ffffff;
text-align: center;
padding: 20px;
}
.header h1 {
margin: 0;
font-size: 24px;
}
.content {
padding: 20px;
}
.content p {
margin: 10px 0;
line-height: 1.5;
color: #333;
}
.button {
display: block;
width: 200px;
margin: 20px auto;
text-align: center;
padding: 10px 15px;
background-color: #007bff;
color: #ffffff;
text-decoration: none;
border-radius: 5px;
font-weight: bold;
}
.button:hover {
background-color: #0056b3;
}
.footer {
background-color: #f4f4f4;
text-align: center;
padding: 10px;
font-size: 12px;
color: #666;
border-top: 1px solid #ddd;
}
</style>
</head>
<body>
<div class="container">
<!-- Header Section -->
<div class="header">
<h1>Welcome to Our Service</h1>
</div>
<!-- Content Section -->
<div class="content">
<p>Dear [User],</p>
<p>Thank you for signing up for our service! We're excited to have you on board. Please click the button below to confirm your email address and get started:</p>
<a href="[CONFIRMATION_LINK]" class="button">Confirm Email</a>
<p>If you did not sign up for this account, you can safely ignore this email.</p>
</div>
<!-- Footer Section -->
<div class="footer">
© 2024 Your Company. All rights reserved.
</div>
</div>
</body>
</html>
"""
def sendEmail():
message = MIMEText(content, "html", _charset='utf-8') # 内容, 格式, 编码
message['From'] = "{}".format(sender)
message['To'] = ",".join(receivers)
message['Subject'] = title
try:
smtpObj = smtplib.SMTP_SSL(mail_host, 465) # 启用SSL发信, 端口一般是465
smtpObj.login(mail_user, mail_pass) # 登录验证
smtpObj.sendmail(sender, receivers, message.as_string()) # 发送
print("mail has been send successfully.")
except smtplib.SMTPException as e:
print(e)
邮件样式如下

本文只发表于博客园和tonglin0325的博客,作者:tonglin0325,转载请注明原文链接:https://www.cnblogs.com/tonglin0325/p/8978196.html

浙公网安备 33010602011771号