2010-04-09 179 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太... :)