【问题标题】:How can i display a link depending on device system. (PHP mail)如何根据设备系统显示链接。 (PHP 邮件)
【发布时间】:2018-12-26 03:40:36
【问题描述】:

我正在使用 php 发送电子邮件。 当用户打开我的电子邮件时,我会发送一些文本和链接。 我不希望,如果用户使用 iphone - istore 上会有一个链接,或者他使用的是 android - 会有一个玩市场的链接,或者如果他使用的是网络浏览器 (PC) -它会显示一个网站链接。

如何创建这些案例? 我有一个使用 js 的想法,但我无法通过电子邮件发送 js 代码。

【问题讨论】:

  • 由于您也无法在电子邮件中嵌入PHP,您是否在发送电子邮件之前检测用户平台?为什么不只包含所有链接,以防万一他在手机上浏览您的网站但在桌面上收到电子邮件?
  • 当你用php发送了一封邮件,你怎么知道客户端将来会用哪个浏览器打开这封邮件?必须要JS,否则没办法。

标签: javascript php email hyperlink message


【解决方案1】:

您可以使用user-agent 并在 JavaScript 中检测用户的设备。

/**
 * Determine the mobile operating system.
 * This function returns one of 'iOS', 'Android', 'Windows Phone', or 'unknown'.
 *
 * @returns {String}
 */
function getMobileOperatingSystem() {
  var userAgent = navigator.userAgent || navigator.vendor || window.opera;

      // Windows Phone must come first because its UA also contains "Android"
    if (/windows phone/i.test(userAgent)) {
        return "Windows Phone";
    }else if (/android/i.test(userAgent)) {
        return "Android";
    }else if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) {
        return "iOS";
    }else if (screen.width >= 480) {
        return "PC"
    }

    return "unknown";
}

但是,在您的情况下,没有必要检测用户的设备或操作系统。正如 cmets 中提到的,为什么不把所有的链接放在那里,让用户选择他们喜欢的平台?

另一方面,例如,这可以通过在特定设备上发送电子邮件并在另一台设备上检查相同的电子邮件来轻松实现。

尽管如此,由于 JavaScript 在客户端运行,因此用户可以操纵 JavaScript,因此出于安全原因,您可能希望使用 server-side detection with PHP 或预构建的 mobile-checking libary

参考

How to detect mobile or PC users?
How to detect operating system?

【讨论】:

  • 不过,这最多可以在用户在网站上并触发发送此电子邮件的那一刻起预先工作。 一封实际的电子邮件中,您可以忘记执行自己的 JavaScript,这几乎会在任何地方被阻止。
  • 如果在实际发送电子邮件之前选择了正确的链接怎么办?
  • 那么问题将是当我检查我的电子邮件时它是否仍然“正确的链接”......这可能在完全不同的设备上。
  • 没错,这就是为什么我建议把每个链接放在那里,让用户选择合适的。
【解决方案2】:

您可以使用get_browser()
或获取操作系统和浏览器的$_SERVER['HTTP_USER_AGENT']
请记住,此信息可能会被欺骗。

如果您有此信息,您可以使用您要发送的链接交叉检查用户代理。以下是可能的useragents的列表@

【讨论】:

  • 我认为这是不可能的,他不会一直知道用户将使用哪个电子邮件客户端打开邮件。必须用JS来完成,谢谢
  • 我实际上是在发送电子邮件之前提醒的。他显然不能(不应该)通过邮件发送脚本。但是,他也可以将邮件发送到一个简单的 html 登录页面,在那里他检查此信息并打印出正确的链接。
  • JS 在电子邮件客户端中工作,但不能保证。我认为它应该与 JS 一起使用,否则没有其他选择,因为用户可以从 iPhone 和 android 这两种设备打开邮件,这将导致错误版本的电子邮件作为其静态。
  • 我没有考虑到这一点。但是,我不会在邮件中发送脚本,因为担心邮件服务器会抱怨并将我置于垃圾邮件或更糟的状态......被列入官方过滤器列表,导致潜在的漏洞邮件。就像我们的管理员如此英勇地实现......我会在发送邮件之前简单地检查一下,如果这在他的用例中是可能的。他还说他不能在邮件中发送js脚本没有?
猜你喜欢
  • 1970-01-01
  • 2019-05-15
  • 2021-10-25
  • 2020-01-27
  • 2011-09-03
  • 1970-01-01
  • 2019-11-08
  • 2012-02-25
  • 2013-05-19
相关资源
最近更新 更多