Mail met opmaak versturen probleem
Ik probeer een systeem te maken waarmee ik online een mailbericht kan maken en deze kan versturen. De bedoeling is dat de mail een html-opmaak heeft met bijvoorbeeld een logo rechtsbovenin etc.
Het maken van de mailtjes lukt wel, met behulp van swiftmailer.
Wat niet lukt is de juiste opmaak. In verschillende mailboxen (outlook, hotmail, mail van mijn werk) ziet het bericht er steeds anders uit. In sommige gevallen worden alle divs gewoon rechts uitgelijnd, in sommige gevallen worden de afbeeldingen niet geladen, etc.
Wat doe ik verkeerd, en wat is eventueel een bestaande oplossing die wel goed werkt?
Dit is mijn code:
Code (php)
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
60
61
62
63
64
65
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
60
61
62
63
64
65
<?php
$mail = '[email protected]';
$kop = 'kop van het bericht';
$bericht = '
<style>
body {
background-color:#F3F781;
color: #000000;
font-family: Verdana;
font-size: 10pt;
}
#bericht {
width: 600px;
margin: 0 auto;
margin: 10px;
background-color: #EEFFFF;
color: #036;
border: 1px solid #036;
border-radius: 5px;
padding: 5px;
clear: both;
}
#logo1{
float:right;
width:150px;
}
#logo2{
float:left;
width:150px;
}
</style>
<div id="bericht">
<div id="logo1"><img src="logo1.png" width=150px /></div>
"Sed ut perspiciatis unde
omnis iste natus error sit
voluptatem accusantium doloremque
laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?"
<div id="logo2"><img src="logo2.png" width=150px /></div></div>';
$van = 'afzender';
$naam_van = "naam afzender";
require_once '../lib/swift_required.php';
$transport = Swift_SendmailTransport::newInstance('/usr/sbin/sendmail -bs');
$transport = Swift_MailTransport::newInstance();
$mailer = Swift_Mailer::newInstance($transport);
$message = Swift_Message::newInstance($kop)
->setFrom(array($van => $naam_van))
->setTo(array($mail))
->addPart($bericht, 'text/html')
;
$message->attach(Swift_Attachment::fromPath('logo1.png'));
$message->attach(Swift_Attachment::fromPath('logo2.png'));
$result = $mailer->send($message);
?>
$mail = '[email protected]';
$kop = 'kop van het bericht';
$bericht = '
<style>
body {
background-color:#F3F781;
color: #000000;
font-family: Verdana;
font-size: 10pt;
}
#bericht {
width: 600px;
margin: 0 auto;
margin: 10px;
background-color: #EEFFFF;
color: #036;
border: 1px solid #036;
border-radius: 5px;
padding: 5px;
clear: both;
}
#logo1{
float:right;
width:150px;
}
#logo2{
float:left;
width:150px;
}
</style>
<div id="bericht">
<div id="logo1"><img src="logo1.png" width=150px /></div>
"Sed ut perspiciatis unde
omnis iste natus error sit
voluptatem accusantium doloremque
laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?"
<div id="logo2"><img src="logo2.png" width=150px /></div></div>';
$van = 'afzender';
$naam_van = "naam afzender";
require_once '../lib/swift_required.php';
$transport = Swift_SendmailTransport::newInstance('/usr/sbin/sendmail -bs');
$transport = Swift_MailTransport::newInstance();
$mailer = Swift_Mailer::newInstance($transport);
$message = Swift_Message::newInstance($kop)
->setFrom(array($van => $naam_van))
->setTo(array($mail))
->addPart($bericht, 'text/html')
;
$message->attach(Swift_Attachment::fromPath('logo1.png'));
$message->attach(Swift_Attachment::fromPath('logo2.png'));
$result = $mailer->send($message);
?>
Gewijzigd op 24/07/2013 13:21:58 door Tobias Tobias
Je gebruikt geen correcte html.
@Sante: Bedoel je dat ik ook de <html> en <body>-tags moet gebruiken?
W3C Valid is.
Als je een html mail maakt, zorg dan dat de html Hier 2 voorbeelden van wat er mis gaat:
Bij voorbeeld 2 moet het logo rechts staan ipv links. Hij geeft hetzelfde probleem in FF, GC en IE.
is er geen bestaand systeem dat ik kan gebruiken?
Zet je $bericht eens niet in een mailtje maar gewoon op je site. Ziet het er dan wel goed uit?
mailheaders gebruikt?
Heb je de juiste Daar zou swiftmailer toch juist voor moeten zorgen?!
Dat dacht ik ook
Ik zou toch Danny L zijn oplossing eens proberen. Uiteindelijk gaat het om het resultaat en niet om wat W3C er van vindt.
Ik heb hem nu zover werkend dat de afbeeldingen netjes geladen worden. Ik heb in plaats van het relatieve pad een absoluut pad gebruikt voor de afbeeldingen:
<img src="http://www.website.nl/afbeelding.jpg" />
ipv
<img src="afbeelding.jpg" />
Ondanks dat de afbeelding meegestuurd werd als bijlage konden de meeste mail-programma's (uitgezonderd hotmail) blijkbaar niet overweg met een relatief pad.
Blijft alleen de verkeerde opmaak uit voorbeeld 2 over, maar die doet zich alleen voor bij hotmail. Misschien dat het probleem bij hotmail zelf ligt.
http://net.tutsplus.com/tutorials/html-css-techniques/getting-started-with-html-emails/
zo kun je foto's het beste in je HTML invoegen wanneer je ze meestuurt als bijlage met swiftmailer:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Create the message
$message = Swift_Message::newInstance('My subject');
// Set the body
$message->setBody(
'<html>' .
' <head></head>' .
' <body>' .
' Here is an image <img src="' . // Embed the file
$message->embed(Swift_Image::fromPath('image.png')) .
'" alt="Image" />' .
' Rest of message' .
' </body>' .
'</html>',
'text/html' // Mark the content-type as HTML
);
$message = Swift_Message::newInstance('My subject');
// Set the body
$message->setBody(
'<html>' .
' <head></head>' .
' <body>' .
' Here is an image <img src="' . // Embed the file
$message->embed(Swift_Image::fromPath('image.png')) .
'" alt="Image" />' .
' Rest of message' .
' </body>' .
'</html>',
'text/html' // Mark the content-type as HTML
);
bron: http://swiftmailer.org/docs/messages.html
Gewijzigd op 24/07/2013 20:55:55 door Frank Nietbelangrijk