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(['mrhusong@126.com'],"测试",content)
print(mail.send_mail())