实际上,我想创建一封邮件,其中包含一些要发送给人们的链接。 但是我在编写链接时遇到了问题,因为不能将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
最好的问候。
答案 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.";
这将输出:
晕,用户!
布拉布拉。
点击下面的链接以继续。
最诚挚的问候。
还要确保在使用如下所示的anchor()之前,将URL帮助程序加载到自动加载或控制器中:$this->load->helper('url');
来自文档here的anchor()
的更多信息
编辑:为了将链接显示为普通文本,您可以使用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;
尝试一下,让我知道结果。