这是我在php中用于发送短信的代码
if(isset($_POST['frmType'])&& $_POST['frmType'] == "guest_mail"){
$from = $_POST['from'];
$to = $_POST['to'];
$carrier = $_POST['carrier'];
$message = stripslashes($_POST['message']);
if ((empty($from)) || (empty($to)) || (empty($message))) {
echo"<br/>".$from;
echo"<br/>".$to;
echo"<br/>".$message;
}
else if ($carrier == "Verizon" || $carrier == "verizon") {
$formatted_number = $to."@vtext.com";
mail("$formatted_number", "", "$message");
echo"<script type=text/javascript>abc();</script>";
}
else if ($carrier == "T-Mobile" || $carrier == "tmobile" || $carrier == "Tmobile") {
$formatted_number = $to."@tomomail.net";
mail("$formatted_number", "", "$message");
echo"<script type=text/javascript>abc();</script>";
}
}
而不是邮件功能我使用了5种类型的脚本来实现邮件功能
1. mail('$formatted_number','','$message');
2. mail('$formatted_number','','$message','$from');
3. mail('$formatted_number','$subject','$message','$from');
4. mail('$formatted_number','$subject','$message');
5. mail("$formatted_number", "SMS", "$message");
但我的短信仍未送达我的兄弟
我参考以下链接发送短信
http://www.ehow.com/how_7300418_send-sms-using-php.html
http://www.daniweb.com/web-development/php/code/291287/send-text-messages-with-php
http://www.textmessagetool.com/php_sms_script.php
但它仍然不起作用。
我不明白究竟是什么问题?
请帮忙
提前致谢
答案 0 :(得分:3)
要发送短信,您需要运营商。为此,您需要在某些第三方API提供商的网站上注册,以便他们提供API。使用该API,您可以发送短信。
如果您想使用PHP邮件功能发送短信,那么您需要拥有网络短信网关的地址。
phone_umber(unique)@domainname.com
基于移动网络,域名将发生变化。有lists of SMS gateways。
例如,您想向X先生发送文本,您只需将3855550168 @ vtext.com添加到任何电子邮件客户端,输入消息并点击发送即可。这将向Verizon无线网络上的电话号码+1(385)555-0168发送短信。
答案 1 :(得分:1)
通过以下脚本,我的短信成功发送
$message = 'Hello';
$to = XXXXXXXXXX(Unique phone number);
$formatted_number = $to."@domainname";
mail("$formatted_number", " ", "$message");
邮件功能有问题。
对于发送短信,邮件功能的主题字段应为空白。
我的短信已成功发送给我的兄弟。
答案 2 :(得分:0)
实际上,您可以使用PHP mail()发送。这有点棘手,你必须使用标题而不仅仅是#34;来自&#34;地址。拥有一个SMS提供商会更好,但这种方法有效。
发送邮件的代码:
$sms_gateways = file_get_contents('sms_gateways.txt'); //SMS gateways (see txt file below)
$tmp = split("\n", $sms_gateways); //parse gateways file
$SMS_GATEWAYS = array();
for ($i=0; $i<count($tmp); $i++) {
$itm = split(",", $tmp[$i]); //parse title/format
$SMS_GATEWAYS[$itm[0]] = $itm[1]; //add # format to array
}
$eol = "\n"; //varies between Linux/Mac/Windows End Of Line...usually \n
$headers = 'From: SMS <sms@mywebsite.com>'.$eol;
$headers .= 'Reply-To: SMS <sms@mywebsite.com>'.$eol;
$headers .= 'Return-Path: SMS <sms@mywebsite.com>'.$eol;
$headers .= "Message-ID:<".$now." TheSystem@".$_SERVER['SERVER_NAME'].">".$eol;
$headers .= "X-Mailer: PHP v".phpversion().$eol;
$mime_boundary=md5(time());
$headers .= 'MIME-Version: 1.0'.$eol;
$headers .= "Content-Type: text/plain; boundary=\"".$mime_boundary."\"".$eol;
$phone = '8005551212'; //target phone # (do not use any symbols or spaces)
//get A/B/C pieces in phone #:
$phone_a = substr($phone, 0, 3);
$phone_b = substr($phone, 3, 3);
$phone_c = substr($phone, 6, 4);
//assemble gateways emails:
foreach ($SMS_GATEWAYS as $key => $val) {
$email_str = str_replace("#a", $phone_a, str_replace("#b", $phone_b, str_replace("#c", $phone_c, $val)));
if (mail($email_str, $subj, $sms_txt, $headers)) {
//echo "success sending to $email_str<br>\r\n";
$sms_success_count++;
} else {
$sms_fail_count++;
}
}
sms_gateways.txt文件:
Alaska Communications Systems,#a#b#c@msg.acsalaska.com
Alltell Wireless,#a#b#c@message.alltel.com
AT&T Wireless (1),#a#b#c@txt.att.net
Bell Canada,#a#b#c@txt.bell.ca
Boost Mobile,#a#b#c@myboostmobile.com
Cellular One (Dobson),#a#b#c@mobile.celloneusa.com
Cellular South,#a#b#c@csouth1.com
Centennial Wireless,#a#b#c@cwemail.com
Cincinnati Bell,#a#b#c@gocbw.com
Cingular (Postpaid),#a#b#c@cingular.com
Cingular (Prepaid),#a#b#c@cingulartext.com
Cricket,#a#b#c@sms.mycricket.com
Koodo Mobile and Telus Mobnility,#a#b#c@msg.telus.com
MetroPCS,#a#b#c@mymetropcs.com
MTS Mobility,#a#b#c@text.mtsmobility.com
Nextel,#a#b#c@messaging.nextel.com
Pioneer Cellular,#a-#b-#c@zsend.com
Pocket Wireless,#a#b#c@sms.pocket.com
PC Telecom,#a#b#c@mobiletxt.ca
Qwest Wireless,#a#b#c@qwestmp.com
Rogers Wireless,#a#b#c@pcs.rogers.com
SaskTel,#a#b#c@sms.sasktel.com
South Central Communications,#a#b#c@rinasms.com
Sprint(PCS),#a#b#c@messaging.sprintpcs.com
Sprint(Nextel),#a#b#c@page.nextel.com
Straight Talk,#a#b#c@vtext.com
Syringa Wireless,#a#b#c@rinasms.com
T-Mobile (USA),#a#b#c@tmomail.net
Unicel,#a#b#c@utext.com
US Cellular (USA),#a#b#c@email.uscc.net
Verizon (USA),#a#b#c@vtext.com
Viaero (USA),#a#b#c@viaerosms.com
Virgin Mobile (CA),#a#b#c@vmobile.ca
Virgin Mobile (USA),#a#b#c@vmobl.com
此方法向列表中的每个运营商发送一封电子邮件,但其中只有一个实际上会收到它(因为没有两个运营商使用相同的电话号码。)这可能会将您的服务器置于垃圾邮件黑名单中,但是如果只是定期使用它不应该导致问题。
进一步说明:我在网关文本文件中使用#a#b#c的原因是因为某些网关的区号/前缀/后缀格式不同,即:&#34;#a-#b- #c@whatever.com"