smtp 短信代码未发送

1 投票
2 回答
2204 浏览
提问于 2025-04-15 21:25

我有一段Python代码,可以通过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)

2 个回答

1

从基础开始,给smtp对象开启调试功能,看看会得到什么信息。

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

你可以在这里了解关于set_debuglevel的更多信息

1

smtpObj.sendmail(sender,reciever , message)

改成

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

因为传给 sendmail 的第二个参数应该是一个邮箱地址的列表。

顺便说一下,你可能也想把 reciever 改成 receiver... :)

撰写回答