python发送邮件带附件

Exchange发送邮件

config.email_url :邮箱服务地址
config.email_user :账户
config.email_pas:密码

import config
import os
from exchangelib import DELEGATE, Account,Credentials,Configuration,NTLM,Message,Mailbox,HTMLBody,FileAttachment
from exchangelib.protocol import BaseProtocol,NoVerifyHTTPAdapter

BaseProtocol.HTTP_ADAPTER_CLS = NoVerifyHTTPAdapter
cred = Credentials(config.email_user,config.email_pass)
con = Configuration(server=config.email_url,credentials=cred,auth_type=NTLM)
account = Account(primary_smtp_address=config.email_user, config=con,autodiscover=False,access_type=DELEGATE)

class Mail():
    def __init__(self,to_list,sub,content,attach_list=[]):
        self.to_list = to_list
        self.sub = sub
        self.content = content
        self.attach_list = attach_list

    def send_mail(self):
        #mail_host = "smtp.126.com"
        to_list = []
        for address in self.to_list:
            to_list.append(Mailbox(email_address=address))
        try:
            m = Message(account=account,folder=account.sent,subject=self.sub,body=self.content,to_recipients=to_list)
            if self.attach_list:
                for fpath in self.attach_list:
                    if not os.path.isfile(fpath):
                        continue
                    with open(fpath,'rb') as f:
                        cont = f.read()
                    name = os.path.basename(fpath)
                    attachf = FileAttachment(name=name,content=cont)
                    m.attach(attachf)
            m.send_and_save()
            return True,'success'
        except Exception as e:
            return False,str(e)

if __name__=='__main__':
    content = '''邮件发送 测试'''
    mail = Mail(['[email protected]'],"测试",content)
    print(mail.send_mail())

163邮箱发送邮件

https://www.cnblogs.com/xiaodai12138/p/10483158.html

猜你喜欢

转载自www.cnblogs.com/i-love-python/p/11438702.html