Invoegen afbeelding in boodschap bij verzenden via site

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ignace Verschaeve

Ignace Verschaeve

12/07/2024 18:01:47
Quote Anchor link
Ik ben bezig met een script te maken om van uit onze databasetabel mails te versturen naar verschillende types van leden. Gewone leden, medewerkers, bestuursleden. Dit lukt aardig. Alleen zou ik in de boodschap van de mail ook ons logo willen plaatsen. Hier de code van de reeds werkende functie maar dan zonder een logo.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
function zendmail($link1,$link2,$tekst1,$tekst2,$tekst3,$Naam,$AT,$Naam2,$Vnaam2,$mail)
{
$aanspreking="Beste medelid ";    
$ontvanger=$mail;
$afzender="verwijderd!!!";
$datum=date("r (T)");
$onderwerp="Testmail aan bestuursleden";
$boodschap= $aanspreking . $AT . " " . $Vnaam2 . " " . $Naam2 . "\r\n" . "\r\n". $link1 . "\r\n" .  "\r\n" . $link2 . "\r\n" . "\r\n" . $tekst1 . "\r\n" .
 "\r\n" . $tekst2 .  "\r\n" . "\r\n" . $tekst3 . "\r\n" . "\n" . $Naam;
 $headers='From: '.($afzender)."\r\n".'Reply-To: ' . "[email protected]" ."\r\n".'Date:' .($datum)."\r\n".'X-Mailer: PHP/'.phpversion();
 mail($ontvanger,$onderwerp,$boodschap, $headers);
}

Iemand enig idee hoe ik dit in de boodschap kan krijgen. Het logo is uiteraard altijd hetelfde een .png.
Alvast bedankt, ik heb al heel wat tijd gespendeerd met het zoeken op internet maar nog niets gevonden.
Gewijzigd op 12/07/2024 19:04:10 door Ignace Verschaeve
 
PHP hulp

PHP hulp

08/09/2024 01:26:25
 
- Ariën  -
Beheerder

- Ariën -

12/07/2024 18:40:28
Quote Anchor link
De meeste mensen hebben hier wel (een beetje) hulp nodig. Kan je de topictitel daarom aanpassen in iets wat je probleem of vraag beschrijft?

En waarop heb je gezocht?
Gewijzigd op 12/07/2024 18:42:03 door - Ariën -
 
Ignace Verschaeve

Ignace Verschaeve

12/07/2024 19:07:08
Quote Anchor link
Ik heb gezocht op invoegen afbeelding in boodschap of message maar ik zie telkens oplossingen om afbeeldingen op een webpagina te zetten of in een gewone mail via outlook ofzo.
 
- Ariën  -
Beheerder

- Ariën -

12/07/2024 19:13:38
Quote Anchor link
Dat is ook best generiek, dus logisch dat je niet veel vindt.
'How to insert image in PHP mail' zal wel wat meer spannends geven.

Maar als ik een goede tip mag geven: Gebruik phpMailer in plaats van het wiel zelf opnieuw uit te vinden.
 
Adoptive Solution

Adoptive Solution

12/07/2024 19:24:17
Quote Anchor link
Regel 3-14 naar eigen inzicht aanpassen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php

// Recipient
$to = '[email protected]';

// Sender
$from     = '[email protected]';
$fromName = 'Webmaster';

// Email subject
$subject = 'PHP Email image of St. Petersburg';

// Attachment file
$file = "St. Petersburg.jpg";

// Email body content
$htmlContent = '<h3>PHP Email with Attachment by CodexWorld</h3>
<p>This email is sent from the PHP script with attachment.</p>'
;

// Header for sender info
$headers = "From: $fromName"." <".$from.">";

// Boundary
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

// Headers for attachment
$headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\"";

// Multipart boundary
$message = "--{$mime_boundary}\n" . "Content-Type: text/html; charset=\"UTF-8\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" . $htmlContent . "\n\n";

