如何在PHP中通过mail()函数发送短信?

如何在PHP中通过mail()函数发送短信?,php,phpmyadmin,Php,Phpmyadmin,这是我用php编写的发送短信的代码 if(isset($_POST['frmType'])&& $_POST['frmType'] == "guest_mail"){ $from = $_POST['from']; $to = $_POST['to']; $carrier = $_POST['carrier']; $message = stripslashes($_POST['message']);

这是我用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>"; 
        }
    }
但我的短信仍然没有发送给我的兄弟

我参考以下链接发送短信

但它仍然不起作用

我不明白到底是什么问题

请帮忙


提前感谢您发送您需要的短信息。为此,您需要在第三方API提供商的网站上注册,以便他们提供API。使用该API,您可以发送短信

如果你想使用PHP邮件功能发送短信,那么你需要有网络短信网关的地址

电话号码(唯一)@domainname.com
基于移动网络,域名将发生变化。有


比如说,你想给X先生发一条短信,你可以简单地加上3855550168@vtext.com对于任何电子邮件客户端,键入消息并点击发送。这将向Verizon无线网络上的电话号码+1(385)555-0168发送短信。

要发送短信,您需要运营商。为此,您需要在第三方API提供商的网站上注册,以便他们提供API。使用该API,您可以发送短信

如果你想使用PHP邮件功能发送短信,那么你需要有网络短信网关的地址

电话号码(唯一)@domainname.com
基于移动网络,域名将发生变化。有


比如说,你想给X先生发一条短信,你可以简单地加上3855550168@vtext.com对于任何电子邮件客户端,键入消息并点击发送。这将向Verizon无线网络上的电话号码+1(385)555-0168发送一条短信。

通过以下脚本,我的短信已成功发送

$message = 'Hello';

$to = XXXXXXXXXX(Unique phone number);

$formatted_number = $to."@domainname";

mail("$formatted_number", " ", "$message");
邮件功能有问题

对于发送SMS,邮件功能的主题字段应为空


我的短信已成功发送给我的兄弟。

通过以下脚本,我的短信已成功发送

$message = 'Hello';

$to = XXXXXXXXXX(Unique phone number);

$formatted_number = $to."@domainname";

mail("$formatted_number", " ", "$message");
邮件功能有问题

对于发送SMS,邮件功能的主题字段应为空


我的短信已成功发送给我哥哥。

实际上,您可以使用PHP mail()发送。这有点棘手,您必须使用标题,而不仅仅是“发件人”地址。最好有一个短信服务提供商,但这种方法是有效的

发送邮件的代码:

$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, "", $sms_txt, $headers)) {
    //echo "success sending to $email_str<br>\r\n";
    $sms_success_count++;
  } else {
    $sms_fail_count++;
  }
}
这种方法会向列表中的每个运营商发送电子邮件,但只有一家运营商会收到电子邮件(因为没有两家运营商使用相同的电话号码)。这可能会将您的服务器列入垃圾邮件黑名单,但如果只定期使用,则不会造成问题


进一步注意:我在网关文本文件中使用#a#b#c的原因是,某些网关的区号/前缀/后缀格式不同,即:“#a-#b”-#c@whatever.com“

实际上,您可以使用PHP mail()发送邮件。这有点棘手,您必须使用标题,而不仅仅是“发件人”地址。最好有一个短信服务提供商,但这种方法是有效的

发送邮件的代码:

$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, "", $sms_txt, $headers)) {
    //echo "success sending to $email_str<br>\r\n";
    $sms_success_count++;
  } else {
    $sms_fail_count++;
  }
}
这种方法会向列表中的每个运营商发送电子邮件,但只有一家运营商会收到电子邮件(因为没有两家运营商使用相同的电话号码)。这可能会将您的服务器列入垃圾邮件黑名单,但如果只定期使用,则不会造成问题



进一步注意:我在网关文本文件中使用#a#b#c的原因是,某些网关的区号/前缀/后缀格式不同,即:“#a-#b”-#c@whatever.com“

您不能:D可能是彩信,但它是特定于运营商的。要发送短信息,请查看@MihaRekar,请查看给定的链接,我只需跟随它查看短信息功能。@MihaRekar是的,您可以,我已经实现了几个软件,通过短信息网关发送短信息。为什么你认为你不能呢?正如所说,这些是彩信,不是短信;)邮件功能运行良好。我查过了。但是短信还是没有发送给我哥哥。你不能:D可能是彩信,但它是特定于运营商的。要发送短信息,请查看@MihaRekar,请查看给定的链接,我只需跟随它查看短信息功能。@MihaRekar是的,您可以,我已经实现了几个软件,通过短信息网关发送短信息。为什么你认为你不能呢?正如所说,这些是彩信,不是短信;)邮件功能运行良好。我查过了。但是短信仍然没有发送给我的兄弟。谢谢,但是在上面给出的链接中,他们没有提到注册第三方API。你能告诉我如何向第三方注册吗?我在互联网上搜索过,我发现在美国我们不需要向第三方注册API,我们可以通过邮件功能直接发送短信。但是我不知道为什么我的短信没有发送?谢谢,是的,我在我的代码中就是这么做的。但是短信仍然没有发送给我的兄弟。谢谢,但是在上面给出的链接中,他们没有提到注册第三方API。你能告诉我如何向第三方注册吗?我在互联网上搜索过,我发现在美国我们不需要向第三方注册API,我们可以通过邮件功能直接发送短信。但是我不知道为什么我的短信没有发送?谢谢,是的,我在我的代码中就是这么做的。但是短信仍然没有发送给我的兄弟。通过这种方式,我可以通过PHP函数在手机上发送短信…:)你在@domainname上使用了什么?。如果我使用的是localhost或127.0.0.1。我如何发送msg?@Phoenix,在我的情况下,我使用了网站域名URL。例如http:www.abc.com通过这种方式,我可以通过PHP函数在手机上发送短信..:)你在@domainname上使用了什么?。如果我使用的是localhost或127.0.0.1。我如何发送msg?@Phoenix,在我的情况下,我使用了网站域名URL。例如http:www.abc.com它在本地主机上工作吗?这段代码不是wokring。我完全忽略了这一点,并为几年后的问题道歉;它不太可能在本地主机上工作-如果您的本地服务器是合法的电子邮件服务器,它可能会工作。这仍然适用于我(即使是s