python 发送邮件 email

import os
import smtplib
import logging
from report_system.utils import excel_util
from report_system.utils import style_util
from email import encoders
from email.header import Header
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

# 第三方 SMTP 服务
mail_host = "smtp.mxhichina.com"  # 设置服务器
mail_user = "mail@***.com"  # 用户名
mail_pass = "mima"  # 口令
sender = 'mail@***.com'


def send_files_mail(files, text, title, html=None, receiver='name@***.com', content_type='plain', tab=5):
    try:
        """
        发送附件信息
        :param files: 要发送的发送文件的集合信息
        :param title: 要发送的标题
        :param text: 发送的文件的内容
        :param receiver: 想要发送的目标人物  eg: 'aaa@***.com;bbb@***.com'
        :param content_type: content_type  默认 plain
        :return:
        """
        # 创建一个带附件的实例
        message = MIMEMultipart()
        message['From'] = sender
        message['To'] = receiver
        message['Subject'] = Header(title, 'utf-8')
        # 邮件正文内容
        message.attach(MIMEText(text, content_type, 'utf-8'))

        if html:
            message.attach(MIMEText(html, 'html', 'utf-8'))

        contype = 'application/octet-stream'
        maintype, subtype = contype.split('/', 1)

        for file in files if isinstance(files, list) else str(files).split(';'):
            # 构造附件
            data = open(file.strip(), 'rb')
            file_msg = MIMEBase(maintype, subtype)
            file_msg.set_payload(data.read())
            data.close()
            encoders.encode_base64(file_msg)
            basename = os.path.basename(file)
            file_msg.add_header('Content-Disposition', 'attachment', filename=basename)
            message.attach(file_msg)

        smtp_obj = smtplib.SMTP_SSL(host=mail_host)  # 注意:如果遇到发送失败的情况(提示远程主机拒接连接),这里要使用SMTP_SSL方法
        smtp_obj.connect(mail_host)
        smtp_obj.login(mail_user, mail_pass)
        smtp_obj.sendmail(sender, str(receiver).strip().split(";"), message.as_string())
        logging.info("邮件发送成功!!!to = {}".format(receiver))
        logging.info("发送成功的文件是 files = {}".format(files))
        smtp_obj.quit()
    except Exception as e:
        if tab > 0:
            logging.error('发送失败!  正在尝试重新发送!请稍等。。。。。。')
            send_files_mail(files, text, title, receiver=receiver, content_type=content_type, tab=tab - 1)
        else:
            logging.exception(e)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Python发送邮件,你可以使用smtplib库。首先,你需要导入相应的库,比如smtplib、email.mime.text和email.header。接下来,你需要创建一个SMTP对象,并连接到指定的邮件服务器。然后,你需要登录到你的邮箱并设置授权码。接下来,你可以构造邮件内容,包括正文、发件人和收件人的信息以及主题。最后,使用SMTP对象的sendmail方法将邮件发送出去。 下面是一个示例代码,可以帮助你更好地理解这个过程: ```python import smtplib from email.mime.text import MIMEText from email.header import Header # 创建SMTP对象 smtp = smtplib.SMTP() # 连接到邮件服务器 smtp.connect("smtp.126.com", port=25) # 登录邮箱 smtp.login(user="你的邮箱地址", password="你的邮箱授权码") # 构造邮件内容 message = MIMEText('邮件内容...', 'plain', 'utf-8') message['From'] = Header("发件人昵称", 'utf-8') message['To'] = Header("收件人昵称", 'utf-8') message['Subject'] = Header('邮件主题', 'utf-8') # 发送邮件 smtp.sendmail(from_addr="发件人邮箱地址", to_addrs="收件人邮箱地址", msg=message.as_string()) # 关闭连接 smtp.quit() ``` 请确保将示例代码的相应信息替换为你自己的邮箱地址、授权码、发件人昵称、收件人昵称和主题。这样,你就可以使用Python发送邮件了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [python发送邮件](https://blog.csdn.net/qq_40243750/article/details/126032582)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值