除了处理使用Gmail登录时,此程序运行良好.我不太确定这是特定于Gmail的问题,还是我的程序有问题.康卡斯特,美国在线和雅虎!工作得很好.
import socket
import smtplib
email_provider = raw_input('Gmail, AOL, Yahoo! or Comcast? ').title()
email_user = raw_input('Type in your full email username. ')
email_pwd = raw_input('Type in your email password. ')
if email_provider == 'Gmail' or 'Google':
smtpserver = smtplib.SMTP("smtp.gmail.com",587)
if email_provider == 'Aol' or 'AOL':
smtpserver = smtplib.SMTP("smtp.aol.com",587)
if email_provider == 'Yahoo' or 'Yahoo!':
smtpserver = smtplib.SMTP("smtp.mail.yahoo.com",587)
if email_provider == 'Comcast' or 'Xfinity':
smtpserver = smtplib.SMTP("smtp.comcast.net",587)
smtpserver.ehlo()
smtpserver.starttls()
smtpserver.ehlo
smtpserver.login(email_user, email_pwd)
sendto = raw_input('Email address to send message to: ')
to = sendto
CC = sendto
subj = raw_input('Subject: ')
header = 'To: ' + to + '\n' + 'From: ' + email_user + '\n' + 'Subject:' + subj +'\n'
print '\nMessage Details:'
print (header)
assignment=raw_input('Enter your message: ')
msg = header + assignment + '\n'
smtpserver.sendmail(email_user, to, msg)
print ('Your message has been sent!')
smtpserver.close()
Run Code Online (Sandbox Code Playgroud)
这是个问题:
if email_provider == 'Gmail' or 'Google':
Run Code Online (Sandbox Code Playgroud)
Python适用于truthy值.任何不是False,None,0或一个空的集合/映射会True.
从它的外观来看,执行链将一直处于下降状态,直到它将您的SMTP连接凭据设置为Comcast的服务器.
所以,实际上,你的第一个声明就是这样说:
if email_provider == 'Gmail' or True
Run Code Online (Sandbox Code Playgroud)
您可能希望将其更改为:
if email_provider in ('Gmail', 'Google')
Run Code Online (Sandbox Code Playgroud)
然后,实际上,这些可以被重写为elif- 在任何给定时间,这些陈述中只有一个是真实的.
| 归档时间: |
|
| 查看次数: |
114 次 |
| 最近记录: |