【问题标题】:How to send mails in python [duplicate]如何在python中发送邮件[重复]
【发布时间】:2016-08-12 23:47:50
【问题描述】:

我有这个使用 smtplib 模块发送电子邮件的 python 脚本。

#! /usr/bin/python

import smtplib
from email.mime.image import MIMEImage
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

from1 = "root"
to = "ankur.kulshrestha@ericsson.com"
subject = "test mail"

msg = MIMEMultipart()
msg['From'] = from1
msg['To'] = to
msg['Subject'] = subject

text = """Hi,
This is test messgae"""

html = """\
<html>
  <head></head>
  <body>
    <p>Hi!<br>
       How are you?<br>
       Here is the <a href="http://www.python.org">link</a> you wanted.
    </p>
  </body>
</html>
"""

fi = open("dragon.jpg", 'rb')
img = MIMEImage(fi.read())
fi.close()
msg.attach(img)

part1 = MIMEText(text, 'plain')
part2 = MIMEText(html, 'html')
msg.attach(part1)
msg.attach(part2)

smtp_obj = smtplib.SMTP('rinacac-test.egi.ericsson.com')
smtp_obj.sendmail(from1, to, msg.as_string())
smtp_obj.quit()

脚本正在运行,但我的 html 内容“html”和图像“dragon.jpg”显示为附件。我希望它们显示为我的邮件内容而不是附件。请帮忙

更新: 我仍然无法理解 Multipart/alternative 在这里扮演什么角色..此外,您在下面分享的较早链接中没有显示在邮件中。

msgText = MIMEText('This is the alternative plain text message.')
msgAlternative.attach(msgText)

其次,包含 html 字符串的对象“msgText”附有“msgAlnernative”

msgText = MIMEText('<b>Some <i>HTML</i> text</b> and an image.<br><img src="cid:image1"><br>Nifty!', 'html')
msgAlnernative.attach(msgText)

但是读取图像的对象“msgImage”附加了“msgRoot”。为什么会这样..

msgImage.add_header('Content-ID', '<image1>')
msgRoot.attach(msgImage)

我找不到任何关于 MIMEMultipart/related 和替代的帮助文档。请帮忙

【问题讨论】:

  • #! /usr/bin/perl 不应该是 /usr/bin/python 吗?您可以将图像解码为 base64 字符串并将其放入 标记
  • oops.. 我主要在 perl 上工作 ;).. 无论如何,我运行的脚本就像 'python script.py'.. :)
  • 谢谢拉胡尔..它的工作..但我无法理解这个“相关”和“替代”论点..你能解释一下它们是如何使用的吗?
  • stackoverflow.com/questions/11995720/… 检查这个。如果您需要更多信息,请告诉我。

标签: python email smtp


【解决方案1】:

我认为这将解决您的问题 How to display base64 images in html

如果您的邮件提供商支持电子邮件中的 html 标签

抱歉,这是一个特定的 python 问题,链接中的示例似乎是 php here a python solution

import base64
img = 'test.jpg'
with open(img, 'rb') as imgfile:
    img64 = base64.encodestring(imgfile.read())

###

html = """\
<html>
  <head></head>
  <body>
    <p>Hi!<br>
       How are you?<br>
       Here is the <a href="http://www.python.org">link</a> you wanted.
    </p>
    <img width="160" height="160" alt="tick" src="data:image/jpg;base64,{0}">
  </body>
</html>
""".format(img64)

###

【讨论】:

    猜你喜欢
    • 2020-01-08
    • 1970-01-01
    • 2012-12-31
    • 2014-07-16
    • 2012-04-17
    • 1970-01-01
    • 2013-05-26
    • 2012-05-22
    • 2017-12-08
    相关资源
    最近更新 更多