python отправляет почту через ms exchange server за прокси - PullRequest
0 голосов
/ 23 января 2019

Для моей машины, после входа в систему Windows, вход в outlook автоматически с анонимной аутентификацией.

Outlook подключается к Microsoft Exchange по протоколу HTTP и подключается только по протоколу SSL.

Сервер Microsoft Exchange

code@ms.exchange.server

Главное имя в сертификате известно при подключении к прокси-серверам.

Header:email.server.sample

URL-адрес для подключения к моему прокси-серверу для Exchange известен.

https://email.server.sample

«Проверка подлинности согласования» используется при подключении к прокси-серверу для Exchange.

Теперь вопрос в том, как python может отправить электронное письмо с такой ситуацией?

1 Ответ

0 голосов
/ 26 января 2019

Вот что я сделал для этой ситуации, надежда работает и для вас:

см. Эту страницу для документации:

Документация для внешнего вида объекта

import numpy as np
import pandas as pd
import re
import datetime
from dateutil.relativedelta import relativedelta
import win32com.client as win32
import tldextract
outlook = win32.Dispatch('outlook.application')
import win32com.client 
from win32com.mapi import mapitags
# outlook = win32com.client.Dispatch("Outlook")
outlook_app = win32com.client.Dispatch("Outlook.Application")
MAPI = outlook_app.GetNamespace("MAPI")

inbox = MAPI.GetDefaultFolder(6)

def send_email(To,cc_list = "",
             bcc_list = "", subject = "", htmlbody = ""):
    mail = outlook.CreateItem(0)
    mail.To = To
    mail.cc = cc_list
    mail.Bcc = bcc_list
    mail.Subject = subject
    mail.HTMLBody = htmlbody 
    mail.Send()

def move_and_save_attachments_for_all_inbox_emails():
    done = False
    while(not done):
        counter = 0
        for mail in inbox.Items:
            if(mail.Class == 43):
                counter += 1
                save_current_email_attachments(mail)
                move_current_email(mail)
        if counter == 0:
            done = True

def move_current_email(mail):
    if(mail.Class==43):
        if(mail.SenderEmailType=='EX'):
            sender = mail.Sender.GetExchangeUser().PrimarySmtpAddress
        else:
            sender = mail.SenderEmailAddress
        domainname = tldextract.extract(sender).domain
        try:
            mail.Move(inbox.Folders[domainname.upper()])
        except:
            inbox.Folders.add(domainname.upper())
            mail.Move(inbox.Folders[domainname.upper()])

def save_current_email_attachments(mail):
    if(mail.Class==43):
        if(mail.SenderEmailType=='EX'):
            sender = mail.Sender.GetExchangeUser().PrimarySmtpAddress
        else:
            sender = mail.SenderEmailAddress
        username, domainname = sender.split('@')
        for attachment in mail.Attachments:
            attachment.SaveAsFile('attachments\\'+domainname+'_'+attachment.Filename)

def move_all_mails_into_inbox():
    done = False
    while(not done):
        counter = 0
        for folder in inbox.folders:
            for mail in folder.Items:
                counter += 1
                mail.Move(inbox)
        if(counter == 0):
            done = True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...