2017-04-24 23 views
0

次のコードを書いて、指定したメールアドレスに "test"を送信するだけのメールを送信しました。 smtplibで複数回メールをPythonで送信する

import smtplib 
     sentFrom = "my email" 
     to = input("Enter email: ") 
     #numberEmails = raw_input ("Enter number of emails to send") 
     messageText = "test" 

     msg = "From: %s\n To: %s\n\n%s" % (sentFrom, to, messageText) 

     username = str("my email") 
     password = str("my password") 

     try : 
      server = smtplib.SMTP("smtp.gmail.com", 587) 
      server.ehlo() 
      server.starttls() 
      server.login(username,password) 
      server.sendmail(sentFrom, to, msg) 
      server.quit()  
      print (" Email has sent") 
     except : 
     print("email NOT sent") 

私は例えば、1以上の電子メールを送信しよう

5*server.sendmail(sentFrom, to, msg) 

つだけのメールを送信し、その後、私はエラーが出る「電子メール送信されていません。」私は最初の電子メールが送信された後に "電子メールが送信されました"、最初の後に "電子メールは送信されません"という印刷のみを表示しません。この問題を解決するにはどうすればよいですか?私は最終的にinput()をしたいので、送信する電子メールの数を入力することができ、プログラムは入力された電子メールの数を送信します。私はこれが一番上のコメントと思われると思います。 server.sendmailコマンドにnumberEmailsコマンドを掛けることはできますか?

これは私の最初の日であり、Pythonを使用しているので、簡単に私のplsに行く。 :)

答えて

1

これを乗算することはできません。

倍数は数字でのみ行うことができます。server.sendmail(sentFrom, to, msg)は数字になりません。

必要な量をループする必要があります。

ので、例として、この版画「Hello World」の5回:

def test(): 
    print "hello world" 

numberEmails = 5 

for _ in range(numberEmails): 
    test() 

はオフコースあなたはそれが整数ではない場合はintにごnumberEmailsを解析する必要があります。

結局あなたは、私はwhileループを使用して終了し、このブロック全体をループによく書かれた応答のための感謝を5回

try : 
     server = smtplib.SMTP("smtp.gmail.com", 587) 
     server.ehlo() 
     server.starttls() 
     server.login(username,password) 
     server.sendmail(sentFrom, to, msg) 
     server.quit()  
     print (" Email has sent") 
    except : 
    print("email NOT sent") 
+0

を持っています。 – raviriley

関連する問題