【问题标题】:smtp text message code not sendingsmtp 短信代码未发送
【发布时间】:2010-04-09 18:27:01
【问题描述】:

我有一个 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)

【问题讨论】:

    标签: python text smtp message


    【解决方案1】:

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

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

    你可以read about the set_debuglevel call here

    【讨论】:

    • 在我使用了你们俩的代码之后,它说,这只是其中的一部分,因为它不允许我将它放在评论中:发送:'ehlo [192.168.1.100] \r\n' 回复:'250-omta09.westchester.pa.mail.comcast.net 你好 [76.107.170.219],很高兴见到你\r\n' 发送:'数据\r\n' 回复:'354输入邮件,以“.”结尾单独一行\r\n' 回复:retcode (354); Msg:输入邮件,以“.”结尾单独一行数据:(250, '2.0.0 3X7V1e00D4kMwMY3VX7V8L 邮件接受投递')
    • 嗯,最后一部分说它接收了您的消息(250...)并将尝试传递它。您确定您已正确整理了 to/from/data 吗?我知道这是可以做到的,我在之前的工作中为 Nagios 整理了一个 python 库来做类似的事情;将电子邮件 txt 发送给待命的支持人员。
    • 使用 smtplib,没试过。 dox (docs.python.org/library/smtplib.html) 说,如果您没有收到异常,则必须假定邮件已发送。这是您在不深入了解或自己处理握手的情况下获得的最佳效果。
    • 它说:回复:retcode (354); Msg:输入邮件,以“.”结尾单独一行数据:(354,'输入邮件,以“.”结尾')但我不知道该怎么做
    • 你已经做到了。您看到的是 SMTP 事务日志。这就是从 smtplib 发送到 smtp 服务器的每个命令——甚至是你不必做的事情。如果您仍在使用 sendmail 功能,它将正确发送所有内容。
    【解决方案2】:

    改变

    smtpObj.sendmail(sender,reciever , message)
    

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

    因为sendmail 的第二个参数应该是一个电子邮件地址列表。

    PS:您可能也想将reciever 更改为receiver... :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-22
      • 1970-01-01
      • 2017-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-23
      相关资源
      最近更新 更多