如何使用Python创建并发送Outlook邮件?
如何用Python创建并发送Outlook邮件
下面介绍两种常用的实现方式,根据你的场景选择即可:
方法一:借助本地Outlook客户端发送(Windows专属)
这种方式需要你本地已经安装了Outlook客户端,通过调用系统COM组件来操作。
- 先安装依赖库:
pip install pywin32
- 示例代码:
import win32com.client as win32 # 创建Outlook应用实例 outlook = win32.Dispatch('outlook.application') # 创建新邮件 mail = outlook.CreateItem(0) # 设置邮件基本信息 mail.To = '收件人邮箱@example.com' mail.CC = '抄送人邮箱@example.com' # 可选 mail.Subject = '这是Python发送的测试邮件' # 设置邮件正文(支持HTML格式) mail.HTMLBody = ''' <p>你好,</p> <p>这是一封通过Python自动发送的Outlook邮件。</p> <p>附件在下方,请查收。</p> ''' # 添加附件(可选) attachment_path = r'C:\路径\到\你的\文件.pdf' mail.Attachments.Add(attachment_path) # 发送邮件 mail.Send()
注意:运行前确保Outlook已经登录了你的账号,且没有弹出需要手动确认的安全提示。
方法二:通过Outlook SMTP服务器发送(跨平台)
如果不想依赖本地Outlook客户端,可以用SMTP协议直接连接Outlook的邮件服务器发送,这种方式Windows、Mac、Linux都能用。
先开启Outlook的SMTP权限:
- 登录Outlook网页版,进入「设置」→「邮件」→「同步电子邮件」→ 开启POP和SMTP服务
- 生成应用专用密码(如果你的账号开启了两步验证,必须用这个替代登录密码)
安装依赖库:
pip install smtplib email
- 示例代码:
import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.base import MIMEBase from email import encoders # 配置信息 sender_email = '你的outlook邮箱@outlook.com' sender_password = '你的应用专用密码或登录密码' receiver_email = '收件人邮箱@example.com' smtp_server = 'smtp.office365.com' smtp_port = 587 # 创建邮件对象 msg = MIMEMultipart() msg['From'] = sender_email msg['To'] = receiver_email msg['Subject'] = 'Python SMTP发送的Outlook测试邮件' # 添加正文 body = '这是通过SMTP协议发送的Outlook邮件正文内容' msg.attach(MIMEText(body, 'plain')) # 添加附件(可选) attachment_path = r'C:\路径\到\文件.txt' with open(attachment_path, '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= {attachment_path.split("\\")[-1]}') msg.attach(part) # 连接服务器并发送 try: server = smtplib.SMTP(smtp_server, smtp_port) server.starttls() # 开启TLS加密 server.login(sender_email, sender_password) text = msg.as_string() server.sendmail(sender_email, receiver_email, text) print("邮件发送成功") except Exception as e: print(f"发送失败:{str(e)}") finally: server.quit()
注意:如果用的是hotmail邮箱,SMTP服务器同样是smtp.office365.com,端口587;两步验证用户必须使用应用专用密码,否则会登录失败。
内容的提问来源于stack exchange,提问作者Cindy
相关产品推荐
相关产品推荐

