4

私は CMS を開発しました。ユーザーが自分のパスワードを忘れた場合、システムは新しいランダム パスワードを生成し、電子メールでユーザーに送信しますが、電子メールを開くと、電子メール本文から一部の文字が自動的に削除され、それらが (= )。

これは送信後のメールです。めちゃくちゃな部分が太字で表示されています

Noor Shirzai 様 このメールは、パスワードがリセットされたことをお知らせするために送信されました。以下はあなたの新しいパスワードです: あなたのユーザー名は: mohib あなたの新しいパス=単語は: IOODiGhcYYrLセキュリティ上の問題を避けるため、システムにログインしたらすぐに<=tong>新しいパスワードを変更してください。

注: Pure PHPメール機能でこれを送信すると、正常に動作します。

以下は、私の電子メール機能と電子メール構成ファイルのコードです。

私が得たどんな助けにも本当に感謝します。ありがとう

メールを送信する私の関数:

if (! function_exists('send_password'))
{
    function send_password($user_info, $password)
    {
        $CI =& get_instance();

        $username           = $user_info['username'];
        $name               = $user_info['firstname'].' '.$user_info['lastname'];
        $email              = $user_info['email'];

        $subject            = 'Your New Password : Noor CMS |'.$CI->config->item('site_name');
        //email body
        $message            = '';

        $message            .= '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">';
        $message            .= '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">';
        $message            .= '<meta content="text/html; charset=utf-8" http-equiv="Content-type">';
        $message            .= '<head>';
        $message            .= '<title> Your New Password : Noor CMS | '.$CI->config->item('site_name').' </title>';
        $message            .= '</head>';
        $message            .= '<body>';
        $message            .= 'Dear '.trim($name);
        $message            .= 'This Email was sent to you in order to inform you that your <strong>Password</strong> has been reset.<br/>';
        $message            .= 'Bellow is your <strong> New Password :</strong><br/>';
        $message            .= 'Your <strong>Username </strong>is : <strong> '.trim($username).'</strong><br/>';
        $message            .= 'Your <strong>New Password </strong>is : <strong> '.trim($password).'</strong><br/>';
        $message            .= 'Please change your <strong>New Password</strong> as soon as you login to the system in order to avoid any security issues.<br/>';
        $message            .= '</body></html>';

        //prepare email and send
        $CI->email->from($CI->config->item('admin_email'), $CI->config->item('admin_name'));
        $CI->email->to($email);
        $CI->email->subject($subject);
        $CI->email->message($message);

        if ($CI->email->send())
        {
            return TRUE;
        }

        return FALSE;
    }
}

また、email.php 構成ファイルは次のとおりです。

$config['useragent']            = 'NoorCMS';
$config['protocol']         = 'mail';
$config['mailpath']         = '/usr/sbin/sendmail';
$config['smtp_host']            = '';
$config['smtp_user']            = '';
$config['smtp_pass']            = '';
$config['smtp_port']            = 25;
$config['smtp_timeout']         = 10;
$config['wordwrap']         = FALSE;
$config['wrapchars']            = 100;
$config['mailtype']         = 'html';
$config['send_multipart']       = FALSE;
$config['charset']          = 'utf-8';
$config['validate']         = FALSE;
$config['priority']         = 1;
$config['crlf']             = '\n';
$config['newline']          = '\n';
$config['bcc_batch_mode']   = FALSE;
$config['bcc_batch_size']       = 200;
4

2 に答える 2

7

この問題が発生しました - メール設定を更新する必要があります:

$config['newline']  = "\r\n";
$config['crlf'] = "\r\n";
于 2013-01-22T14:15:39.597 に答える
0

行の長さを短くするには、次のようにします。

    $message            = array();

    $message[] = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">';
    $message[] = '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">';
    $message[] = '<meta content="text/html; charset=utf-8" http-equiv="Content-type">';
    $message[] = '<head>';
    $message[] = '<title> Your New Password : Noor CMS | '.$CI->config->item('site_name').' </title>';
    $message[] = '</head>';
    $message[] = '<body>';
    $message[] = 'Dear '.trim($name);
    $message[] = 'This Email was sent to you in order to inform you that your <strong>Password</strong> has been reset.<br/>';
    $message[] = 'Bellow is your <strong> New Password :</strong><br/>';
    $message[] = 'Your <strong>Username </strong>is : <strong> '.trim($username).'</strong><br/>';
    $message[] = 'Your <strong>New Password </strong>is : <strong> '.trim($password).'</strong><br/>';
    $message[] = 'Please change your <strong>New Password</strong> as soon as you login to the system in order to avoid any security issues.<br/>';
    $message[] = '</body></html>';

    $message = implode(PHP_EOL, $message);
于 2012-09-19T04:57:41.607 に答える