一个python发送可以带图片的脚本

805次阅读
没有评论
一个 python 发送可以带图片的脚本

前言

最近发现,在服务器上执行脚本的话,执行完成之后,用邮件去发送执行结果也不错。

原因是发现三大运营商对于自身的邮箱,是有短信提醒支持的。

并且这个短信提醒是免费的。

所以变相的拥有了免费发短信到手机的接口

脚本

下面是我用 python 写了一个邮件发送脚本

可以附带图片,暂时只支持发送 1 张图片,以后发现不够用再添加

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

class Sendmail():
    def __init__(self,mail_host = "",mail_sender ="",mail_passwd = ""):
        self.mail_host = mail_host
        self.mail_sender = mail_sender
        self.mail_passwd = mail_passwd

    def send(self,to_mail,subject,content,image_url):
        msg = MIMEMultipart('related')
        msg["Subject"] = subject
        msg["From"] = self.mail_sender + '@example.com'
        msg["To"] = to_mail
        #html 格式的邮件正文
        content = f'''
        <body>
        <p>{content}</p>
        <p> 图片如下:</p>
        <p><img src="cid:imagecontent" alt="imagecontent"></p>
        </body>
        '''if image_url else f'''
        <body>
        <p>{content}</p>
        </body>
        '''msg.attach(MIMEText(content,'html','utf-8'))
        if image_url:
            #读取图片
            with open(image_url, 'rb') as f:
                msgImage = MIMEImage(f.read())

            # 定义图片 ID,在 HTML 文本中引用
            msgImage.add_header('Content-ID', 'imagecontent')
            msg.attach(msgImage)

        ## 发送邮件
        s = smtplib.SMTP()
        s.connect(self.mail_host, 25)
        s.login(self.mail_sender, self.mail_passwd)
        s.sendmail(self.mail_sender, [to_mail], msg.as_string())
        # print(msg)
        print(f'{subject} to-->{to_mail} 邮件发送完成')
        s.quit()
def main():
    s = Sendmail()
    s.send('[email protected]','邮件脚本诞生了','这里放内容',"这里可以放图片")

if __name__ == "__main__":
    main()

利用的是 smtp 协议

正文完
 
评论(没有评论)
验证码