19

可能重复:
如何使用 python 发送电子邮件附件

我已经使用 Python 在 sendEmail 上做了一些工作我得到了这个代码

import smtplib
def SendAnEmail( usr, psw, fromaddr, toaddr):
    # SMTP server
    server=smtplib.SMTP('smtp.gmail.com:587')
    server.starttls()
    server.login(usr,psw)
    # Send 
    msg="text message ....... "

    server.sendmail(fromaddr, toaddr, msg)
    server.quit()
if __name__ == '__main__':
    # Fill info...
    usr='example@sender.ex'
    psw='password'
    fromaddr= usr
    toaddr='example@recevier.ex'
    SendAnEmail( usr, psw, fromaddr, toaddr)

如果我需要添加图像(附加图像)怎么办?有人知道吗?

4

2 回答 2

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


def SendMail(ImgFileName):
    with open(ImgFileName, 'rb') as f:
        img_data = f.read()

    msg = MIMEMultipart()
    msg['Subject'] = 'subject'
    msg['From'] = 'e@mail.cc'
    msg['To'] = 'e@mail.cc'

    text = MIMEText("test")
    msg.attach(text)
    image = MIMEImage(img_data, name=os.path.basename(ImgFileName))
    msg.attach(image)

    s = smtplib.SMTP(Server, Port)
    s.ehlo()
    s.starttls()
    s.ehlo()
    s.login(UserName, UserPassword)
    s.sendmail(From, To, msg.as_string())
    s.quit()
于 2012-10-25T15:15:42.083 回答
0

阅读文档。smtpblib 文档的最后几行内容如下:

注意 通常,您会希望使用电子邮件包的功能来构造电子邮件,然后您可以将其转换为字符串并通过 sendmail() 发送;请参阅电子邮件:示例。

并指向:https ://docs.python.org/3/library/email.examples.html

这有一个确切的例子。

于 2012-10-25T13:58:08.940 回答