使用PHP向手机发送短信时,如何控制发件人姓名?

时间:2013-04-25 00:43:40

标签: php email mobile sms

我的脚本如下所示:

<?php    
mail('xxxxxxxxxx@msg.telus.com', '', 'Message', 'From: John Doe \r\n', '-fxxxxxxxxxx@email.com');
?>

当我通过将脚本发送到手机来测试脚本时,它收到的信息很好,但它说消息来自“9999999999”。我的问题:

  1. 9999999999是什么意思?我能从谷歌收集到的最好的信息是它表示私人号码/垃圾邮件。
  2. 有没有办法让发件人显示为“Jon Doe”?从本质上讲,我需要能够使用PHP脚本来控制电话收到消息时显示的发件人姓名。
  3. 我正在使用Android手机(Galaxy S3)进行测试,但这需要能够在所有手机和所有服务提供商上运行。任何解决方案?

    更新

    经过一些测试,这是我发现的:

    • 使用Fred的解决方案,根本不会发送任何消息。
    • 如果我在Fred的解决方案中删除了header参数中的名称,并删除了电子邮件周围的括号,我得到的结果与之前相同(它在发送者字段中以9999999999发送)。
    • 如果在执行上述更改后,我将电子邮件从确实存在的地址(我到目前为止一直使用我的电子邮件)更改为地址不存在,我得到相同的9999999999结果。
    • 如果我将电子邮件更改为不是电子邮件格式的邮件(例如,只是John Doe而不是john@doe.com),则根本不会发送邮件。

    所有这些都是我的手机和我母亲的手机(不同的型号 - 不是智能手机 - 但使用相同的服务提供商,而她的手机是6245而不是9999999999)的情况。考虑到这一点,既然弗雷德的解决方案对他有用,但对我不起作用,我只能得出结论,这取决于提供者。另外,在我的提供商的情况下,他们必须使用正则表达式来确保标题格式化为电子邮件,无论电子邮件服务器是否确实存在。我想我将不得不更多地研究mail()函数。

1 个答案:

答案 0 :(得分:0)

在这里,试试这个尺寸:

<?php    
mail('xxxxxxxxxx@msg.telus.com', '', 'Message', "From: John Doe <xxxxxxxxxx@email.com>\r\n");
?>

添加了选项:

例如,如果您的表单包含以下内容:

<label for='name'>Enter Name: </label>
<input type="text" name="name">

<label for='email'>Enter Email Address:</label>
<input type="text" name="email">

<textarea rows="2" name="message" cols="20"></textarea>

然后你可以使用这样的东西:

<?php

$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];

mail("xxxxxxxxxx@msg.telus.com", "Subject here", "$message", "From: $name <$email>\r\n");
echo "Message sent.";

?>

我当然是在假设。