doukundong9652 2014-08-12 15:37
浏览 130
已采纳

PHPMailer - 重复变量

I have a HTML form that is being processed by a php page. I have had it working exactly as I need using mail() but am running into issues with the email part. Sending an email out is very inconsistent which is not acceptable. I understand that mail() only takes care of a small part of the process and the mail servers take care of the heavy lifting.

I am trying out PHPMailer as an alternative. I have it up and running and am able to get mail to go out but some of the functionality is not there.

In my form you can add multiple 'projects' to a single submission. The php is supposed to loop over those projects and create a section for each in the email. Again, this is working with mail() but doesn't always send.

The code I am trying to implement is below. It will send an email but will not loop over the form fields if there are more than one. It will only see the last one entered.

<?php
require 'PHPMailerAutoload.php';

date_default_timezone_set('America/New_York');
$today = date("F j - Y - g:i a");

$mail = new PHPMailer;

$mail->isSMTP();                       // Set mailer to use SMTP
$mail->Host = 'mail.example.com';      // Specify main and backup SMTP servers
$mail->SMTPAuth = true;                // Enable SMTP authentication
$mail->Username = 'mail@example.com';  // SMTP username
$mail->Password = 'password';          // SMTP password
$mail->SMTPSecure = 'tls';             // Enable encryption, 'ssl' also accepted

$mail->From = 'mail@example.com';
$mail->FromName = 'From name';
$mail->addAddress('mail@example.com', 'personName');     // Add a recipient
//$mail->addAddress('mail@anotherexample.com');          // Name is optional
$mail->addReplyTo('mail@example.com', 'replyTO');
//$mail->addCC('cc@example.com');
//$mail->addBCC('bcc@example.com');

$mail->WordWrap = 500;                               // Set word wrap to 50 characters
//$mail->addAttachment('/var/tmp/file.tar.gz');      // Add attachments
//$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name
$mail->isHTML(true);                                 // Set email format to HTML



//VARIABLES FROM FORM FIELDS
$contractor = $_POST['ct'];
$noactive = $_POST['noconactivity'];
$hours = $_POST['hours'];
$project = $_POST['prjx'];
$city = $_POST['cx'];
$street = $_POST['street'];
$from = $_POST['from'];
$to = $_POST['to'];
$crewxtown = $_POST['cxtown'];
$construction = $_POST['construction'];
$mpt = $_POST['mpt'];
$direction = $_POST['direction'];
$police = $_POST['police'];
$optcomments = $_POST['optcomments'];
$submissionemail = $_POST['submissionemail'];
$mail_cm = $_POST['cm'];
$mail_pm = $_POST['pm'];
$intersection = $_POST['intersection'];
$parking = $_POST['parking'];


$count = count($street)-1;


$data = array();

//REPETITIVE VARIABLES
for( $i = 0; $i <= $count; $i++ )
{   
    $hours0 = $hours[$i];
    $street0 = $street[$i];
    $from0 = $from[$i];
    $to0 = $to[$i];
    $crewxtown0 = $crewxtown[$i];
    $construction0 = $construction[$i];
    $mpt0 = $mpt[$i];
    $direction0 = $direction[$i];
    $police0 = $police[$i];
    $optcomments0 = $optcomments[$i];
    $parking0 = $parking[$i];
    $intersection0 = $intersection[$i];

    $data[] = "$today, $noactive, $contractor, $hours0, $project, $city, $street0, $from0, $to0, $intersection0, $construction0, $mpt0, $crewxtown0, $direction0, $police0, $parking0, $optcomments0, $submissionemail, $mail_cm, $mail_pm
";

$mail->Subject = $project;
$mail->Body    = 'Message content header stuff.<br><br><br><b>Street: </b> ' . $street0;
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

}


// WRITING DATA TO CSV TABLE
if(!empty($data)) {
    $data = implode('', $data);

    $fh = fopen("dailyupdatedata.csv", "a");
    fwrite($fh, $data);
    fclose($fh);
}


//SUCCESS & FAILURE MESSAGE ON PHP PAGE

if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent';
}

Here is the mail() code that works but does not consistently send.

<?php
date_default_timezone_set('America/New_York');

