phpmailer เพิ่มเนื้อหาเพิ่มเติมในเนื้อหาของอีเมล

ฉันเพิ่งเริ่มใช้ phpmailer.. ฉันมีความคืบหน้าโดยการสร้างแบบฟอร์มง่ายๆ ที่อนุญาตให้ผู้ใช้ส่งอีเมลไปที่กล่องจดหมายของเรา:

<form id="contact-form" class="contact-form" method="post" action="send-mail.php">          
    <input type="text" name="name" id="name" placeholder="Name" tabindex="1">
    <input type="text" name="subject" id="trade" placeholder="Your Trade" tabindex="3">
    <input type="text" name="email" id="email" placeholder="Your Email" tabindex="2">
    <input type="text" name="number" id="number" placeholder="Contact Number" tabindex="4">
    <textarea id="message" rows="8" name="message" placeholder="Message" tabindex="5"></textarea>
    <div class="grid-col one-whole">
            <button type="submit">Send Your Message</button>
    </div>
</form>

.php:

<?php
require('PHPFiles/PHPMailerAutoload.php');
require('PHPFiles/class.smtp.php');
require('PHPFiles/class.phpmailer.php');

$mail = new PHPMailer;

//$mail->SMTPDebug = 3;    
$mail->IsSMTP();
$mail->Host = '74.208.5.2';
$mail->SMTPAuth = true;
$mail->Username = '[email protected]';           
$mail->Password = '*******';                          
$mail->SMTPSecure = 'tls';
$mail->Port = 25; connect to

$mail->From = isset($_POST["email"]) ? $_POST["email"] : "";
$mail->FromName = isset($_POST["email"]) ? $_POST["email"] : "";
$mail->addAddress('[email protected]'); 
$mail->Subject = isset($_POST["subject"]) ? $_POST["subject"] : "";
$mail->Body = str_replace("\n",'<br>', $_POST['message']);

$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

$mail->isHTML(true); 

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

ในขณะนี้ เนื้อความของอีเมลประกอบด้วยเนื้อหาของฟิลด์ textare เนื้อความจะมีสิ่งนี้ได้อย่างไร แต่ยังมีตัวแบ่งบรรทัดและเนื้อหาของฟิลด์ตัวเลขด้วย


person user3731438    schedule 24.07.2015    source แหล่งที่มา
comment
มันเป็นเพียงสตริง $mail->body = 'foo'; $mail->body .= 'bar' ให้คุณ foobar เป็นร่างกาย   -  person Marc B    schedule 24.07.2015
comment
@MarcB - $mail อันที่สองควรมี . หน้า = ??   -  person user3731438    schedule 24.07.2015
comment
คุณมีข้อผิดพลาดใน str_replace ของคุณ มันควรจะเป็น str_replace('\n','‹br›', ...,   -  person fsn    schedule 24.07.2015
comment
@MarcB - ร่างกายควรเป็นตัวพิมพ์ใหญ่ B ด้วย ... แต่นอกเหนือจากนั้นก็ใช้งานได้   -  person user3731438    schedule 24.07.2015
comment
@fsn - คุณช่วยอธิบายได้ไหมว่าข้อผิดพลาดคืออะไร ??   -  person user3731438    schedule 24.07.2015
comment
คุณต้องใช้ '\n' เพื่อให้ str_replace ของคุณทำงานหรือใช้ \\n และหลีกเลี่ยงมัน เช่นเดียวกัน ‹br /›   -  person fsn    schedule 24.07.2015


คำตอบ (2)


คุณอาจต้องการลองสิ่งนี้ สร้างตัวแปรแยกต่างหากสำหรับข้อมูลทั้งหมดที่จำเป็นต้องอยู่ในเนื้อหาของข้อความ

$message = "Name :- " . $_POST['name'] . "<br>" . " Number :- " . $_POST['number'];
$mail->Body = $message;
person Akshay    schedule 24.07.2015
comment
จากข้างต้นฉันได้รับข้อผิดพลาดในการแยกวิเคราะห์: ข้อผิดพลาดทางไวยากรณ์, ที่ไม่คาดคิด '', ต้องการตัวระบุ (T_STRING) หรือตัวแปร (T_VARIABLE) หรือตัวเลข (T_NUM_STRING) - person user3731438; 24.07.2015
comment
ใช้งานไม่ได้ โปรดทดสอบโค้ดของคุณก่อนส่ง - person user3731438; 24.07.2015

ทำมันเหมือน:

$mail->Body = str_replace('\n','<br />', $_POST['message']);

or:

$mail->Body = str_replace("\\n","<br />", $_POST["message"]);

ควรแก้ไขปัญหาสตริงได้รับ "ตัวแบ่งบรรทัด"

อย่างไรก็ตาม เป็นเรื่องดีเสมอที่จะ:

var_dump($data);
die();

เพื่อดูว่าคุณได้อะไรจากโค้ดแต่ละขั้นตอน

person fsn    schedule 24.07.2015