У меня есть проект, над которым я работаю, и использую почтовую рассылку Pear. Мне нужно использовать smtp, потому что нам нужно отслеживать все с нашего почтового сервера. И пользователи должны иметь возможность войти в систему перед отправкой электронной почты компании. Мы не можем использовать почтовую функцию php для этого.
Моя проблема в том, что я не могу найти какую-либо документацию в сети для отправки CC и Bcc, а также отправку нескольких BCC. Это очень легко сделать с php 'mail funciton. Все, что вы делаете, это добавить его к переменной заголовка $, например
$headers .= 'Cc: birthdayarchive@example.com' . "\r\n"; $headers .= 'Bcc: birthdaycheck@example.com' . "\r\n";
Это мой код для функции php, где я использую PEAR
function sender_mail($email,$subject,$mailmsg, $cc, $bcc){ include("Mail.php"); /* mail setup recipients, subject etc */ //DEFAULT VALUE OF FROM $from = "noreply@addata.net"; //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); }
вfunction sender_mail($email,$subject,$mailmsg, $cc, $bcc){ include("Mail.php"); /* mail setup recipients, subject etc */ //DEFAULT VALUE OF FROM $from = "noreply@addata.net"; //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); }
Я пытался найти решение этого, без реальной информации, возвращающейся обратно. Если бы кто-то мог мне помочь, я был бы очень благодарен.
Вы пытались добавить несколько адресов «,» разделены?
$headers['Cc'] = 'cc@example.com, bb@example.com, dd@ex.com';
Это может работать, согласно строке 218 в источнике .
Проблема с Bcc, хотя при использовании функции PEAR Mail: Thunderbird отображает заголовок Bcc, поэтому получатель не скрыт, что является целым рядом Bcc. Он также отображается в списке заголовков To: (так как вам нужно включить список Bcc для получателей).
Изменить: SOLVED – я нашел с другого сайта, что решение состоит только для того, чтобы включить Bcc-список в $ recipients, а не в любой из заголовков. Оно работает!
Таким образом:
$bcc = "foo@example.com"; $to = "bar@example.com"; $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/
Вам просто нужно добавить все в, cc, bcc в переменную $ recipients. Заголовок решает, куда отправить.