import smtplib from email.mime.text import MIMEText from email.header import Header def send_pick_rubbish_message(body,subject): mail_host = "smtp.163.com" # 设置服务器 mail_user = "steam_robot_send@163.com" # 用户名 mail_pass = "UHGBXMHQUAYNYVHM" # 授权码,注意不是邮箱登录密码,是上述设置的授权密码!!! sender = 'steam_robot_send@163.com' #receivers = ['2499690965@qq.com','1272365872@qq.com','993592136@qq.com'] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱 receivers = ['dyf2b2@163..com'] message = MIMEText(body, 'plain', 'utf-8') message['From'] = "steam_robot_send@163.com" message['To'] = "dyf2b2@163..com" message['Subject'] = Header(subject, 'utf-8') smtpObj = smtplib.SMTP() smtpObj.connect(mail_host, 25) smtpObj.set_debuglevel(1) smtpObj.login(mail_user, mail_pass) smtpObj.sendmail(sender, receivers, message.as_string()) print("邮件发送成功")
时间: 2024-03-14 15:48:43 浏览: 136
这段代码是 Python 的邮件发送函数,其中 `smtplib` 库用于连接邮件服务器,`email.mime.text` 和 `email.header` 用于构建邮件消息。函数 `send_pick_rubbish_message` 的参数 `body` 和 `subject` 分别表示邮件正文和主题,其余的变量与值的含义与上面的代码相同。发送邮件的过程与上面的代码也相同,需要先设置好变量的值,然后调用函数即可。请注意,在发送邮件的过程中,需要设置正确的收件人地址和发件人地址,否则邮件将无法送达。
相关问题
import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.image import MIMEImage import tkinter as tk from PIL import Image, ImageTk解释代码
这段代码主要进行了以下操作:
1. 导入必要的模块:
```
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
import tkinter as tk
from PIL import Image, ImageTk
```
这些模块是用于发送带有图片的邮件和图形用户界面的模块。其中`smtplib`模块用于发送邮件,`MIMEText`模块用于处理邮件文本,`MIMEMultipart`模块用于处理邮件中的多个部分,`MIMEImage`模块用于处理邮件中的图片,`tkinter`模块用于创建图形用户界面,`PIL`模块用于处理图片。
2. 加载图片:
```
p1 = ImageTk.PhotoImage(Image.open('emoji/facepalm.png'))
p2 = ImageTk.PhotoImage(Image.open('emoji/smirk.png'))
p3 = ImageTk.PhotoImage(Image.open('emoji/concerned.png'))
p4 = ImageTk.PhotoImage(Image.open('emoji/smart.png'))
p5 = ImageTk.PhotoImage(Image.open('emoji/tushe.png'))
p6 = ImageTk.PhotoImage(Image.open('emoji/kiss.gif'))
```
这段代码使用PIL模块加载了6张图片,并使用ImageTk模块将其转换为Tkinter中的PhotoImage对象。
3. 定义一个字典:
```
dic = {'aa**':p1,'bb**':p2,'cc**':p3,'dd**':p4,'ff**':p5,'gg**':p6}
```
这个字典将表情图片的标识符和对应的PhotoImage对象一一对应。
4. 定义了一个函数`send_mark(exp)`:
```
def send_mark(exp):
global ee, msg
mes = exp +':;'+user+':;'+chat_to
s.send(mes.encode())
with open("animation.gif", "rb") as f:
img_data = f.read()
image = MIMEImage(img_data, name="animation.gif")
msg.attach(image)
smtp = smtplib.SMTP("smtp.example.com", 587)
smtp.ehlo()
smtp.starttls()
smtp.login("sender@example.com", "password")
smtp.sendmail("sender@example.com", "recipient@example.com", msg.as_string())
smtp.quit()
b1.destroy()
b2.destroy()
b3.destroy()
b4.destroy()
b5.destroy()
b6.destroy()
ee = 0
```
这个函数用于发送带有表情图片的消息。它接收一个参数`exp`,这个参数是表情图片的标识符。在函数内部,它会将标识符、发送者和接收者组成一个字符串,并发送给服务端。同时,它会使用`MIMEImage`模块将动图文件添加到邮件中,并使用`smtplib`模块发送邮件。最后它会销毁表情按钮,并将表情面板开关标志设置为0。
5. 定义了6个函数`bb1()`、`bb2()`、`bb3()`、`bb4()`、`bb5()`和`bb6()`:
```
def bb1():
send_mark('aa**')
def bb2():
send_mark('bb**')
def bb3():
send_mark('cc**')
def bb4():
send_mark('dd**')
def bb5():
send_mark('ff**')
def bb6():
send_mark('gg**')
```
这些函数分别对应6个表情按钮,用于发送不同的表情图片。
6. 定义了一个函数`express_board()`:
```
def express_board():
global b1,b2,b3,b4,b5,b6,ee
if ee == 0: #打开表情包面板
ee = 1
b1 = tk.Button(root,command=bb1,image=p1,relief=tk.FLAT,bd=0)
b2 = tk.Button(root,command=bb2,image=p2,relief=tk.FLAT,bd=0)
b3 = tk.Button(root,command=bb3,image=p3,relief=tk.FLAT,bd=0)
b4 = tk.Button(root,command=bb4,image=p4,relief=tk.FLAT,bd=0)
b5 = tk.Button(root,command=bb5,image=p5,relief=tk.FLAT,bd=0)
b6 = tk.Button(root, command=bb6,image=p6,relief=tk.FLAT,bd=0)
b1.place(x=5,y=248)
b2.place(x=75,y=248)
b3.place(x=145, y=248)
b4.place(x=215, y=248)
b5.place(x=285, y=248)
b6.place(x=445, y=248)
else: #关闭表情包面板
ee = 0
b1.destroy()
b2.destroy()
b3.destroy()
b4.destroy()
b5.destroy()
b6.destroy()
```
这个函数用于控制表情面板的开关。它首先检查表情面板的状态,如果是关闭的,就创建6个表情按钮,并将表情面板开关标志设置为1。如果是打开的,就销毁这6个按钮,并将表情面板开关标志设置为0。
7. 定义了一个表情面板开关按钮:
```
eBut = tk.Button(root,text='表情包',command=express_board)
eBut.place(x=5,y=320,width=60,height=30)
```
这个按钮用于打开或关闭表情面板。
综上所述,这段代码是一个聊天程序的一部分,用于实现发送带有表情图片的消息,并提供了一个表情面板,让用户选择不同的表情图片。
import smtplibfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartfrom email.mime.application import MIMEApplication# 发送方的邮箱账号和密码sender_email = 'your_qq_email@qq.com'sender_password = 'your_qq_password'# 接收方的邮箱账号receiver_email = 'receiver_email@example.com'# 创建一个带附件的邮件对象msg = MIMEMultipart()msg['Subject'] = '带附件的邮件'msg['From'] = sender_emailmsg['To'] = receiver_email# 添加邮件正文body = '这是一封带附件的邮件'msg.attach(MIMEText(body, 'plain'))# 添加附件filename = 'example.txt'with open(filename, 'rb') as f: attachment = MIMEApplication(f.read(), _subtype='txt') attachment.add_header('Content-Disposition', 'attachment', filename=filename) msg.attach(attachment)# 发送邮件with smtplib.SMTP_SSL('smtp.qq.com', 465) as smtp: smtp.login(sender_email, sender_password) smtp.sendmail(sender_email, receiver_email, msg.as_string())上述代码封装成函数
好的,可以封装成一个Python函数,如下所示:
```python
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
def send_email_with_attachment(sender_email: str, sender_password: str, receiver_email: str, subject: str, body: str, filename: str):
# 创建一个带附件的邮件对象
msg = MIMEMultipart()
msg['Subject'] = subject
msg['From'] = sender_email
msg['To'] = receiver_email
# 添加邮件正文
msg.attach(MIMEText(body, 'plain'))
# 添加附件
with open(filename, 'rb') as f:
attachment = MIMEApplication(f.read(), _subtype='txt')
attachment.add_header('Content-Disposition', 'attachment', filename=filename)
msg.attach(attachment)
# 发送邮件
with smtplib.SMTP_SSL('smtp.qq.com', 465) as smtp:
smtp.login(sender_email, sender_password)
smtp.sendmail(sender_email, receiver_email, msg.as_string())
```
这个函数接收发送方邮箱的账号和密码、接收方邮箱的账号、邮件主题、邮件正文和附件文件名作为参数,然后使用Python的`smtplib`和`email`模块发送带有附件的邮件。你可以调用这个函数来发送邮件,例如:
```python
sender_email = 'your_qq_email@qq.com'
sender_password = 'your_qq_password'
receiver_email = 'receiver_email@example.com'
subject = '带附件的邮件'
body = '这是一封带附件的邮件'
filename = 'example.txt'
send_email_with_attachment(sender_email, sender_password, receiver_email, subject, body, filename)
```
其中,`sender_email`和`sender_password`需要替换为你自己的QQ邮箱账号和密码,`receiver_email`为接收方的邮箱账号,`subject`为邮件主题,`body`为邮件正文,`filename`为附件的文件名。
阅读全文