2017-06-21 299 views
0

有人可以帮我从我的交换账户发送电子邮件并添加附件。 SMTP不起作用,我收到了即时超时问题。 0365不会将副本保存到我发送的文件夹中。其他唯一的一个我所知道的是exchangelib如何发送带有Python和Microsoft Exchange附件的电子邮件?

from exchangelib import Account, Credentials, Message, Mailbox, FileAttachment 
from email.mime.multipart import MIMEMultipart 
from email.mime.base import MIMEBase 
from email.mime.text import MIMEText 
from email.utils import formatdate 
from email import encoders 

email = 'XXXXXXXX' 
password = 'XXXXXXXX' 

a = Account(email, credentials=Credentials(email, password), autodiscover=True) 



dir_path = ('C:/Users/Istcrmt/Documents/Python/PythonforAnaconda3.5/') 
excel_name = 'test.xlsx' 

#attach an excel file: 


for i in email_list.itertuples(): 
# if you want a copy in the 'Sent' folder 
    m = Message(
     account=a 
     ,folder=a.sent 
     ,subject=(i.AGENCY_NAME + ' I made an email script.') 
     ,body='All bodies are beautiful' 
     ,to_recipients=[Mailbox(email_address=i.NEW_MAIL)]) 

#attach files 
    m.attachments.append(part) 
    # m.attach(cover_letter) 

    m.send_and_save() 
+0

SMTP应该工作;你确定你已经连接到SMTP吗? – pstatix

+0

哦不,我不能做一个连接,这是我的问题 – Tinkinc

+0

即使超时参数和或ssl我得到超时 – Tinkinc

回答

2

这是你如何发送电子邮件与exchangelib附件:

from exchangelib import ServiceAccount, Configuration, Account, DELEGATE 
from exchangelib import Message, Mailbox, FileAttachment 

from config import cfg # load your credentials 


def send_email(account, subject, body, recipients, attachments=None): 
    """ 
    Send an email. 

    Parameters 
    ---------- 
    account : Account object 
    subject : str 
    body : str 
    recipients : list of str 
     Each str is and email adress 
    attachments : list of tuples or None 
     (filename, binary contents) 

    Examples 
    -------- 
    >>> send_email(account, 'Subject line', 'Hello!', ['[email protected]']) 
    """ 
    to_recipients = [] 
    for recipient in recipients: 
     to_recipients.append(Mailbox(email_address=recipient)) 
    # Create message 
    m = Message(account=account, 
       folder=account.sent, 
       subject=subject, 
       body=body, 
       to_recipients=to_recipients) 

    # attach files 
    for attachment_name, attachment_content in attachments or []: 
     file = FileAttachment(name=attachment_name, content=attachment_content) 
     m.attach(file) 
    m.send_and_save() 


credentials = ServiceAccount(username=cfg['user'], 
          password=cfg['password']) 

config = Configuration(server=cfg['server'], credentials=credentials) 
account = Account(primary_smtp_address=cfg['smtp_address'], config=config, 
        autodiscover=False, access_type=DELEGATE) 

# Read attachment 
attachments = [] 
with open('filestorage/numbers-test-document.pdf', 'rb') as f: 
    content = f.read() 
attachments.append(('whatever.pdf', content)) 

# Send email 
send_email(account, 'Test 14:35', 'works', ['[email protected]'], 
      attachments=attachments) 

相关:Read emails and download attachment from an Exchange Server

相关问题