我试图用我写的这个函数发送一封电子邮件:
def send_email(recip, subj, content):
email = MIMEMultipart('alternative')
email['To'] = ",".join(recip)
email['From'] = 'xyz@abc.com'
email['Subject'] = subj
body = MIMEText(content, 'html')
email.attach(body)
smtpObj = smtplib.SMTP('something.com')
smtpObj.sendmail('sender@abc.com', recip, email.as_string())
电子邮件是发送的,当我查看源,我也可以在那里我的css代码,但它显然没有使用CSS代码。我正在使用Outlook。
<html>
<head> <style>
{css}
</style> </head>
<body>
<img src = "header.png">
<div>
<h6> Trade Date - {date} </h6>
</div>
<div>
<h6> SUMMARY </h6>
{summary}
</div>
<div>
<h6> DETAILS </h6>
{details}
</div>
<div>
<h6> INTERNAL DESKS </h6>
{desk}
</div>
</body>
</html>
上面的html代码是结构化的,css代码出现在{css}区域中。有人能告诉我出了什么问题吗?我知道Outlook应该支持头部内部的样式标记,就像我正在做的那样
发布于 2022-11-02 13:25:45
每个电子邮件客户端(Outlook、Thunderbird、web浏览器中的Gmail等)以不同的方式处理CSS。但是最终的结果是,您通常应该使用,而不是,而依赖嵌入在head元素中的CSS --它只是在电子邮件中不可靠地工作。最有效的方法是使用内联CSS,即在正文中的实际HTML元素上使用CSS。有关合理解释,请参见这篇文章。
这是一个老问题,看不到真正的解决办法。有一些付费服务可以在一组不同的客户端中测试电子邮件消息,或者您可以手动测试(例如,除了您已经拥有的Outlook之外,还可以安装Thunderbird (免费)和设置gmail帐户(免费),您可以轻松地覆盖大部分电子邮件用户)。
发布于 2022-11-02 13:26:05
为了实现最佳的互操作性,您应该只编写内联CSS。也就是说,对元素使用style="..."
属性。
一些电子邮件客户端会忽略您的<style>
元素。
https://stackoverflow.com/questions/74295702
复制