2010-04-09 41 views
1

我有一个Python代码发送短信到您的手机使用SMTP。当我运行它时,我没有收到任何错误,但它不发送文本消息。我的代码还没有完成,现在我只是简单地介绍一下基础知识。任何帮助,使其发送将不胜感激。smtp短信代码不发送

#infile = open('companyname.txt', 'r') 

import sys 
import smtplib 





li_name = ["3 RIVER WIRELESS", 
"ACS WIRELESS", 
"ADVANTAGE COMMUNICATIONS", 
"AIRTOUCH PAGERS", 
"ALPHNOW", 
"ALLTEL", 
"ALLTELL PCS", 
"AMERITECH PAGING", 
"AMERITECH MESSAGING", 
"AMERITECH CLEARPATH", 
"ARCH PAGERS", 
"AT&T", 
"AT&T FREE2GO", 
"AT&T PCS", 
"AT&T POCKETNET PCS", 
"BELL MOBILITY", 
"BELL SOUTH BLACKBERRY", 
"BELL SOUTH MOBILITY", 
"BOOST", 
"CELLULAR ONE EAST COAST", 
"CELLULAR ONE SOUTH WEST", 
"CELLULAR ONE PCS", 
"CELLULAR ONE", 
"CELLULAR ONE WEST", 
"CELLULAR SOUTH", 
"CENTENNIAL WIRELESS", 
"CINGULAR", 
"CINGULAR WIRELESS", 
"COMCAST", 
"HOUSTON CELLULAR", 
"ILLINOIS VALLY CELLULAR", 
"NEXTELL", 
"SPRINT", 
"SPRINT PCS", 
"T-MOBILE", 
"TRACFONE", 
"VERIZON PAGERS", 
"VERIZON", 
"VIRGIN MOBILE", 
"VIRGIN MOBILE CANADA"] 
li_num = ["@sms.3rivers.net", 
"@paging.acswireless.com", 
"@advantagepaging.com", 
"@alphapage.airtouch.com", 
"@alphanow.net", 
"@message.alltel.com", 
"@message.alltel.com", 
"@paging.acswireless.com", 
"@page.americanmessaging.net", 
"@clearpath.acswireless.com", 
"@archwireless.net", 
"@txt.att.net", 
"@mmode.com", 
"@mobile.att.net", 
"@dpcs.mobile.att.net", 
"@txt.bellmobility.ca", 
"@bellsouthtips.com", 
"@blsdcs.net", 
"@myboostmobile.com", 
"@phone.cellone.net", 
"@swmsg.com", 
"@paging.cellone-sf.com", 
"@mobile.celloneusa.com", 
"@mycellone.com", 
"@csouth1.com", 
"@cwemail.com", 
"@mycingular.com", 
"@mycingular.textmsg.com", 
"@comcastpcs.textmsg.com", 
"@text.houstoncellular.net", 
"@ivctext.com", 
"@messaging.nextel.com", 
"@sprintpaging.com", 
"@messaging.sprintpcs.com", 
"@tmomail.net", 
"@txt.att.net", 
"@myairmail.com", 
"@vtext.com", 
"@vmobl.com", 
"@vmobile.ca"] 

again = 'y' 
while again == 'y': 

    company_domain = '' 
    usr_company = str.upper(raw_input("Enter company: ")) 
    if usr_company in li_name: 
     idx = li_name.index(usr_company) 
     company_domain = li_num[idx] 
     usr_number = raw_input("Enter phone number: ") 
     text_adr = usr_number + company_domain 
     sender = raw_input('enter "from" E-Mail address: ') 
     #if smtplib.SMTPSenderRefused(SMTPResponseException): 
      #print ('your email has been rejected by the server')   
     reciever = text_adr 
     message = ('Testing') 
     smtpObj = smtplib.SMTP('smtp.comcast.net')   
     smtpObj.sendmail(sender,reciever , message) 
     print "Successfully sent email" 
     smtpObj.quit() 



    else: 
     text_adr = "Company Not Found" 

    print ("your phone's email is:") 
    print text_adr 
    again = raw_input('Do you want to ask again?') 
    while again != 'y' and again != 'n': 
     print ('sorry that is an invalid answer!') 
     again = raw_input('Do you want to ask again?') 
    print 



#old code: 

#addr_from = raw_input ('enter your email address') 
#addr_to = text_adr 
#SMTP = 'smtp.comcast.net' 
#msg = ('From: %s\r\nTo: %s\r\n\r\n' 
#% (addr_from, ', '.join(addr_to))) 
#msg = msg + 'This is the message' 
#SMTP.sendmail(addr_from, addr_to, msg) 

回答

1

从基础开始,启用调试smtp对象,看看你得到什么。

smtpObj = smtplib.SMTP('smtp.comcast.net')   
smtpObj.set_debuglevel(10) 
smtpObj.sendmail(sender,reciever , message) 

您可以read about the set_debuglevel call here

+0

我用两个你们代码它说,这之后,这只是一些吧,因为它不会让我把它放在评论:发送:'ehlo [192.168.1.100] \ r \ n'回复:'250-omta09.westchester.pa.mail.comcast.net你好[76.107.170.219],很高兴见到你\ r \ n'发送:'data \ r \ n'回复:'354输入邮件,以“。”结尾。单独一行\ r \ n'回复:retcode(354);消息:输入邮件,以“。”结尾。 (250,'2.0.0 3X7V1e00D4kMwMY3VX7V8L邮件接受发货') – justin 2010-04-09 19:28:15

+0

那么,最后一部分说它把你的消息(250 ...),并将尝试提供它。你确定你有正确的来源/来源/数据? 我知道这可以做到,我在以前的工作中为Nagios放置了一个python库来做类似的工作;发送电子邮件txts给呼叫支持人员。 – AlG 2010-04-09 19:33:13

+0

现在我将如何写回一个txt文件? – justin 2010-04-09 19:47:34

1

变化

smtpObj.sendmail(sender,reciever , message) 

smtpObj.sendmail(sender,[reciever] , message) 

以来的第二个参数sendmail应该是电子邮件地址列表。

PS:你可能想改变recieverreceiver太... :)