使用 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() 不起作用。问题是 &lt;a href='recover_pass_get_mail.php'&gt;Link&lt;/a&gt; 显示为纯文本而不是格式化的 HTML。 token_generator() 的功能无关。出于所有意图和目的,token_generator() 可以被忽略,我们可以想象 Partho 正在发送一些任意链接(例如,&lt;a href='http://example.com/random'&gt;Click for Adventure&lt;/a&gt;)。因此,您可以忽略 token_generator() 甚至存在的事实,因为它与问题真正无关。

以上是关于使用 php mail() 函数发送链接的主要内容,如果未能解决你的问题,请参考以下文章

如何使用php的mail函数

使用php artisan命令的URL :: asset()为我提供了localhost链接

通过 sendgrid/mail 发送时,如何向我的电子邮件添加取消订阅链接

PHP发送E-mail---新手教程

在PHP中使用Mail函数发送邮件

我的邮件没有被php函数mail()发送[重复]