利用E-MAIL协议内容,E-MAIL信件格式,SMTP会话过程,base64编码原理设计一个发送E-MAIL的程序
时间: 2023-12-29 07:01:55 浏览: 34
以下是一个简单的Python程序,用于发送E-MAIL:
```python
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.header import Header
from email.utils import formataddr
from email import encoders
import base64
# 设置SMTP服务器地址和端口号
smtp_server = 'smtp.example.com'
smtp_port = 587
# 设置发件人和收件人
sender = 'your_email@example.com'
sender_name = 'Your Name'
recipient = 'recipient_email@example.com'
# 设置邮件主题和正文
subject = 'Test Email'
body = 'This is a test email.'
# 创建一个MIMEMultipart对象,用于包含正文和附件
message = MIMEMultipart()
message['From'] = formataddr((str(Header(sender_name, 'utf-8')), sender))
message['To'] = recipient
message['Subject'] = Header(subject, 'utf-8')
# 将邮件正文添加到MIMEMultipart对象中
message.attach(MIMEText(body, 'plain', 'utf-8'))
# 添加一个附件
filename = 'example.pdf'
attachment = open(filename, 'rb')
mime_base = MIMEBase('application', 'octet-stream', filename=filename)
mime_base.set_payload(attachment.read())
encoders.encode_base64(mime_base)
mime_base.add_header('Content-Disposition', 'attachment', filename=filename)
message.attach(mime_base)
# 将MIMEMultipart对象转换为字符串
email_content = message.as_string()
# 登录SMTP服务器并发送邮件
server = smtplib.SMTP(smtp_server, smtp_port)
server.ehlo()
server.starttls()
server.login(sender, 'your_password')
server.sendmail(sender, recipient, email_content)
server.quit()
```
在该程序中,我们使用了Python内置的smtplib模块来连接SMTP服务器并发送邮件。我们还使用了email模块来创建MIME格式的邮件内容,其中包括邮件正文和附件。最后,我们还使用了base64编码来将附件转换为字符串。