Avatar billede slein55 Mester
02. oktober 2023 - 10:31 Der er 7 kommentarer og
1 løsning

hvordan undgår jeg \r\n kommer i mailen

hvordan undgår jeg \r\n kommer med i mailen men det bliver et alm linieskift
jeg bruger følgende til at sende mail:

        $mail = new PHPMailer();
        $mail->setFrom('fra@email.dk');
        $mail->addAddress($email);
        $mail->Subject = $subject;
        $mail->isHTML(true);
        $mail -> CharSet = "UTF-8";
        $mail->Body = $besked;

indtastning sker i HTML
Avatar billede repox Seniormester
02. oktober 2023 - 11:08 #1
0Idet du bruger HTML emails, så kan du pakke din $besked ind i nl2br().


$mail->Body = nl2br($besked);
Avatar billede slein55 Mester
02. oktober 2023 - 11:19 #2
det virkede ikke resultat:  linie 1\r\nlinie 2\r\nlinie 3
kan jeg sende det som andet end HTML og undgå det?
Avatar billede repox Seniormester
02. oktober 2023 - 11:30 #3
Så er jeg ikke sikker på jeg forstår din problematik.

Normalt vil \r\n ikke være repræsenteret som tegn du kan se.

Er det et textarea du sender til dit script og derefter behandler det du modtager? Hvad gør du med $besked inden du tilføjer det til din mail?
Avatar billede slein55 Mester
02. oktober 2023 - 11:36 #4
det er et textarea jeg sender fra
og henter besked med
    $subject = $conn->escape_string($_POST['subject']);
    $besked = $conn->escape_string($_POST['besked']);
Avatar billede repox Seniormester
02. oktober 2023 - 11:59 #5
Hvad er $conn? Og hvad gør escape_string? Er det MySQL API'et?
Avatar billede slein55 Mester
02. oktober 2023 - 12:12 #6
her er min kode jeg sender fra HTML
<?
if ( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
include '_dbconnect.php';

    $subject = $conn->escape_string($_POST['subject']);
    $besked = $conn->escape_string($_POST['besked']);

$sql = "SELECT * FROM database";

$result = mysqli_query($conn, $sql);
echo 'der er sendt email til:<br>', $besked;
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {
  $email=$row['email'];
  include_once "src/PHPMailer.php";
       
        $mail = new PHPMailer();
        $mail->setFrom('min@mail.dk');
        $mail->addAddress($email);
        $mail->Subject = $subject;
        $mail->isHTML(true);
        $mail -> CharSet = "UTF-8";
        $mail->Body = $besked;
        if ($mail->send())
            echo "<br>",$email;
        else
            $msg = "Noget gik galt! Prøv igen!";             
        }

} else { echo "0 results";}
}
?>
<form action="emailliste.php" method="post">
    <input type="hidden" name="mode" value="gem">
    <input type="subject" required autocomplete="off" name="subject" placeholder="subject..."  style="width: 92%";><br><br>
    <textarea name="besked" style="width: 92%; height: 85px;" placeholder="besked..."></textarea><br>
    <br><button class="button" align="center">send</button>
</form>
Avatar billede repox Seniormester
02. oktober 2023 - 12:24 #7
Altså, jeg tænker din $conn->escape_string() laver nogle unødige konverteringer på din $besked variabel.

Jeg ved ikke hvad den gør, men sikkert ikke noget godt overhovedet - især ikke hvis den funktion konverterer repræsentationen af \r\n til almindelig tekst.

Væk med det.
Avatar billede slein55 Mester
02. oktober 2023 - 12:27 #8
jeg fandt løsningen skulle bruge den nl2r()
men den her var fejlen og ikke nødvendig det var noget jeg kopierede fra et eksempel
$conn->escape_string fjernet og rettet til
$subject = ($_POST['subject']);
$besked = ($_POST['besked']);

tak REPOX for hjælpen med den nl2r()
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester