HTML电子邮件无法正常发送使用CRON时

时间:2015-07-31 03:08:13

标签: php codeigniter email cron centos

您好我使用的是codeigniter框架和CentOS。我正在使用cron发送一个html电子邮件,它从cron调用一个php文件,从文件中我使用ths命令调用一个codegniter函数

system("elinks -dump http://localhost/mailsender/index.php/mail/send/$email_job_id/");

从那里我生成一个HTML电子邮件。但电子邮件html没有正确发送。

当我在我的视野中查看埃米尔的来源时,我可以看到(这只是表格的一部分)

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">Please check the Type Extension list.<br><br><table cellpadding="3D3D3D3D3=" D3="3D" D?="3D3D" 10="3D3D3D" ?="3D3D3D3D" st="3D3D3D3D3D" yle="3D3D3D3D3D3D&quot;border:1px" solidblack;border-collapse:collapse;?="">
<tr>
    <td style="3D3D3D3D3D3D&quot;border:1px" solidblack;?="">Model</td>
    <td style="3D3D3D3D3D3D&quot;border:1px" solidblack;?="">Description</td>
    <td style="3D3D3D3D3D3D&quot;border:1px" solidblack;?="">Et</td>
    <td style="3D3D3D3D3D3D&quot;border:1px" solidblack;?="">Option Codes</td>
    <td style="3D3D3D3D3D3D&quot;border:1px" solidblack;?="">Order numbers</td>
    </tr>
    <tbody>

<tr><td style="3D3D3D3D3D3D&quot;border:1px" solidblack;?="">2E32</td><td style="3D3D=" 3D3D="3D" 3D3D="3D3D" ?bor="3D3D3D" der:="3D3D3D3D" 1px="3D3D3D3D3D" solidblack;?="">216D GRAN TOURER RHD</td><td style="3D3D3D3D3D3D&quot;border:1px" so="li=3D" d="3D3D" bl="3D3D3D" ac="3D3D3D3D" k;="3D3D3D3D3D" ?="">205,402,4UB,7LG</td><td style="3D3D3D3D3D3D&quot;border:1px" solidblack;?="">2=
20=3D
97=3D3D
23=3D3D3D
76=3D3D3D3D
</=3D3D3D3D3D></tr>

我的邮件发送功能

function send($id) {

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

    $config['protocol'] = 'smtp';
    $config['useragent'] = 'GSPL';
    $config['smtp_host'] = 'smtp.***';

    $config['smtp_user'] = '';
    $config['smtp_pass'] = '';
    $config['wordwrap'] = TRUE;
    $this->email->initialize($config);

    $this->email->from("***");
    $this->email->reply_to("***");
    $this->email->subject("***");

    $this->email->set_mailtype("html");
    $new_email_body = $this->create_email_body();
    $data->body = $new_email_body;

    $this->email->message($data->body);
    $this->email->to("*****");          
    $this->email->send();

    }

create_email_body函数将调用带有数据的视图

<table cellpadding="10" style="border:1px solid black;border-collapse: collapse;">
<tr>
    <td style="border:1px solid black;">Model</td>
    <td style="border:1px solid black;">Description</td>
    <td style="border:1px solid black;">Et</td>
    <td style="border:1px solid black;">Option Codes</td>
    <td style="border:1px solid black;">Order numbers</td>
    </tr>
    <tbody>

    <?php
    foreach($result as $row)
    {
        echo '<tr><td style="border:1px solid black;">'.$row["model"].'</td><td style="border:1px solid black;">'.$row["description"].'</td><td style="border:1px solid black;">'.$row["et"].'</td><td style="border:1px solid black;">'.$row["option_codes"].'</td><td style="border:1px solid black;">'.$row["order_numbers"].'</td></tr>';
    }

?>
    </tbody>
<table>

有没有办法发送格式正确的HTML。提前谢谢。

注意

当我直接在浏览器中运行以下内容时,电子邮件的格式正确。

http://localhost/mailsender/index.php/mail/send/***/

我可以在outlook中看到表源

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">Please check the Type Extension list.<br><br><table cellpadding="10" style="border:1px solid black;border-collapse: collapse;">
<tr>
    <td style="border:1px solid black;">Model</td>
    <td style="border:1px solid black;">Description</td>
    <td style="border:1px solid black;">Et</td>
    <td style="border:1px solid black;">Option codes</td>
    <td style="border:1px solid black;">Order numbers</td>
    </tr>
    <tbody>

<tr><td style="border:1px solid black;">ABCD</td><td style="border:1px solid black;">test</td><td style="border:1px solid black;">ABC</td><td style="border:1px solid black;">222,222,22</td><td style="border:1px solid black;">22222,22222,2222</td></tr> </tbody>
<table>

1 个答案:

答案 0 :(得分:0)

你有没有理由使用系统和elinks?

您可以通过CLI运行cronjob:

php path/to/index.php mail send "some_id"

您是否也尝试过使用wget或curl?