我的手机运营商提供短信邮件网关。只需输入电子邮件地址作为SMS消息的目的地即可完成此操作。电子邮件按 5555555555@mycarrier.com 发送
我正在尝试在我的新安卓设备上使用它。标准的android消息传递应用程序将所有以电子邮件地址作为目的地的消息转换为"MMS",并尝试将它们作为数据发送 - 而不是我想做的。
尝试使用android.telephony.SmsManager
:
SmsManager manager = SmsManager.getDefault();
manager.sendTextMessage("address@example.com", null, "Message body here", null, null);
这将引发以下异常:
Caused by: java.lang.NullPointerException
at com.android.internal.telephony.gsm.SmsMessage.getSubmitPduHead(SmsMessage.java:595)
at com.android.internal.telephony.gsm.SmsMessage.getSubmitPdu(SmsMessage.java:295)
at android.telephony.SmsMessage.getSubmitPdu(SmsMessage.java:599)
at android.telephony.SmsManager.sendTextMessage(SmsManager.java:228)
at android.telephony.SmsManager.sendTextMessage(SmsManager.java:107)
我看过这个项目,android-sms-email,它试图做同样的事情。为我的运营商配置时,它也以相同的方式崩溃。
这似乎不是期望的行为,我认为这是一个 Android 错误(一些错误报告暗示了这个问题)。我已经进行了一些实验,可以看到将任何数字和一些符号附加到电子邮件地址不会导致相同的失败,但邮件也不会传递。
我也尝试使用SmsManager.sendMultipartTextMessage
但这在SmsMessage.getSubmitPduHead
中遇到了同样的问题。
再:
SmsManager manager = SmsManager.getDefault();
// Works
manager.sendTextMessage("15555555555", null, "Message body here", null, null);
// Fails
manager.sendTextMessage("address@example.com", null, "Message body here", null, null);
在HTC Desire Z - Android v2.2上进行测试
请查看此文章。
在Android上使用Verizon Motorola Droid以编程方式将SMS发送到电子邮件
如何发送短信回复电子邮件地址?
您应该知道运营商的SMS网关号,并发出如下消息:
SmsManager manager = SmsManager.getDefault();
manager.sendTextMessage("6425", null, "username@domain.com (Subject) message text", null, null);
Verizon wireless-> 6425,AT&T Mobility -> 121 111
我已经发布了一个错误报告:http://code.google.com/p/android/issues/detail?id=16934