代码之家  ›  专栏  ›  技术社区  ›  Tyler

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

  •  0
  • Tyler  · 技术社区  · 13 年前

    我的脚本如下所示:

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

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

    1. 9999999999是什么意思?我能从谷歌收集到的最好的信息是,它指示了一个私人号码/垃圾邮件。
    2. 有没有办法让发件人显示为“Jon Doe”?从本质上讲,我需要能够使用PHP脚本来控制手机收到消息时显示在消息上的发件人名称。

    我正在使用Android手机(Galaxy S3)进行测试,但这需要能够在所有手机和服务提供商上运行。有什么解决方案吗?

    更新

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

    • 使用Fred的解决方案,根本不会发送任何消息。
    • 如果我去掉Fred解决方案中标头参数中的名称,去掉电子邮件周围的括号,我会得到与以前相同的结果(它在sender字段中使用9999999999发送)。
    • 如果在实现上述更改后,我将电子邮件从一个确实存在的地址(到目前为止我一直在使用我的电子邮件)更改为一个不存在的地址,我会得到相同的9999999999结果。
    • 如果我将电子邮件更改为非电子邮件格式的内容(例如,只有John Doe而不是john@doe.com),它根本不发送。

    所有这些都适用于我的手机和我妈妈的手机(不同型号——不是智能手机——但使用相同的服务提供商,而她的手机是6245,而不是9999999999)。考虑到这一点,由于弗雷德的解决方案对他有效,但对我无效,我只能得出结论,这取决于提供商。此外,在我的提供商的情况下,无论电子邮件服务器是否真的存在,他们都必须使用正则表达式来确保标题被格式化为电子邮件。我想我必须进一步研究mail()函数。

    1 回复  |  直到 13 年前
        1
  •  -1
  •   Funk Forty Niner    13 年前

    在这里,试试这个尺寸:

    <?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.";
    
    ?>
    

    当然,我是在假设。

    推荐文章