$contractor = $_POST['ct'];
$noactive = $_POST['noconactivity'];
$hours = $_POST['hours'];
$project = $_POST['prjx'];
$city = $_POST['cx'];
$street = $_POST['street'];
$from = $_POST['from'];
$to = $_POST['to'];
$crewxtown = $_POST['cxtown'];
$construction = $_POST['construction'];
$mpt = $_POST['mpt'];
$direction = $_POST['direction'];
$police = $_POST['police'];
$optcomments = $_POST['optcomments'];
$submissionemail = $_POST['submissionemail'];
$mail_cm = $_POST['cm'];
$mail_pm = $_POST['pm'];
$intersection = $_POST['intersection'];
$parking = $_POST['parking'];
$count = count($street)-1;

$today = date("F j - Y - g:i a");//

$message = '<html><body>';
$message .= "Please see the info blah blah<br><strong>Date:</strong> $today<br><strong>Submission by:</strong> $submissionemail<br><br>"; // Beginning message content
$data = array();

for( $i = 0; $i <= $count; $i++ )
{   
    $hours0 = $hours[$i];
    $street0 = $street[$i];
    $from0 = $from[$i];
    $to0 = $to[$i];
    $crewxtown0 = $crewxtown[$i];
    $construction0 = $construction[$i];
    $mpt0 = $mpt[$i];
    $direction0 = $direction[$i];
    $police0 = $police[$i];
    $optcomments0 = $optcomments[$i];
    $parking0 = $parking[$i];
    $intersection0 = $intersection[$i];

    $data[] = "$today, $noactive, $contractor, $hours0, $project, $city, $street0, $from0, $to0, $intersection0, $construction0, $mpt0, $crewxtown0, $direction0, $police0, $parking0, $optcomments0, $submissionemail, $mail_cm, $mail_pm
";

    $message .= "<strong>Project:</strong> $project<br><strong>Active / Not Active:</strong> $noactive<br><strong>Contractor:</strong> $contractor<br><strong>Town:</strong> $city<br><strong>Hours:</strong> $hours0<br><strong>Street:</strong> $street0<br><strong>From:</strong> $from0<br><strong>To:</strong> $to0<br><strong>Intersection:</strong> $intersection0<br><strong>Construction Activity:</strong> $construction0<br><strong>MPT:</strong> $mpt0<br><strong>Crew Town:</strong> $crewxtown0<br><strong>Closure Direction:</strong> $direction0<br><strong>Police & Flaggers:</strong> $police0<br><strong>Parking Restrictions:</strong> $parking0<br><strong>Optional Comments:</strong> $optcomments0<br><br> -- <br><br>"; //Data for message
}
$message .= '</body></html>';

if(!empty($data)) {
    $data = implode('', $data);

    $fromemail = "email@email.com"; // email@email.com
    $subject = $project; 

    //$headers = "From:" . $fromemail;
    $headers  = "MIME-Version: 1.0" . "
";
    $headers .= "Content-type: text/html; charset=iso-8859-1" . "
";
    $headers .= "From: "."Team Traffic "." <email@email.com>" . "
";

    mail($submissionemail,$subject,$message,$headers); // Submission Email
    mail($mail_cm,$subject,$message,$headers); // C Manager Email
    mail($mail_pm,$subject,$message,$headers); // P Manager Email
    mail("email@email",$subject,$message,$headers);
    //mail($trafficemail,$subject,$message,$headers); // Traffic


    $fh = fopen("dailyupdatedata.csv", "a");
    fwrite($fh, $data);
    fclose($fh);
}

?>

Am I missing a step here? Does PHPMailer not work with looping over variables?

Thank you, Eric

  • 写回答

2条回答

      报告相同问题?

      相关推荐 更多相似问题

      悬赏问题

      • ¥15 在线教育培训平台,主要以点播视频和在线练习测试为主,除将视频做切片外,有其他哪种方式降低流量?(关键词-带宽速率)
      • ¥20 用c语音或c++实现银行叫号系统
      • ¥15 人工智能 规则正向演绎和推理
      • ¥20 基于STM32F401的电子密码锁设计
      • ¥15 famamacbeth回归中遇到only size-1 arrays can be converted to Python scalars,求解答
      • ¥15 单片机多个自锁按键的编程实践
      • ¥15 用python操作redis存储中文后,再取出的数据变成了乱码怎么办?
      • ¥15 C语言简单排序问题有偿求解
      • ¥20 请问图片的代码什么意思
      • ¥15 coq问题求带,有偿