📜  电子邮件操作(1)

📅  最后修改于: 2023-12-03 15:40:57.269000             🧑  作者: Mango

电子邮件操作介绍

电子邮件(Electronic Mail)是一种电子信息传输方式,是互联网应用最普遍的服务之一。邮件程序员通常对电子邮件操作非常熟悉,本文将从以下几个方面进行介绍:

发送邮件

发送邮件是常见的操作之一,常用的邮件发送协议有SMTP、POP3和IMAP等。其中,SMTP(Simple Mail Transfer Protocol)是邮件传输协议,负责发送邮件;而POP3(Post Office Protocol Version 3)和IMAP(Internet Message Access Protocol)则是邮件接收协议,负责从邮件服务器上接收邮件。

以下是Python使用SMTP发送邮件的代码示例:

import smtplib
from email.mime.text import MIMEText

SMTP_SERVER = 'smtp.qq.com'
SMTP_PORT = 587
SMTP_USER = 'example@qq.com'
SMTP_PASSWORD = 'password'

message = MIMEText('This is a test email!')
message['From'] = SMTP_USER
message['To'] = 'recipient@example.com'
message['Subject'] = 'Test email'

server = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
server.starttls()
server.login(SMTP_USER, SMTP_PASSWORD)
server.sendmail(SMTP_USER, ['recipient@example.com'], message.as_string())
server.quit()
接收邮件

接收邮件需要先连接到邮件服务器上,常用邮件接收协议有POP3和IMAP。以下是Python使用IMAP接收邮件的代码示例:

import imaplib
import email

IMAP_SERVER = 'imap.qq.com'
IMAP_PORT = 993
IMAP_USER = 'example@qq.com'
IMAP_PASSWORD = 'password'

mail = imaplib.IMAP4_SSL(IMAP_SERVER, IMAP_PORT)
mail.login(IMAP_USER, IMAP_PASSWORD)
mail.select('inbox')

typ, data = mail.search(None, 'ALL')
for num in data[0].split():
    typ, data = mail.fetch(num, '(RFC822)')
    message = email.message_from_bytes(data[0][1])
    print('From:', message['From'])
    print('Subject:', message['Subject'])

mail.close()
mail.logout()
解析邮件

解析邮件主要指解析邮件头部和邮件内容。每个邮件都有标准的MIME格式组织,可以使用Python标准库email来解析,示例代码如下:

import email

def parse_email(raw_email):
    message = email.message_from_bytes(raw_email)
    print('From:', message['From'])
    print('Subject:', message['Subject'])
    print('Text:', message.get_payload())

# Example usage
raw_email = b'Subject: Test email\r\nFrom: example@example.com\r\n\r\nHello World!'
parse_email(raw_email)
加密邮件

加密邮件可以保证邮件内容在传输过程中不被窃听和篡改。常用的邮件加密方式有TLS和SSL。以下是Python使用TLS加密发送邮件的代码示例:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication

SMTP_SERVER = 'smtp.qq.com'
SMTP_PORT = 587
SMTP_USER = 'example@qq.com'
SMTP_PASSWORD = 'password'

message = MIMEMultipart()
message['From'] = SMTP_USER
message['To'] = 'recipient@example.com'
message['Subject'] = 'Test email'
message.attach(MIMEText('This is a test email!'))

with open('attachment.txt', 'rb') as f:
    attachment = MIMEApplication(f.read(), _subtype='txt')
    attachment.add_header('Content-Disposition', 'attachment', filename='attachment.txt')
    message.attach(attachment)

server = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
server.starttls()
server.login(SMTP_USER, SMTP_PASSWORD)
server.sendmail(SMTP_USER, ['recipient@example.com'], message.as_string())
server.quit()

以上是电子邮件操作的介绍,希望对程序员们有所帮助。