-1
私は電子メールあたり約30kbの添付ファイルで約250の電子メールを送信することになっています。各添付ファイルは受信者に固有です。私の下のコードはうまくいきますが、遅すぎると感じていますが、7秒おきにメールを送信し、250のメールに29分かかります。明らかにそれを平行にすることは事を一緒に動かすのに役立つでしょう、私は自分のコードを改善できるかどうかについて興味があります。このような大きな成果をもたらしてはならないので、私は目標とする添付ファイルと電子メールをまだ実装していません。Python - バルク電子メールを送信
import os,datetime
def send_mail(recipient, subject, message, files=None):
import smtplib,email,os
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
from os.path import basename
username = "myemail"
password ="mypass"
mailServer = smtplib.SMTP('smtp-mail.outlook.com', 587)
mailServer.ehlo()
mailServer.starttls()
mailServer.ehlo()
mailServer.login(username, password)
for i in range(1,15):
try:
msg = MIMEMultipart()
msg['From'] = username
msg['To'] = recipient
msg['Subject'] = subject
msg.attach(MIMEText(message))
for f in files or []:
with open(f, "rb") as fil:
part = MIMEApplication(
fil.read(),
Name=basename(f)
)
part['Content-Disposition'] = 'attachment; filename="%s"' % basename(f)
msg.attach(part)
print('sending mail to ' + recipient + ' on ' + subject)
mailServer.sendmail(username, recipient, msg.as_string())
except error as e:
print(str(e))
mailServer.close()
print(datetime.datetime.now())
send_mail('recipent, 'Sent using Python', 'May the force be with you.',["colours.xls"])
print(datetime.datetime.now())
なぜ14回ループするのですか?各ループごとに異なるものは得られないようです。 –
こんにちは@PeterWood、上記のように、私はパフォーマンスの差をあまりにも大きくするべきではないので、添付ファイルと電子メールをまだターゲットにしていません。私は後でそれらを差し込むことができます。最初は、電子メールを送信するときにうまくいくものを欲しいですし、スクリプトをパラメータ化します – Krishn