【问题标题】:PhpMailer capture email address from form and add to variablePhpMailer 从表单中捕获电子邮件地址并添加到变量
【发布时间】:2018-05-08 11:00:38
【问题描述】:

我在一个网站上工作,该网站有一个表单捕获名称、电子邮件等。一切正常,但我想向填写表单的用户添加一封抄送电子邮件。

我想将提供的电子邮件地址添加到变量中,然后使用 AddCC 向他们发送电子邮件,如下所示:

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

这很好,但我如何将电子邮件地址放入变量中?

这个 php 脚本和表单如下。 任何帮助都会很棒, 谢谢, 詹姆斯

//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;
}       

// 形式

<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>                

【问题讨论】:

  • 嗯,您标记表单的 HTML 不是 HTML 表单,所以您没有捕获任何内容?

标签: php forms email variables phpmailer


【解决方案1】:

在您的示例中,您只需在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]));
}

而且,如果您以email[] 之类的形式传递带有Post method 的电子邮件,那么下面的代码将起作用。

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

以下代码将从包含电子邮件内容的 $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];

【讨论】:

  • 谢谢,但我不是这么想的。我需要从表单中获取电子邮件地址,因为这是由用户输入的,然后数据会发送到公司的电子邮件地址。我想从表单中提取电子邮件地址,然后将电子邮件的副本发送给输入它的用户。有什么想法吗?
  • 您可以使用 $_POST 变量和 foreach 进行提取
  • foreach($_POST['email'] as $key => $val){ // 发送电子邮件 echo $_POST['email'][$key]; }
  • 现在检查我的答案,您需要使用foreach从$_POST中提取所有电子邮件
  • 所以会是这样吗? foreach($_POST['email'] as $key => $val){ echo $_POST['email'][$key]; } $mail->AddCC ($key);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-10
相关资源
最近更新 更多