在Python中,使用`smtplib`库和`email`模块来发送电子邮件是一种常见的方法,尤其是对于需要使用安全连接(如SSL)发送邮件的情况。虽然大多数情况下启用“不安全访问”选项可能不是最佳实践,但在某些特殊的情况下,例如与一个不支持安全的邮箱服务集成时,可能需要这样做。
以下是一个基本的步骤和代码示例,展示如何不使用“不安全访问”的电子邮件服务器发送带有附件的HTML邮件:
```python
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
# 设置SMTP服务器地址、端口号和登录信息(如果需要的话)
smtp_server = "smtp.example.com"
smtp_port = 587 # 默认的SMTP端口是587,用于非SSL连接
username = "your-email@example.com"
password = "your-password"
# 创建邮件对象
message = MIMEMultipart()
message["From"] = username
message["To"] = "recipient@example.com"
message["Subject"] = "Test Subject"
# 添加正文内容(HTML格式)
html_content = """\
<html>
<body>
<p>你好,世界!</p>
<img src="cid:image1">
</body>
</html>
"""
message.attach(MIMEText(html_content, "html"))
# 添加附件(图片)
with open("path/to/your/image.jpg", "rb") as attachment:
part = MIMEBase("application", "octet-stream")
part.set_payload(attachment.read())
encoders.encode_base64(part)
part.add_header("Content-Disposition", f"attachment; filename=image1.jpg", 'Content-ID' <"image1">)
message.attach(part)
# 连接到SMTP服务器并发送邮件
with smtplib.SMTP(smtp_server, smtp_port) as server:
server.starttls() # 启用TLS加密
server.login(username, password)
server.sendmail(message["From"], message["To"], message.as_string())
print("邮件发送成功!")
```
在这个例子中,我们首先设置了SMTP服务器的地址、端口和登录信息。然后,我们创建了一个`MIMEMultipart`对象来构建邮件内容,包括正文(HTML格式)和一个附件(图片)。最后,我们连接到SMTP服务器并使用SSL加密连接发送邮件。
注意:在实际应用中,你应该确保你的SMTP服务器支持TLS或SSL加密连接,并且你有权限使用该服务器的用户名和密码登录。如果你的SMTP服务器不支持这些功能,那么可能需要寻找一个支持这些功能的替代服务。python
2万+

被折叠的 条评论
为什么被折叠?



