使用 php mail() 函数发送链接
Posted
技术标签:
【中文标题】使用 php mail() 函数发送链接【英文标题】:send link using php mail() function 【发布时间】:2015-06-26 07:51:50 【问题描述】:用户应该收到格式如下的电子邮件:----- 复制令牌:xxxxx 并将其粘贴到这个 Link ----- 我的代码:
$message="Copy the token: ".
token_generator(10)." ".
"And paste it in the link "."<a href='recover_pass_get_mail.php'>Link</a>";
其中 xxxxx 由 token_generator(10) 函数返回。 但是用户获取的格式代码是写的
【问题讨论】:
你的错误到底是什么? user get --- 复制token: xxxxx 并粘贴到链接Link 这不是预期的 @ParthoProtim 你能附上你发送电子邮件的代码 $subject="密码恢复"; $message="复制令牌:"。令牌生成器(10)。“”。 "并将其粘贴到链接中"。"链接"; $来自=“xyz”;邮件($email, $subject, $message, $from); 【参考方案1】:您的电子邮件功能似乎对 html 标记反应不佳,您可能在 $header
对象中遗漏了这一点。
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
读这个, https://css-tricks.com/sending-nice-html-email-with-php/
它有很好的解释
【讨论】:
您希望我从该站点复制粘贴该上下文吗?主要问题是人们在打开新问题之前不会使用谷歌搜索。 不,您应该从该站点添加一些代码,并根据您发布的链接解释它如何、为什么、何时最适合 OP。 我用谷歌搜索了很多次。我按照他们说的试过了。甚至堆栈溢出的答案对我也不起作用。但这些答案对提问者有用。 好吧,@ParthoProtim 我已经添加了您可能缺少的主要内容。 在您的邮件功能mail($to, $subject, $message, $headers);
中的对象名称说明了一切..【参考方案2】:
您应该考虑很多点......您可以在以下示例代码中注意到它们:
<?php
$fromTitle = "From Title";
$emailFrom = 'example_from@gmail.com';
$emailTo = 'example_to@gmail.com';
$token = token_generator(10);
$subject = "Password Recovery";
$message = "Copy the token: $token And paste it in the link <a href='recover_pass_get_mail.php'>Link</a>";
$random_hash = md5(uniqid(time()));
$header = "From: $fromTitle <$emailFrom>\r\n";
$header .= "Reply-To: ".$emailFrom."\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"".$random_hash."\"\r\n\r\n";
$header .= "This is token email.\r\n";
$header .= "--".$random_hash."\r\n";
$header .= "Content-type:text/html; charset=UTF-8\r\n";
$header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
@mail($emailTo, $subject, $message, $header);
?>
【讨论】:
我不知道为什么有人投反对票..如果有什么问题,请告诉我们..我的答案已经过测试并且可以正常工作token_generator(10)
是否在回应什么?
是的,我同意我们必须为此使用变量 .. 我会改变我的答案 .. 和你的函数 token_generator 因为我认为应该返回令牌而不是回显令牌
赞成。这是一个伟大而完整的答案。我唯一想说的是:我认为你在滥用边界(参见 Kevin McMahon 的这篇文章:goo.gl/Li1jJ);并且$from
应在$header = "From: ".$from // ...
中更改为$fromTitle
(我已为此提交了对您答案的编辑)。除此之外,很好的答案。在阅读本文之前,我什至不知道multipart/mixed
MIME 类型。
@SpencerDoak 好吧,让我跟你说清楚,我在发送电子邮件之前遇到了很多问题,经过搜索,我发现这是对我来说最好的解决方案,但我不知道这是什么意思每件事情,,你知道,,有时你没有时间,你只需要解决问题并拯救你的一天..我必须阅读更多关于它的信息;)【参考方案3】:
您的字符串中存在一些问题,但是,这里有几点需要考虑:
首先,您可能想要(只是作为实践)将token_generator(10)
分配给脚本上的变量。
像这样的
$token = token_generator(10)
并将$token
传递给脚本
其次,您在使用电子邮件中的字符串时遇到了一些问题。您不需要将链接包装在 a href
标签中(事实上,如果用户没有打开 HTML 电子邮件(因为很多人没有打开),这将是一个问题。只需发布链接本身。
第三,为什么不把令牌附加到 URL 上呢?这对用户来说是一个更简单的步骤。这是一个例子:
$message="Follow this link: http://(url)recover_pass_get_mail.php?token=$token";
然后您可以使用
从 URL 中获取令牌$_GET['token'];
【讨论】:
【参考方案4】:你试过了吗?
$myToken = token_generator(10);
$message="Copy the token: $myToken And paste it in the link <a href='recover_pass_get_mail.php'>Link</a>";
DEMO
【讨论】:
这对不使用 HTML 邮件的用户有何帮助? 是的。但我仍然得到:......并将其粘贴到链接中 Link @PedroLobito,没有迹象表明token_generator()
不起作用。问题是 <a href='recover_pass_get_mail.php'>Link</a>
显示为纯文本而不是格式化的 HTML。 token_generator()
的功能无关。出于所有意图和目的,token_generator()
可以被忽略,我们可以想象 Partho 正在发送一些任意链接(例如,<a href='http://example.com/random'>Click for Adventure</a>
)。因此,您可以忽略 token_generator()
甚至存在的事实,因为它与问题真正无关。以上是关于使用 php mail() 函数发送链接的主要内容,如果未能解决你的问题,请参考以下文章
使用php artisan命令的URL :: asset()为我提供了localhost链接