Получение smtplib.SMTPRecipientsRefused при отправке электронной почты через скрипт python - PullRequest
0 голосов
/ 05 мая 2020

Я новичок от ie до python и пытаюсь прочитать адреса электронной почты из текстового файла, объединяя 100 адресов электронной почты и инициируя отправку электронной почты из почтового ящика Outlook на все эти объединенные адреса электронной почты, сохраняя их в b cc. В надежде увеличить лимит с 500 до 600 в будущем, поскольку поле b cc способно хранить около 700 адресов электронной почты.

При тестировании этого скрипта я столкнулся с проблемой, если я объединю более 5 адресов электронной почты.

поднять SMTPRecipientsRefused (senderrs)

smtplib.SMTPRecipientsRefused: {': (421, b'4.7.0 Слишком много ошибок протокола (6) в этом соединении, закрытие канала передачи . ')}

Ниже приведен шаблон кода. Во время поиска в Google я заметил, что поле b cc должно быть списком, в котором я назначаю строку объединенных писем. Может ли это быть единственной причиной или будут другие возможности?

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

Recipient=""
message="Sample email content"

def TriggerEmail():  # connecting with outlook mailbox and trigger email by having 100 email addresses in bcc
    smtpserver = smtplib.SMTP(host='smtpserver.org.net', port=587)
    smtpserver.ehlo()
    smtpserver.starttls()
    smtpserver.ehlo()

    smtpserver.login('mailbox_user_id','mailbox_password')
    emailFrom = 'Mailbox_name@org.com'
    global Recipient
    global message
    msg = MIMEMultipart()
    msg['From'] = emailFrom
    msg['Bcc'] = Recipient
    msg['Subject'] = "Sample Email Subject"
    msg.attach(MIMEText(message,'plain'))
    smtpserver.send_message(msg)
    del msg
    smtpserver.quit()

def main():
    intCount = 0
    flg = True
    global Recipient
    with open("EmailAddresses.txt", "r") as f:  #reading hundreads of email addresses from the text file (one row has one email address)
        for line in f:
            if intCount < 100: # concatenating 100 email addresses and then trigger email once 100 email addresses are concatenated
                if Recipient == "":
                    Recipient = line.strip()
                else:
                    Recipient += "," + line.strip()
                intCount += 1
                flg = True
            else:
                TriggerEmail()
                Recipient = line.strip()
                intCount = 1
                flg = False
        if (flg):
            TriggerEmail()

if __name__ == '__main__':
    main()

Я использую Python 3.6. Я пробовал запускать сценарий из Git bash, а также через Anaconda (используя Spyder).

Благодарю за вашу помощь!

Спасибо.

...