python3发邮件

# -*- coding: utf-8 -*-
from email import encoders
import os
import traceback
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
import time
import random
# 中文处理
def _format_addr(s):
    name, addr = parseaddr(s)
    return formataddr((Header(name, 'utf-8').encode(), addr))


def send_email(to_addr_in, filepath_in):
    # 邮件发送和接收人配置
    from_addr = 'xxx@163.com'
    smtp_server = 'smtp.163.com'
    password = 'xxx'  # 这是你邮箱的第三方授权客户端密码,并非你的登录密码
    to_addr = to_addr_in
    to_addrs = to_addr.split(',')

    msg = MIMEMultipart()
    msg['From'] = _format_addr('非诚勿扰 <%s>' % random.randint(0x4e00, 0x9fbf))  # 显示的发件人
    # msg['To'] = _format_addr('管理员 <%s>' % to_addr)                # 单个显示的收件人
    msg['To'] = ",".join(to_addrs)  # 多个显示的收件人
    msg['Subject'] = Header('千里求缘', 'utf-8').encode()  # 显示的邮件标题

    # 需要传入的路径
    # filepath = r'D:\test'
    filepath = filepath_in
    r = os.path.exists(filepath)
    if r is False:
        msg.attach(MIMEText('''受友之托!
女,24岁,未婚,身高165cm,体重48kg,河南郑州人。目前在阿里巴巴工作,负责支付宝相关业务,支付宝搜索工号:527536605 可见照片。漂亮大方,爱好读书、健身、游泳。杭州有房一套,有车。父母退休,家庭不拜金,人务实,一直没有合适的男朋友。她本人要求不高,只要对她真心好就行。
''', 'plain', 'utf-8'))
    else:
        # 邮件正文是MIMEText:
        msg.attach(MIMEText('send with file...', 'plain', 'utf-8'))
        # 遍历指定目录,显示目录下的所有文件名
        pathDir = os.listdir(filepath)
        for allDir in pathDir:
            child = os.path.join(filepath, allDir)
            # child.decode('gbk')  # .decode('gbk')是解决中文显示乱码问题
            # 添加附件就是加上一个MIMEBase,从本地读取一个文件
            with open(child, 'rb') as f:
                # 设置附件的MIME和文件名,这里是txt类型:
                mime = MIMEBase('1', 'png', filename=allDir)
                # 加上必要的头信息:
                mime.add_header('Content-Disposition', 'attachment', filename=allDir)
                mime.add_header('Content-ID', '<0>')
                mime.add_header('X-Attachment-Id', '0')
                # 把附件的内容读进来:
                mime.set_payload(f.read())
                # 用Base64编码:
                encoders.encode_base64(mime)
                # 添加到MIMEMultipart:
                msg.attach(mime)
    try:
        server = smtplib.SMTP(smtp_server, 25)
        server.set_debuglevel(1)  # 用于显示邮件发送的执行步骤
        server.login(from_addr, password)
        server.sendmail(from_addr, to_addrs, msg.as_string())
        server.quit()
    except Exception as e:
        print("Error: unable to send email")
        print(traceback.format_exc())


if __name__ == '__main__':
    # while True:
    send_email('xxx@qq.com','')
        # time.sleep(2)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值