通过Clickatell网关发送MMS

1 投票
1 回答
1441 浏览
提问于 2025-04-18 16:37

我正在尝试通过Clickatell给我的手机发送一条多媒体信息(MMS)。我可以发送普通的短信(SMS),但是发送MMS时,我收到了一个200的返回代码和一个ID,但当我在他们的网站上查这个ID时,只能看到状态9,表示在发送我的信息时出现了路由错误。

我使用一个(修补过的)版本的python-messaging来构建.mms文件:

from messaging.mms.message import MMSMessage, MMSMessagePage

mms = MMSMessage()
mms.headers['To'] = '+1<my phone number>/TYPE=PLMN'
mms.headers['Message-Type'] = 'm-send-req'
mms.headers['Subject'] = 'Test python-messaging.mms'

slide1 = MMSMessagePage()
slide1.add_image('/home/<me>/Pictures/test.jpg')

mms.add_page(slide1)

mms.to_file('test.mms')

然后我把test.mms文件放在我的公共Dropbox里,并进行了如下的HTTP请求:

r = requests.get('https://api.clickatell.com/mms/ind_push', params={
    'user': <username>,
    'password': <password>,
    'api_id': <api_id>,
    'to': +1<my phone number>,
    'mms_subject': 'test',
    'mms_from': 'testname',
    'mms_class': 80,
    'mms_expire': 10000,
    'mms_url': <public Dropbox link to the .mms file>
})

然后我得到了这个:

>>> r.status_code
200
>>> r.text
'ID: <a valid ID>'

但是当我在Clickatell的网站上查这个ID时,我看到的是:MMS状态9 - 路由错误

我是不是做错了什么?我觉得很奇怪的是,我需要在MMS文件和Clickatell的API中都包含to字段,但我看不出我有什么完全错误的地方。

1 个回答

2

手机运营商通常会阻止第三方向他们的移动网络用户发送多媒体信息(MMS),如果这个信息不是由网络上的用户自己发出的。

你可以考虑发送一条短信,里面包含一个图片的链接,用户可以点击这个链接,通过他们手机的网页浏览器来查看图片。

撰写回答