web-dev-qa-db-ja.com

PHP PEAR MAILを使用して複数のCCおよびBCCを送信する

自分の仕事で取り組んでいるプロジェクトがあり、Pearのメーリングを使用しています。メールサーバーからすべてを追跡できるようにする必要があるため、smtpを使用する必要があります。また、ユーザーは会社ベースのメールを送信する前にログインできる必要があります。これにはphpのメール機能を使用できません。

私の問題は、CCとBccを送信したり、複数のBCCを送信したりするためのドキュメントがネット上に見つからないことです。 php 'mail funcitonを使うのはとても簡単です。あなたがすることは、それを$ header変数に追加するだけです

$headers .= 'Cc: [email protected]' . "\r\n";
$headers .= 'Bcc: [email protected]' . "\r\n";

これは、PEARを使用するphp関数のコードです

function sender_mail($email,$subject,$mailmsg, $cc, $bcc){

    include("Mail.php");
    /* mail setup recipients, subject etc */

    //DEFAULT VALUE OF FROM 
    $from = "[email protected]";

    //GET EMAIL OF USER
    $result = mysql_query("SELECT email, email_pass FROM u_perinfo WHERE user_id = '$_SESSION[uid]'")
    or die("There was an error when grabbing your email information");
    if(mysql_num_rows($result) > 0){
        $row = mysql_fetch_array($result);
        if($row[0] != ''){
            $from = $row[0];
        }
        $email_pass = $row[1];
    }

    $recipients = "$email";
    $headers["From"] = "$from";
    $headers["To"] = "$email";
    $headers["Subject"] = $subject;
    $headers["Cc"] = "$cc";  //Line added by Me to see if it works
    $headers["Bcc"] = "$bcc";  //Line added by Me to see if it works


    //$mailmsg = "Welcome to Addatareference.com! \r\n\r\nBelow is your unique login information.  \r\n\r\n(Please do not share your login information.)$accountinfo";
    /* SMTP server name, port, user/passwd */
    $smtpinfo["Host"] = "smtp.emailsrvr.com";
    $smtpinfo["port"] = "25";
    $smtpinfo["auth"] = true;
    $smtpinfo["username"] = "$from";
    $smtpinfo["password"] = "$email_pass";
    /* Create the mail object using the Mail::factory method */
    $mail_object =& Mail::factory("smtp", $smtpinfo);
    /* Ok send mail */
    $mail_object->send($recipients, $headers, $mailmsg);

}

私はこれについての解決策を見つけようとしましたが、実際の情報は戻ってきません。誰かがこれを手伝ってくれるなら、私は大いに感謝します。

16
Dom

複数のアドレスを「、」で区切って追加しようとしましたか?

$headers['Cc'] = '[email protected], [email protected], [email protected]';

ソースの218行目 によると、これはうまくいくかもしれません。

18
powtac

PEARメール機能を使用する場合、Bccに問題があります。ThunderbirdはBccヘッダーを表示するため、受信者は非表示になりません。これはBccの要点です。また、 To:ヘッダーリスト(受信者にBccリストを含める必要があるため)。

編集:解決済み-別のサイトから、解決策は$ recipientsにBccリストを含めることであり、ヘッダーには含めないことです。できます!

したがって:

$bcc = "[email protected]";
$to = "[email protected]";
$headers = array(..other stuff.., 'To' => $to, ..rest of header stuff); // No Bcc header!
$recipients = $to.", ".$bcc;
$mail = $smtp->send($recipients, $headers, $message);

編集#2:ソースの確認- http://raamdev.com/2008/adding-cc-recipients-with-pear-mail/

26
Jeff G

$ recipients変数にcc、bccのすべてを追加するだけです。ヘッダーは送信先を決定します。

4