0

こんにちは皆さん、phpmailer を使用して送信される html/php ファイルにフォーム データを追加することに関して、非常に基本的な php の問題があります。

GmailアカウントSMTPを使用して、フォームの送信が成功したときにHTMLメールを送信します。

フォーム送信時に、HTML メールが正常に送信されています。

問題/問題:

メールで送信するHTMLファイルの各種ヘッダーに入力したFORM DATAを添付できません。

これは、フォーム送信用に呼び出される PHP のコードです。email-content.php は、Gmail SMTP を使用して HTML メールとして正常に送信されるファイルです。

<?php


$salutation = $_POST['salutation'] ;
$name = $_POST['name'] ;
//
$dateDOB = $_POST['DOB_Day'] ;
$monthDOB = $_POST['DOB_Month'] ;
$yearDOB = $_POST['DOB_Year'] ;
//
$mobileLandline1 = $_POST['mobileLandline1'] ;
$mobileLandline2 = $_POST['mobileLandline2'] ;
$mobileLandline3 = $_POST['mobileLandline3'] ;
$mobileLandline4 = $_POST['mobileLandline4'] ;
$mobileLandline5 = $_POST['mobileLandline5'] ;
$mobileLandline6 = $_POST['mobileLandline6'] ;
$mobileLandline7 = $_POST['mobileLandline7'] ;
$mobileLandline8 = $_POST['mobileLandline8'] ;
//
$language = $_POST['language'] ;
//
$address = $_POST['address'] ;
$city = $_POST['city'] ;
$state = $_POST['state'] ;
$pin = $_POST['pin'] ;
//
$fax = $_POST['fax'] ;
$email = $_POST['email'] ;
//
$passwordOption = $_POST['passwordOption'] ;
$passwordOptionProvided = $_POST['passwordOptionProvided'] ;


//Using PHPMailer with GMAIL

include("class.phpmailer.php");
include("class.smtp.php"); // note, this is optional - gets called from main class  if     not already loaded

$mail             = new PHPMailer();

$body             = $mail->getFile('email-content.php');
$body             = eregi_replace("[\]",'',$body);

$mail->IsSMTP();
$mail->SMTPAuth   = true;                  // enable SMTP authentication
$mail->SMTPSecure = "ssl";                 // sets the prefix to the servier
$mail->Host       = "smtp.gmail.com";      // sets GMAIL as the SMTP server
$mail->Port       = 465;                   // set the SMTP port

$mail->Username   = "####@gmail.com";  // GMAIL username
$mail->Password   = "#######";            // GMAIL password

$mail->From       = "subscriptionForm@abc.com";
$mail->FromName   = "Subscrition Form";
$mail->Subject    = "SUBSCRIPTION FORM DETAILS FROM WEBSITE";
$mail->AltBody    = "This is the body when user views in plain text format";   //Text     Body
$mail->WordWrap   = 50; // set word wrap

$mail->MsgHTML($body);

$mail->AddReplyTo("replyto@yourdomain.com","Webmaster, ####.com");

$mail->AddEmbeddedImage('logo.png', 'logo');
//$mail->AddAttachment("/path/to/file.zip");             // attachment
//$mail->AddAttachment("/path/to/image.jpg", "new.jpg"); // attachment

$mail->AddAddress("contact@abcd.com","Subscription Form");

$mail->IsHTML(true); // send as HTML


if(!$mail->Send()) {
 header('Location: http://www.#####.com/subscription-form-fail.html');
} else {
//echo "Message has been sent";
// header('Location: $submissionsuccess');
 header('Location: http://www.####.com/subscription-form-success.html');
}

?>

email-content.php のコード : (部分的に、php データ値を HTML テンプレートに呼び出しています)

 <table width="590" border="0" cellspacing="0" cellpadding="0" >
 <tr>
 <td align="left" valign="top" width="50" style="font-size:10pt; font-family:Tahoma, Geneva, sans-serif; padding:2px;">Name :</td>

 <td align="left"  valign="top"  width="30" style="font-size:10pt; font-family:Tahoma, Geneva, sans-serif; padding:2px;"><?php $salutation ?></td>
 <td align="left" valign="top" width="460" style="font-size:10pt; font-family:Tahoma, Geneva, sans-serif;">
 <table width="460" border="1" cellspacing="0" cellpadding="0" style=" border-collapse:collapse;font-size:10pt; font-family:Tahoma, Geneva, sans-serif;border:1px solid #e0e3e5;" >
 <tr>
 <td style="padding:2px;"><?php $_POST['name'] ?></td>
 </tr>
 </table>

私はphpプログラミングの初心者で、ここで非常に基本的なものが欠けていると確信しています。送信された名前の値は、送信された HTML メールには表示されません。

この問題に関するガイダンスは高く評価されます

ありがとう

ムーディー

4

1 に答える 1

1

解決策を見つけました。

1. 電子メール テンプレート コードでは、フォームの値は %name% として呼び出され、たとえば名前の値となります。

2. FORM SUBMISSION のために呼び出された PHP コードで、次のように % を実際の情報に置き換えます。

$body = str_replace('%name%', $name, $body);

これはうまくいきます。

于 2013-03-01T06:55:58.373 に答える