简体   繁体   English

PhpMailer从表单捕获电子邮件地址并添加到变量

[英]PhpMailer capture email address from form and add to variable

I'm working on a site which has a form capturing name, email etc. All works fine but I would like to add a CCed email to the user who filled the form in. 我正在一个具有捕获名称,电子邮件等形式的表单的网站上工作。一切正常,但是我想向填写表单的用户添加CCed电子邮件。

I want to add the supplied email address into a varable then send them an email using AddCC as below: 我想将提供的电子邮件地址添加到变量中,然后使用AddCC向他们发送电子邮件,如下所示:

$mail->AddCC 'test@test.com';

This works fine but how do I get the email address into a varable? 这可以正常工作,但是如何将电子邮件地址转换为变量?

This php script and form are below. 这个php脚本和表格如下。 Any help would be amazing, Thanks, James 任何帮助都将是惊人的,谢谢詹姆斯

//PHP

    public function SendEmail( $email_address_array, $email_data, $subject, $template, &$send_message ) {

    $smartyObj = Configurator::getInstance()->smarty;   
    $send_message = '';
    $send_result = 0;

    try { 

        $mail = new PHPMailer( true );      
        $mail->IsSMTP( true );  // telling the class to use SMTP
        $mail->SMTPDebug = false;
        $mail->IsHTML( true );
        $mail->Host = Configurator::getInstance()->getSettings( "phpmailer_smtp" ); 

        $mail->ClearAddresses();
        for( $x = 0;$x < sizeof($email_address_array);$x++ ){
            $mail->AddAddress( trim($email_address_array[$x]));
        }           

        $smartyObj->assign( 'email_data', $email_data );
        $mail->SetFrom( 'info@forexchange.co.uk', 'Forexchange Currency Order');


         //  NEW TEST
        //$mail->AddCC ($usersemail);


        $mail->Subject  = $subject;
        $mail->Body     = $smartyObj->fetch( $template );           
        if(!$mail->Send()) {
        } else {
            $send_result = 1;
        }
    } catch (phpmailerException $e) {
        $send_message = $e->errorMessage(); //Pretty error messages from PHPMailer
    } catch (Exception $e) {
        $send_message = $e->getMessage(); //Boring error messages from anything else!
    }
    //echo $send_result;
    //exit;
    return $send_result;
}       

// FORM //表格

<tr>
    <td style="font-weight:bold; padding-right:15px; text-align:right;">ID Number</td>
    <td>{$email_data.id_order|escape:"html"}</td>
</tr> 
<tr>
    <td style="font-weight:bold; padding-right:15px; text-align:right;">Submission Date</td>
    <td>{$email_data.cdate|escape:"html"}</td>
</tr> 
<tr>
    <td style="font-weight:bold; padding-right:15px; text-align:right;">Name</td>
    <td>{$email_data.name|escape:"html"}</td>
</tr> 
<tr>
    <td style="font-weight:bold; padding-right:15px; text-align:right;">Email Address</td>
    <td>{$email_data.email|escape:"html"}</td>
</tr>
<tr>
    <td style="font-weight:bold; padding-right:15px; text-align:right;">Phone</td>
    <td>{$email_data.phone|escape:"html"}</td>
</tr>
<tr>
    <td style="font-weight:bold; padding-right:15px; text-align:right;">Currency</td>
    <td>{$email_data.currency_code|escape:"html"}</td>
</tr> 
<tr>
    <td style="font-weight:bold; padding-right:15px; text-align:right;">Amount</td>
    <td>{$email_data.amount|escape:"html"}</td>
</tr>
<tr>
    <td style="font-weight:bold; padding-right:15px; text-align:right;">Rate</td>
    <td>{$email_data.rate|escape:"html"}</td>
</tr>    
<tr>
    <td style="font-weight:bold; padding-right:15px; text-align:right;">Pickup Point</td>
    <td>{$email_data.pickup|escape:"html"}</td>
</tr>
<tr>
    <td style="font-weight:bold; padding-right:15px; text-align:right;">Purchace Buy Back Product</td>
    <td>{if $email_data.purchase_buy_back_status eq '1'}Yes{else}No{/if}</td>
</tr>                

In your example, you need to use AddCC within for loop only to send email. 在您的示例中,您只需要在for loop使用AddCC来发送电子邮件。

for( $x = 0;$x < sizeof($email_address_array);$x++ ){
    // Email to User
    $mail->AddAddress(trim($email_address_array[$x]));
    // Email to Admin
    $mail->AddCC(trim($email_address_array[$x]));
}

And, if you are passing email with Post method in form like email[] then below code will work. 而且,如果您通过Post method以类似于email[]形式传递电子邮件,则下面的代码将起作用。

foreach($_POST['email'] as $key => $val){
    // Check if Email coming
    echo $_POST['email'][$key];
    // Send Email Script
    $mail->AddCC(trim($_POST['email'][$key]));
}    

Below code will extract the email from your $email_data variable that contains email content. 下面的代码将从包含电子邮件内容的$ email_data变量中提取电子邮件。

$pattern = '/[a-z0-9_\-\+]+@[a-z0-9\-]+\.([a-z]{2,3})(?:\.[a-z]{2})?/i'‌​; 
preg_match_all($pattern, $email_data, $matches); 
$email = $matches[0];

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM