【问题标题】:codeigniter html email missing imagescodeigniter html电子邮件丢失图像
【发布时间】:2014-02-05 10:50:20
【问题描述】:

我在 codeigniter 中使用 phpMailer 库来发送 html 电子邮件,
在这个库中,我需要加载内容,然后将其传递给某个函数,

我只发现下面的方法可以从库中的视图中加载视图作为字符串分配电子邮件“正文”,例如,

function send_mail($data=array()) {
    $mail = new PHPMailer(true);
    $this->CI =& get_instance();
    $body = $this->CI->load->view('partials/email_template', $data, true);
    //setting third parameter to true will convert view to string, 
}

电子邮件正在正确发送,但是当没有图像时,这仅仅是因为如果我没有错,字符串不能包含图像,有没有其他方法可以实现这一点。

编辑

独立于框架, 我正在加载内容,

$body = file_get_contents('email_template.html');

但是,这在框架中不起作用,

$body = file_get_contents($this->CI->load->view('partials/email_template', $data));
//even setting the third parameter 'true'

并返回“邮件正文为空”错误..

提前非常感谢..

【问题讨论】:

  • 您可以展示您的电子邮件内容吗?也许是路径问题
  • 没有路径问题,正如我在下面提到的,我会在一段时间内更新我的问题..
  • 您的意思是 file_get_contents 没有获取 CI 视图文件的内容?
  • 是的,就像那样,但来自我的库文件夹。
  • @faanahmed missing images 是什么意思?图片的src 属性中是否有绝对路径?

标签: php codeigniter html-email


【解决方案1】:

因为电子邮件是在线的,它不能只使用相对 url 并且需要是绝对的,例如 (http://website.co.uk/partials/email_template/image.png)。

这是因为收到电子邮件的客户显然不会在他们的计算机上本地保存这些文件(或非常可疑)。

【讨论】:

  • 一切都很好,我独立于框架测试了这个功能,所有图像都在我的电子邮件收件箱中正常加载。
【解决方案2】:
$body = $this->CI->load->view('partials/email_template', $data,true);

这会将视图文件内容分配给您的变量$body

【讨论】:

  • 正如我在编辑之前的问题中提到的那样,如果我将第三个参数设置为 true,并且代码完全符合您的回答,它会发送没有图像的电子邮件,只是因为将第三个参数设置为 'TRUE' 转换内容串起来,并错过图像..
  • 您是否在邮件标题中设置了内容类型?
  • 是的,它如何发送其余的html?
  • 您现在尝试我的解决方案了吗?
  • 请先看我的问题代码,$body = $this->CI->load->view('partials/email_template', $data, true);我用的是一样的,
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-24
  • 2012-01-08
  • 1970-01-01
  • 1970-01-01
  • 2014-09-03
  • 2011-09-10
相关资源
最近更新 更多