I have a project that I am working on at my job and I am using Pear's mailing. I need to use smtp because we need to be able to track everything from our mailserver. And users need to be able to log in before sending a company based email. We cannot use php's mail function fo this.
我有一个项目,我正在工作,我正在使用Pear的邮件。我需要使用smtp,因为我们需要能够从邮件服务器跟踪所有内容。用户需要能够在发送基于公司的电子邮件之前登录。我们不能使用php的邮件功能。
My problem is that I cant find any documentation on the net for sending CC and Bcc as well as sending multiple BCCs. It is very easy to do with php' mail funciton . All you do is add it to the $header variable like so
我的问题是我无法在网上找到任何文件来发送CC和Bcc以及发送多个BCC。使用php'邮件功能很容易。你所要做的就是将它添加到$ header变量中
$headers .= 'Cc: birthdayarchive@example.com' . "\r\n";
$headers .= 'Bcc: birthdaycheck@example.com' . "\r\n";
This is my code for the php function where I use PEAR
这是我使用PEAR的php函数的代码
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);
}
I have been trying to find a solution to this with no real info coming back my way. If someone could help me out with this I would be greatly appreciated.
我一直试图找到一个解决方案,没有真正的信息回来我的方式。如果有人可以帮我解决这个问题,我将不胜感激。
3 个解决方案
#1
15
Have you tried to add multiple addresses "," separated?
你试过添加多个地址“,”分开了吗?
$headers['Cc'] = 'cc@example.com, bb@example.com, dd@ex.com';
This might work, according to line 218 in the source.
根据源中的第218行,这可能有效。
#2
25
There is a problem with Bcc though when using the PEAR Mail function: Thunderbird displays the Bcc header, so the recipient is not hidden, which is the whole point of Bcc. It is also displayed in the To: header list (since you have to include the Bcc list in recipients).
使用PEAR邮件功能时,密件抄送有问题:Thunderbird显示密件抄送头,因此收件人不会被隐藏,这是密件抄送的全部内容。它也显示在“收件人:”标题列表中(因为您必须在收件人中包含“密件抄送”列表)。
Edit: SOLVED - I found from another site that the solution is just to include the Bcc list in the $recipients, and not in any of the headers. It works!
编辑:已解决 - 我从另一个站点发现解决方案只是在$ recipients中包含密件抄送列表,而不是在任何标头中。有用!
Thus:
$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);
Edit #2: Acknowledging my source - http://raamdev.com/2008/adding-cc-recipients-with-pear-mail/
编辑#2:承认我的来源 - http://raamdev.com/2008/adding-cc-recipients-with-pear-mail/
#3
3
You just need to add all to, cc, bcc in $recipients variable. Header decides where to send.
您只需要在$ recipients变量中添加所有to,cc,bcc。标题决定在哪里发送。
#1
15
Have you tried to add multiple addresses "," separated?
你试过添加多个地址“,”分开了吗?
$headers['Cc'] = 'cc@example.com, bb@example.com, dd@ex.com';
This might work, according to line 218 in the source.
根据源中的第218行,这可能有效。
#2
25
There is a problem with Bcc though when using the PEAR Mail function: Thunderbird displays the Bcc header, so the recipient is not hidden, which is the whole point of Bcc. It is also displayed in the To: header list (since you have to include the Bcc list in recipients).
使用PEAR邮件功能时,密件抄送有问题:Thunderbird显示密件抄送头,因此收件人不会被隐藏,这是密件抄送的全部内容。它也显示在“收件人:”标题列表中(因为您必须在收件人中包含“密件抄送”列表)。
Edit: SOLVED - I found from another site that the solution is just to include the Bcc list in the $recipients, and not in any of the headers. It works!
编辑:已解决 - 我从另一个站点发现解决方案只是在$ recipients中包含密件抄送列表,而不是在任何标头中。有用!
Thus:
$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);
Edit #2: Acknowledging my source - http://raamdev.com/2008/adding-cc-recipients-with-pear-mail/
编辑#2:承认我的来源 - http://raamdev.com/2008/adding-cc-recipients-with-pear-mail/
#3
3
You just need to add all to, cc, bcc in $recipients variable. Header decides where to send.
您只需要在$ recipients变量中添加所有to,cc,bcc。标题决定在哪里发送。