Avatar billede Asky Forsker
06. september 2023 - 08:10 Der er 12 kommentarer

emne i mail fra formular

I feltet emne i toppen af den mail, som mine PHPformularer sender står der
(intet emne) Kan man indprogrammere et emne i denne mail?
I forvejen har formularen jo $subject som kommer i selve mailen.
Avatar billede repox Seniormester
06. september 2023 - 08:43 #1
Ja, det kan man godt.

Men det er svært at hjælpe dig uden at se noget af din kode.
Avatar billede Asky Forsker
06. september 2023 - 10:31 #2
uddrag af maildesgnet:
    $mail -> CharSet = "UTF-8";
    $mail->Body    ="<html>
<head>
    <meta http-equiv='content-type' content='text/html; charset=utf-8'/>
<style type='text/css'>
#body{
h1 {font-family : Verdana, Tahoma, sans-serif; font-size: 16px ;  text-align : left; color:#000000;}
h2 {font-family : Verdana, Tahoma, sans-serif; font-size 14px; text-align : left;}
h3 {font-family : Verdana, Tahoma, sans-serif; font-size: 12px/1,5 ; text-align : left; color : #000000;}
h4  {font-family : Verdana, Tahoma, sans-serif; font-size: 10px/1,5 ;  text-align : left; }
p {font-family : Verdana, Tahoma, sans-serif; font-size: 12px/1,3 ;  text-align : left; color :#000000;}
}
</style>
</head>
<body>
<h3>Hej ".$navn.", <br/>Tak for din ".$subject.":<br/> ".$v1." ".$v2." ".$v3." ".$v4."  <br/> Mail: ".$email."<br/> Adresse: ".$adresse."<br/> Postnummer: " .$postnummer. " By: " .$by.", Tlf.: " .$telefon."<br/> Bemærkninger:  " .$bem."<br/> Venlig hilsen<br/></h3><h1>Firmaet</h1></body></html>";
   
$mail->isHTML(true);
Avatar billede repox Seniormester
06. september 2023 - 10:47 #3
Uden at kende til hvad $mail er for et objekt, så vil jeg mene at det ville være et kvalificeret gæt. baseret på navngivningen af Body property, at for at sætte dit mail-emne, skal du tilføje $mail->Subject = $subject; inden du sender mailen.
Avatar billede Asky Forsker
06. september 2023 - 13:10 #4
Nu er det afprøvet forskellige steder i teksten, virker desværre ikke.
Alle variabler  fx @navn henviser til felter i formularteksten.
$mail er selve mailen, der bliver sendt $mail->send();
Avatar billede repox Seniormester
06. september 2023 - 14:11 #5
Uden flere oplysninger om hvad $mail er for et objekt, så kan der ikke komme så meget mere hjælp. Det bliver ren gætteri.
Avatar billede ejvindh Ekspert
07. september 2023 - 08:09 #6
Jeg er enig i, at det bliver lidt gætteri med det kode, som vi har set her.

Idet jeg dog gætter på, at vi har med den samme sag som her at gøre:
https://www.computerworld.dk/eksperten/spm/1042407
...antager jeg at det er et phpmailer-objekt, der er på spil. Derfor tror jeg grundlæggende, at dit problem er, at du ikke har fået puttet noget indhold ind i $subject-variablen. Det vil du kunne teste, hvis du tidligt i dit script sætter følgende linje:
$subject = "emneindhold";
...og så ser om ikke der kommer noget indhold på.

Hvis du vil have mere præcis hjælp, tror jeg du skal klippe en større del af koden ind i tråden. Og så bare huske at anonymisere passwords o.lign.
Avatar billede Asky Forsker
07. september 2023 - 09:53 #7
Så får I hele koden. Den virker, men emnefeltet i mailen skriver (intet emne)

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\SMTP;

require 'Exception.php';
require 'PHPMailer.php';
require 'SMTP.php';

$mail = new PHPMailer(true);

try {
    //Server settings
  // $mail->SMTPDebug  = 2;                      //Enable verbose debug output
    $mail->isSMTP();                                            //Send using SMTP
    $mail->Host      = 'smtp.webhosting.dk';                    //Set the SMTP server to send through
    $mail->SMTPAuth  = true;                                  //Enable SMTP authentication
    $mail->Username  = 'info@domæne.dk';                    //SMTP username
    $mail->Password  = 'xxxxxxxx';                              //SMTP password
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;            //Enable implicit TLS encryption
    $mail->Port      = 25;                                    //TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS`
//variable = felter I formularmailen
$subject = ($_POST['subject']);  //linjen fra formularmailen <input type="hidden" name="subject" //value="bestilling " >
$navn = ($_POST['navn']);
$adresse = ($_POST['adresse']);
$postnummer = ($_POST['postnummer']);
$by = ($_POST['by']);
$telefon = ($_POST['telefon']);
$email = ($_POST['email']);
$bem = ($_POST['bem']);
$v1= "";
if (!empty($_POST)) {
    if (isset($_POST[vare 1]) && $_POST['vare 1']!='') {
        $v1 = "vare 1 ".($_POST[vare 1]."stk.  <br/>");
    }
}
//Recipients
    $mail->setFrom('info@domæne.dk', 'afsender');
    $mail->addAddress('xxxx@domæne.dk', 'Firma');    //Add a recipient
$mail->addReplyTo('info@domæne.dk', 'Information');
    $mail -> addBCC ($_POST['email']);
 
    //Content
    //$mail->isHTML(true);
    //$mail->Subject = $subject; ting jeg har prøvet
    //$mail->Title = "TEST"; ting jeg har prøvet
    $mail -> CharSet = "UTF-8";
    $mail->Body    ="<html>
<head>
    <meta http-equiv='content-type' content='text/html; charset=utf-8'/>
<style type='text/css'>

#body{
h1 {font-family : Verdana, Tahoma, sans-serif; font-size: 16px ;  text-align : left; color:#000000;}
h2 {font-family : Verdana, Tahoma, sans-serif; font-size 14px; text-align : left;}
h3 {font-family : Verdana, Tahoma, sans-serif; font-size: 12px/1,5 ; text-align : left; color : #000000;}
h4  {font-family : Verdana, Tahoma, sans-serif; font-size: 10px/1,5 ;  text-align : left; }
p {font-family : Verdana, Tahoma, sans-serif; font-size: 12px/1,3 ;  text-align : left; color :#000000;}
}
</style>
</head>
<body>
<h3>Hej ".$navn.", <br/>Tak for din ".$subject.":<br/> ".$v1." ".$v2." “<br/> Mail: ".$email."<br/> Adresse: ".$adresse."<br/> Postnummer: " .$postnummer. " By: " .$by.", Tlf.: " .$telefon."<br/> Bemærkninger:  " .$bem."<br/> Venlig hilsen<br/></h3><h1>Firma</h1></body></html>";
    $mail->isHTML(true);
$mail->SMTPAuth  = true; // enable SMTP authentication
    $mail->send();
    echo "<h3>Bestillingen er blevet sendt af: ".$navn."<br/>
    Om lidt modtager du en email med alle oplysninger.</h3>" ;
}
catch (Exception $e) {
    echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
?>
Avatar billede repox Seniormester
07. september 2023 - 12:23 #8
Altså, ifølge PHPMailers officielle dokumentation på https://github.com/PHPMailer/PHPMailer/blob/master/README.md?plain=1#L128 er det rigtigt nok $mail->Subject der bestemmer mailens emne-indhold.

Så jeg tænker du gør noget forkert et andet sted.

Kommer $subject variablens indhold rigtigt med i din mail-besked?
Avatar billede Asky Forsker
07. september 2023 - 13:52 #9
Ganske fint, men jeg kan jo kun bruge subjekt en gang. Det er måske det, der er problemet?
Avatar billede repox Seniormester
07. september 2023 - 14:04 #10
Jeg forstår ikke hvad du mener med at du "kun kan bruge subjekt en gang".

Hvis du har $subject fra $_POST['subject'] og $subject indeholder en streng, så kan du bruge $subject variablen alle de gange du ønsker.

GIvet at du har sat $mail->Subject til $subject, burde det også være emnet i den mail du får.
Avatar billede Asky Forsker
07. september 2023 - 17:06 #11
Jeg prøver at sætte  $subject  ind i koden en ekstra gang
$mail -> $subject = "TEST";
Avatar billede Asky Forsker
07. september 2023 - 17:23 #12
Det virkede, da jeg rettede til $mail -> $Subject = "TEST";
Lige over tegnsættet.
Altså $Subject med stort S. Nu kan jeg rette TEST til alt muligt.måske også $Subject,
altså $mail -> $Subject = $Subject; (Det er endnu ikke afprøvet.
Altså en lille ting, men med bestydning for resultatet. Skriv et svar, så jeg kan markere som løsning. ;-)
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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