python 发送outlook邮件(html)格式需要避的坑

本文揭示了在Outlook 2016中使用HTML和CSS时遇到的问题,包括table样式限制、行内和内联样式应用、图片插入问题、CSS3属性无效以及浮动和定位的挑战。提供了解决方案和技巧,帮助读者避免常见邮件格式困扰。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近有个统计数据后自动发送邮件的需求。公司用的邮箱是outlook2016,在外面写好结构样式后,满心欢喜发到邮箱后,发现根本不是那回事。虽然我不能告诉你哪些属性可以,但是我可以分享哪些属性不可以

1、使用table写结构 

什么ul、dl、li啥的就别想了,在它们身上写样式,很多关键样式不起作用

2、尽量使用行内样式

网上说外联样式不起作用,我没有尝试,我是部分内联样式+部分行内样式

先写内联,不起作用后再移到行内。我这里的尝试的结果是:基本上写在table的样式内联都起作,其他的标签内联样式部分起作用。大家可以灵活尝试

3、图片只能插入不能当背景图片

如何效果中图片需要有margin或者padding,建议切图片的时候就把距离留好,因为样式里设置margin、padding无效,惊不惊喜意不意外◕‿◕

》》这里告诉你如何发送html+图片的邮件

4、css3的属性基本无效 

这个简直不能忍啊,nth-child,border-radius通通失效◉◞◟◉,margin、padding也是时灵时不灵, 用起来◕‿◕

5、浮动、定位、部分display属性失效失效

有并排需求,都用table哈,tr\td用起来◕‿◕

<think>好的,用户想用Python发送Outlook邮件。我需要先确定他们使用的是Outlook的SMTP服务器还是Microsoft GraphAPI。对于大多数情况,SMTP可能更简单,但如果是Office365账户,可能需要使用Graph API或者启用安全选项。首先,SMTP方法比较直接。需要知道Outlook的SMTP服务器地址是smtp.office365.com,端口587,使用TLS加密。用户需要提供邮箱地址和密码,或者应用密码,如果启用了两步验证的话。 然后,考虑使用smtplib库。需要构造MIMEMultipart邮件,添加发件人、收件人、主题和正文。可能需要处理HTML内容或者附件,但用户的问题中没有提到,所以先提供基础版本。 接下来是示例代码。需要导入必要的模块,如smtplib和email.mime中的相关类。代码步骤大致是设置服务器参数,创建邮件对象,连接服务器并发送。要注意处理身份验证错误和可能的异常。 同时,用户可能需要使用应用密码,特别是如果启用了双因素认证。需要提醒他们去账户安全设置中生成应用专用密码,否则会认证失败。另外,是否考虑安全性问题,比如不要在代码中硬编码密码,建议使用环境变量或输入方式获取。不过示例中为了方便可能直接写出来,但需要给出警告。 最后,考虑相关的问题。用户可能想知道如何添加附件、使用HTML内容、处理认证错误,或者使用Microsoft Graph API的方法。所以相关的问题可以围绕这些点展开。</think>以下是使用Python通过SMTP协议发送Outlook邮件的完整解决方案: ```python import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText def send_outlook_email(sender_email, sender_password, receiver_email, subject, body): # 设置SMTP服务器参数 smtp_server = "smtp.office365.com" port = 587 # 使用STARTTLS的默认端口 # 创建邮件对象 msg = MIMEMultipart() msg["From"] = sender_email msg["To"] = receiver_email msg["Subject"] = subject # 添加邮件正文 msg.attach(MIMEText(body, "plain")) try: # 创建安全连接 server = smtplib.SMTP(smtp_server, port) server.starttls() # 升级为加密连接 # 登录邮箱账户 server.login(sender_email, sender_password) # 发送邮件 server.sendmail(sender_email, receiver_email, msg.as_string()) print("邮件发送成功!") except Exception as e: print(f"发送失败: {str(e)}") finally: server.quit() # 使用示例 if __name__ == "__main__": send_outlook_email( sender_email="your_email@outlook.com", sender_password="your_password", receiver_email="recipient@example.com", subject="测试邮件", body="这是一封来自Python的测试邮件" ) ``` 代码解释: 1. 使用标准库`smtplib`和`email`处理邮件协议和内容构造 2. MIMEMultipart容器支持后续扩展附件等功能 3. SMTP服务器地址和端口针对Outlook/Hotmail服务设置 4. starttls()方法建立加密连接保证安全性 5. 完整的异常处理保证程序健壮性 注意事项: - 需要使用真实的Outlook邮箱账号和密码 - 如果启用了双重验证,需要创建应用专用密码 - 邮件内容需遵守反垃圾邮件规范 - 建议将密码存储在环境变量中而非硬编码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值