// Preparing attachment
if( !empty($file) > 0 ):
    if( is_file($file) ):
        $message .= "--{$mime_boundary}\n";
        $fp =    @fopen($file,"rb");
        $data =  @fread($fp,filesize($file));

        @
fclose($fp);
        $data = chunk_split(base64_encode($data));
        $message .= "Content-Type: application/octet-stream; name=\"".basename($file)."\"\n" .
"Content-Description: ".basename($file)."\n" .
"Content-Disposition: attachment;\n" . " filename=\"".basename($file)."\"; size=".filesize($file).";\n" .
"Content-Transfer-Encoding: base64\n\n" . $data . "\n\n";
    endif;
endif;


$message .= "--{$mime_boundary}--";
$returnpath = "-f" . $from;

// Send email
$mail = @mail($to, $subject, $message, $headers, $returnpath);

// Email sending status
echo $mail?"<h1>Email Sent Successfully!</h1>":"<h1>Email sending failed.</h1>";

?>


Toevoeging op 12/07/2024 19:54:04:

Hier komt de code vandaan.

https://www.codexworld.com/send-email-with-attachment-php/
 
Ivo P

Ivo P

15/07/2024 10:14:31
Quote Anchor link
In dat voorbeeld wordt de afbeelding als bestand meegestuurd als los attachment.

wil je de afbeelding in de tekst zien, dan moet dat embedded gedaan worden\

https://stackoverflow.com/questions/3708153/send-email-with-phpmailer-embed-image-in-body
 
Ignace Verschaeve

Ignace Verschaeve

18/07/2024 10:12:52
Quote Anchor link
Ik heb ondertussen al de suggesties, linken en dergelijke uitgeprobeerd maar geen enkele die voldoen aan mijn eisen. Dit is goed voor een enkele mail maar ik slaag er niet in om de variabelen die uit de database komen te integreren in de HTML inhoud.Ik heb het dan over aanspreking, Voornaam, naam en dergelijke. Maar ik blijf verder zoeken en puzzelen.
 
- SanThe -

- SanThe -

18/07/2024 11:36:36
Quote Anchor link
Je mailtje moet gewoon uit correcte html bestaan.
Dus ook <body> en <head> tags. Valid html volgens W3C.
Daarin kan je de gegevens uit de database gebruiken.
 
Ignace Verschaeve

Ignace Verschaeve

18/07/2024 11:59:17
Quote Anchor link
Dat wist ik wel. Daar zit nu net het probleem. Ik moet variabelen die uit een PHP code komen in HTML krijgen. Geef eens een voorbeeldje. Ik kan wel weergeven <p> Dit is tekst </p>
Maar hoe geef ik weer zoiets als $Naam2 = $row['Naam']; zijnde gegevens die uit een tabel komen.
Ik heb al geprobeerd <p>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $Naam2; ?>
</p> maar dat is het blijkbaar niet.
 
- Ariën  -
Beheerder

- Ariën -

18/07/2024 12:28:56
Quote Anchor link
Het ligt er een beetje aan wat er in $row['Naam'] staat.
Waarom zou je dit eigenlijk opnieuw willen opslaan in $Naam2?
 
Ignace Verschaeve

Ignace Verschaeve

18/07/2024 14:07:26
Quote Anchor link
Die variabele $Naam2 is telkens een naam die uit de databasetabel komt. Dat kunnen er 8 zijn, de bestuursleden, dat kunnen er 16 zijn, de bestuursleden en de medewerkers, maar dat kunnen er ook 300 zijn die ons digitaal tijdschrift willen ontvangen maar dat kunnen ook 1500 geregistreerde leden zijn.
De workflow is:
De secretaris of penningmeester of een ander bestuurslid kiest ervoor om een mail te versturen.
Er is een scherm waar hij linken, onderwerp, tekst en dergelijke kan invoeren. En waar er kan gekozen worden om te versturen naar een bepaalde doelgroep. In de databasetabel staat tot welke doelgroep je behoort.
Die gegevens worden gebruikt in een functie die de mail een voor een verstuurt naar de leden van de doelgroep.
Dit gaat nu via platte tekst. Maar in HTML is het de bedoeling om dit te doen via een mooier geformatteerde tekst met gepersonaliseerde aanspreking. Dus met het gebruik van Bold, Italic en ook met een afbeelding en dergelijke.
Nu werkt dit met platte tekst of dit naar 8 of 1500 personen is. Ik zit enkel met de beperkingen van de server die maar 1500 mails per uur toelaat. Maar dit wordt opgelost door een pause van 3 seconden tussen elke mail in te lassen. 3600 seconden gedeeld door 1500 is met marge ongeveer 3 seconden.
 
