在 python 中使用 smtplib 邮寄彩色 HTML
Mailing colored HTML using smtplib in python
我有一个 HTML 文件,它本质上是一个 table。然而,table 中的一些单元格被突出显示,当我将我的 HTML 文件转换为 other Whosebug answers 中指定的文本时,单元格的颜色和其他 CSS 规范消失了在邮件中。
代码:
import smtplib
import csv
from tabulate import tabulate
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
text = open("final.html", 'r').read()
message = MIMEMultipart(
"alternative", None, [MIMEText(text), MIMEText(text,'html')])
server = smtplib.SMTP('smtp.gmail.com', 25)
server.connect("smtp.gmail.com",25)
server.ehlo()
server.starttls()
server.ehlo()
server.login('mail', "password")
server.sendmail('from_mail', 'to_mail', message.as_string())
server.quit()
最后,消息被转换为字符串,如message.as_string()
。我想当消息被转换成字符串时,CSS 格式化选项被拿走了。
HTML 输入文件:
邮件中的当前输出:
如有任何帮助,我们将不胜感激。非常感谢!
首先,大多数电子邮件客户端不支持邮件中的外部 CSS。这可以转换为 Inline CSS with premailer
.
import smtplib
import ssl
import premailer
from email.message import EmailMessage
SERVER_ADDRESS = "smtp.gmail.com"
SERVER_PORT = 587
EMAIL_ADDRESS = 'your email'
EMAIL_PASSWORD = 'your email password'
RECIPIENT_EMAIL = 'recipient's mail'
text = open("final.html", 'r').read()
text = premailer.transform(text)
msg = EmailMessage()
msg['Subject'] = "the subject"
msg['From'] = EMAIL_ADDRESS
msg['To'] = RECIPIENT_EMAIL
msg.set_content('content')
msg.add_alternative(text, subtype='html')
# Create a SSLContext object with default settings.
context = ssl.create_default_context()
with smtplib.SMTP(SERVER_ADDRESS, SERVER_PORT) as smtp:
smtp.ehlo()
smtp.starttls(context=context)
smtp.ehlo()
smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
smtp.send_message(msg)
这 github repo 很有帮助。
我有一个 HTML 文件,它本质上是一个 table。然而,table 中的一些单元格被突出显示,当我将我的 HTML 文件转换为 other Whosebug answers 中指定的文本时,单元格的颜色和其他 CSS 规范消失了在邮件中。
代码:
import smtplib
import csv
from tabulate import tabulate
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
text = open("final.html", 'r').read()
message = MIMEMultipart(
"alternative", None, [MIMEText(text), MIMEText(text,'html')])
server = smtplib.SMTP('smtp.gmail.com', 25)
server.connect("smtp.gmail.com",25)
server.ehlo()
server.starttls()
server.ehlo()
server.login('mail', "password")
server.sendmail('from_mail', 'to_mail', message.as_string())
server.quit()
最后,消息被转换为字符串,如message.as_string()
。我想当消息被转换成字符串时,CSS 格式化选项被拿走了。
HTML 输入文件:
邮件中的当前输出:
如有任何帮助,我们将不胜感激。非常感谢!
首先,大多数电子邮件客户端不支持邮件中的外部 CSS。这可以转换为 Inline CSS with premailer
.
import smtplib
import ssl
import premailer
from email.message import EmailMessage
SERVER_ADDRESS = "smtp.gmail.com"
SERVER_PORT = 587
EMAIL_ADDRESS = 'your email'
EMAIL_PASSWORD = 'your email password'
RECIPIENT_EMAIL = 'recipient's mail'
text = open("final.html", 'r').read()
text = premailer.transform(text)
msg = EmailMessage()
msg['Subject'] = "the subject"
msg['From'] = EMAIL_ADDRESS
msg['To'] = RECIPIENT_EMAIL
msg.set_content('content')
msg.add_alternative(text, subtype='html')
# Create a SSLContext object with default settings.
context = ssl.create_default_context()
with smtplib.SMTP(SERVER_ADDRESS, SERVER_PORT) as smtp:
smtp.ehlo()
smtp.starttls(context=context)
smtp.ehlo()
smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
smtp.send_message(msg)
这 github repo 很有帮助。