0

phpのメール機能に問題があります。

これはコードです:

    public function send_email($emailInfo)
    {
    // email fields: to, from, subject, and so on
    $to             = $emailInfo['toEmail'];
    $from           = $emailInfo['fromEmail'];
    $subject        = $emailInfo['subject'];
    $message        = $emailInfo['message'];
    //$message          = $this->base_directory.'/application/views/emailtemplates/ticketresponse'($emailInfo['viewVars'], true);
    $headers        = 'From: '.$emailInfo['fromEmail'].' <'.$emailInfo['fromEmail'].'>';

    // boundary
    $semi_rand = md5(time());
    $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

    // headers for attachment
    $headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\"";

    if (is_array($emailInfo['cc']))
        {
        $headers .= 'Cc: ';
        foreach ($emailInfo['cc'] as $cc)
            {
            $headers .= $cc. ",";
            }
        $headers = substr($headers, 0, -1);
        $headers .= "\r\n";
        }   

    // multipart boundary
    $message = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type: text/plain; charset=\"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n";
    $message .= "--{$mime_boundary}\n";

    // send
    @mail($to, $subject, $message, $headers, '-f'.$emailInfo['fromEmail']);
    }

この関数は実際に電子メールを送信し、cc受信者の配列は実際に入力されますが、これらの受信者は電子メールを受信しません。

4

2 に答える 2

0

提供される追加のヘッダーは、\r\nつまり、で区切る必要がありますCRLF。これはccヘッダーに対して行っていますが、他のヘッダーに対しては行っていません。これは影響を与える可能性があります。

$headers .= "\nMIME-Version: 1.0\r\n";
$headers .= "Content-Type: multipart/mixed;\r\n";
$headers .= " boundary=\"{$mime_boundary}\"\r\n";
于 2013-01-04T16:50:53.037 に答える
0

PHPの組み込みmail()関数は避けることを強くお勧めします。これは、サイト管理者への最も基本的なパニックメール以外の目的には実際には適していません。

それ以上のこと(CCアドレスの追加などの単純なものを含む)については、PHPMailerなどの適切なメーラークラスを使用することをお勧めします。これにより、コードがはるかに単純で信頼性の高いものになります。

お役に立てば幸いです。

于 2013-01-04T16:56:01.530 に答える