如何直接在Controller内部编写链接?

时间:2019-06-11 09:02:43

标签: php codeigniter email

实际上,我想创建一封邮件,其中包含一些要发送给人们的链接。 但是我在编写链接时遇到了问题,因为不能将CodeIgniter视为纯PHP脚本,它无法让我们直接将链接写到所需的任何变量。

我尝试将一些html代码直接写到保存邮件消息的邮件string variable上,但是它不起作用。
而且,我也尝试在string variable内尝试一些CI代码,但由于该代码是纯文本,因此才被视为代码。

我已经研究了一些articles,它告诉我在view内创建它,但这不是我期望的。

我还阅读了CodeIgniter documentation,并听了他们的其中一个陈述,

  

邮件类型。如果您发送HTML电子邮件,则必须将其完整发送   网页。确保您没有任何相对链接或相对   图片路径,否则它们将无法工作。

我的代码段如下:


public function forgotpassword() {

$receiver = $this->input->post(user');

$this->load->library('email');
$this->email->from('sender@gmail.com', 'Sender');
$this->email->to($receiver);
$this->email->subject('Reset Password');

// Just a testing sample
$link="anchor('controller/function/parameter', 'Link Text')";
$msg="Halo, User!\n
Blablabla.\n
Click the link below to proceed.\n
$link\n\n
Best regards.";
$this->email->message($msg);

if($this->email->send())
{
$data['status'] = true;
$data['pesan'] = "Success to send email";
} else {
$data['status'] = false;
$data['pesan'] = "Failed to send email";
}

echo json_encode($data);
}

我希望上面的代码片段会变成这样:

晕,用户!
布拉布拉。
点击下面的链接继续。
somelink
最好的问候。

4 个答案:

答案 0 :(得分:0)

只需使用

<?php echo anchor('controller/function/parameter', 'Link Text'); ?>

答案 1 :(得分:0)

您需要合并字符串:

$msg="Halo, User!\n
Blablabla.\n
Click the link below to proceed.\n
" . $link . "\n\n
Best regards.";

编辑: 回答关于HTML邮件的评论问题。 这是我用html电子邮件做的方式: 我在helpers / MY_email_helper.php中有一个电子邮件帮助程序

<?php
function loadEmailConfig() {
    $instance = get_instance ();
    $instance->load->language ( 'functions/email' );
    $config = array ();
    $config ['protocol'] = 'smtp';
    $config ['smtp_host'] = 'smtp.xxx.xx';
    $config ['smtp_user'] = 'xxx@xxx.xx';
    $config ['smtp_pass'] = 'xxx';
    $config ['smtp_port'] = 25;
    $config ['mailtype'] = 'html';
    return $config;
}
function my_sendHtmlEmail($receiver, $subject, $html) {
    // --- Send Message ---
    $instance = get_instance ();
    $instance->load->library ( 'email' );
    $instance->email->clear ( TRUE );
    $instance->lang->load ( 'functions/email' );
    $config = loadEmailConfig ();
    $instance->email->initialize ( $config );
    $instance->email->from ( 'your@send-mail.com', 'organisationname' );
    $instance->email->to ( $receiver );
    $instance->email->subject ( $subject );
    $email_data ['message'] = $html;
    $message = $instance->load->view ( 'email/email', $email_data, TRUE );
    $instance->email->message ( $message );
    $bool = $instance->email->send ();
    return $bool;
}

$ html参数是我嵌套在html电子邮件模板中的邮件的更改内容,该模板保存在views / email / email.php

然后我只需要加载助手

    $this->load->helper('email');

并使用控制器中的功能

my_sendHtmlEmail('receiver@email.com','subject','<p>html email with <a href""> link</a></p>');

答案 2 :(得分:0)

您已经接近,只需将$link更改为:

$link=anchor('controller/function/parameter', 'Link Text');

anchor创建一个绝对链接,在您的情况下为:

  

http://your_domain/controller/function/parameter.html   “>链接文本

您可能希望将\n更改为<br/>,即html换行符

$msg="Halo, User!<br/><br />
      Blablabla.<br />
      Click the link below to proceed.<br />
      $link<br /><br />
      Best regards.";

这将输出:

  

晕,用户!

     

布拉布拉。

     

点击下面的链接以继续。

     

Link Text

     

最诚挚的问候。

还要确保在使用如下所示的anchor()之前,将URL帮助程序加载到自动加载或控制器中:$this->load->helper('url');

来自文档hereanchor()的更多信息

编辑:为了将链接显示为普通文本,您可以使用PHP函数htmlentities(),该函数将所有适用的字符转换为HTML实体,例如:

$link=htmlentities(anchor('controller/function/parameter', 'Link Text'));
$msg="Halo, User!\n\n
      Blablabla.\n
      Click the link below to proceed.\n
      $link\n\n
      Best regards.";

现在输出看起来类似于:

  

晕,用户!

     

布拉布拉。点击下面的链接继续。

     

链接   文字

     

最诚挚的问候。

有关PHP的htmlentities()

的更多信息

答案 3 :(得分:0)

我认为这可以解决您的问题。

    $link=anchor('controller/function/parameter', 'Link Text');
    $msg="Halo, User!<br>
    Blablabla.<br>
    Click the link below to proceed.<br>
    $link<br>
    Best regards.";
    echo $msg;

尝试一下,让我知道结果。