【问题标题】:Equal sign in javascript mailto url getting parsed on Androidjavascript mailto url中的等号在Android上被解析
【发布时间】:2016-01-21 17:43:49
【问题描述】:

我有一个网络应用程序,它通过按钮 onclick="email();" 在电子邮件正文中发送 URL 链接。该 url 是一个带有.php?id= 的 php 页面,当从 Android 设备发送时,等号之后的所有内容都会被截断。 我已尝试对 URL 进行编码,但没有任何效果... 我知道mailto 标记使用= 符号作为解析字符...但仍然无法弄清楚。

这是代码。

  function email() {
  window.location.href = "mailto:?subject=LIVE link!&body=Here is a link for a LIVE demo!%0D%0Awww.domain.ca/scores/" + sport + "php%3Fid%3d" + id   +"%0D%0A%0D%0AThanks";
  }

在这方面有什么建议或经验吗? 适用于所有其他平台(iOS、Windows 等)

【问题讨论】:

  • 您应该使用encodeURIComponent,而不是尝试自己进行编码。
  • 我更正了代码以使用encodeURIComponent,但它仍然不起作用
  • 可能不相关,但你不是在php%3F之前错过了.吗?
  • 我正在尝试重现这一点,但我没有安卓手机,而且 BrowserStack 的安卓模拟器似乎没有配置邮件客户端,所以 mailto: 链接没有工作。
  • 我有“。”在我的真实代码中......当我为stackoverflow格式化我的代码时,我必须不小心把它编辑掉

标签: javascript php android


【解决方案1】:

原来是特定于 Android 设备上的 Outlook 应用程序。

【讨论】:

    【解决方案2】:

    这是来自我的一个网站..

         <?php
        if(!isset($_POST['submit']))
    {
    //This page should not be accessed directly. Need to submit the form.
    echo "error; you need to submit the form!";
     }
    $name = $_POST['name'];
    $visitor_email = $_POST['mail'];
    $message = $_POST['appointment'];
    
    //Validate first
    if(empty($name)||empty($visitor_email)) 
    {
    echo "Name and email are mandatory!";
    exit;
    }
    
    if(IsInjected($visitor_email))
    {
    echo "Bad email value!";
    exit;
    }
    
    $email_from = 'Client';//<== update the email address
    $email_subject = "Booking an appointment";
    $email_body = "You have received a new message from the user $name.\n"."Here 
    is the message:\n $message";
    $to = "somebody@hotmail.com ";//<== update the email address
    $headers = "From: $email_from \r\n";
    $headers .= "Reply-To: $visitor_email \r\n";
    //Send the email!
    mail($to,$email_subject,$email_body,$headers);
    //done. redirect to thank-you page.
    header('Location: aboutUs.html');
    
    
    // Function to validate against any email injection attempts
    function IsInjected($str)
    {
      $injections = array('(\n+)',
              '(\r+)',
              '(\t+)',
              '(%0A+)',
              '(%0D+)',
              '(%08+)',
              '(%09+)'
              );
      $inject = join('|', $injections);
      $inject = "/$inject/i";
      if(preg_match($inject,$str))
      {
      return true;
      }
      else
      {
       return false;
      }
    }
    
    ?> 
    

    【讨论】:

    • 感谢您发布代码,但此代码如何回答问题?
    猜你喜欢
    • 1970-01-01
    • 2011-05-06
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 2016-08-16
    • 1970-01-01
    • 2012-03-23
    相关资源
    最近更新 更多