- SanThe -

- SanThe -

18/07/2024 14:15:35
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
>?php
while($row = haalrecordop())
{
    $inhoudmail = 'allehtmltagstotenmet<body>';
    $inhoudmail .= 'Beste '.$row['naam'];
    $inhoudmail .= restvandemail;
    $inhoudmail .= 'allehtmltagsvanaf</body>';
    sendmail($inhoudmail);
}
?>

Gewijzigd op 19/07/2024 00:37:43 door - SanThe -
 
Ignace Verschaeve

Ignace Verschaeve

18/07/2024 18:25:17
Quote Anchor link
Bedankt, dit gaan we uitproberen. Ik moet nu nog een oplossing hebben voor de rest van de mail die bestaat uit nog 5 variabelen. Zijnde de inhoud van de mail die bestaat uit uit minstens 3 paragrafen met de inhoud.

Toevoeging op 18/07/2024 18:30:01:

- SanThe - op 18/07/2024 14:15:35:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
>?php
while($row = haalrecordop())
{
    $inhoudmail = 'allehtmltagstotenmet<body>';
    $inhoudmail .= 'Beste '.$row['naam'];
    $inhoudmail .= restvandemail;
    $inhoudmail = 'allehtmltagsvanaf</body>';
        $inhoudmail .= $tekst1 . $tekst2 .$tekst3;
    sendmail($inhoudmail);
}
?>



Dus zoiets: $inhoudmail .= $tekst1 . $tekst2 .$tekst3; Maar dat is het blijkbaar niet.
 
Adoptive Solution

Adoptive Solution

18/07/2024 19:02:37
Quote Anchor link
Dit is een voorbeeld.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php

while ( $row = $result->fetch_object() )
{

    $bodyHTML  = "<!DOCTYPE html>
<html>
<head>
<style type='text/css'>
.divv {border: 1px solid red; max-width: 720px; padding: 0.500em; margin: 0.500em auto;}
</style>
</head>
<body>
<div class='divv'>
<h3>Hallo <b>"
. $name . ",</b></h3>
<p><a  href='"
. $votelink . "' target='_blank'>" . $votelink . "</a></p>
<p><img src='"
. $ballot_day_row->voting_scheme . '://' . $ballot_day_row->voting_url . 'qr_images/' . $tokenToVote . ".png' alt='voting token' style='width: 198px; heigth: 198px;' /></p>
</div>
</body>
</html>"
;

}

?>
 
Ignace Verschaeve

Ignace Verschaeve

18/07/2024 19:42:08
Quote Anchor link
We gaan dit zo snel mogelijk uitproberen. Bedankt.Zal iets voor een van de volgende dagen zijn. Eerst nog wat andere dingen doen.
 
- SanThe -

- SanThe -

19/07/2024 00:15:15
Quote Anchor link
Ignace Verschaeve op 18/07/2024 18:25:17:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
while($row = haalrecordop())
{

    $inhoudmail = 'allehtmltagstotenmet<body>';
    $inhoudmail .= 'Beste '.$row['naam'];
    $inhoudmail .= $tekst1 . $tekst2 .$tekst3;
    $inhoudmail .= 'allehtmltagsvanaf</body>';
    sendmail($inhoudmail);
}

?>


Maar dat is het blijkbaar niet.


Je moet het wel op de juiste plaats zetten.
Gewijzigd op 19/07/2024 00:36:48 door - SanThe -
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.