[php] attachment van server versturen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • jayb
  • Registratie: Oktober 2007
  • Laatst online: 05-01-2024
Hoi allemaal,

Ik ben op dit moment bezig met een mailscript te maken om een bestand van een server in een mailtje naar mijn mail account te krijgen.

Hoewel dit relatief makkelijk (zou moeten zijn) zie ik door de bomen waarschijnlijk het bos niet meer. Via de zoekfunctie had ik al een aantal ideeen opgedaan en ben ik op het punt dat ik ongeveer begrijp hoe het werkt dmv Mime en base 64 codering (althans dat denk ik)

Probleem
Op internet had ik het onderstaande gevonden wat mij vrij makkelijk leek kwestie van email adres en attachment definieren echter mijn IE zegt netjes mail sent maar mijn inbox blijft leeg.
code:
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
<?php 
//define the receiver of the email 
$to = 'youraddress@example.com'; 
//define the subject of the email 
$subject = 'Test email with attachment'; 
//create a boundary string. It must be unique 
//so we use the MD5 algorithm to generate a random hash 
$random_hash = md5(date('r', time())); 
//define the headers we want passed. Note that they are separated with \r\n 
$headers = "From: webmaster@example.com\r\nReply-To: webmaster@example.com"; 
//add boundary string and mime type specification 
$headers .= "\r\nContent-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\""; 
//read the atachment file contents into a string,
//encode it with MIME base64,
//and split it into smaller chunks
$attachment = chunk_split(base64_encode(file_get_contents('attachment.zip'))); 
//define the body of the message. 
ob_start(); //Turn on output buffering 
?> 
--PHP-mixed-<?php echo $random_hash; ?>  
Content-Type: multipart/alternative; boundary="PHP-alt-<?php echo $random_hash; ?>" 

--PHP-alt-<?php echo $random_hash; ?>  
Content-Type: text/plain; charset="iso-8859-1" 
Content-Transfer-Encoding: 7bit

Hello World!!! 
This is simple text email message. 

--PHP-alt-<?php echo $random_hash; ?>  
Content-Type: text/html; charset="iso-8859-1" 
Content-Transfer-Encoding: 7bit

<h2>Hello World!</h2> 
<p>This is something with <b>HTML</b> formatting.</p> 

--PHP-alt-<?php echo $random_hash; ?>-- 

--PHP-mixed-<?php echo $random_hash; ?>  
Content-Type: application/zip; name="attachment.zip"  
Content-Transfer-Encoding: base64  
Content-Disposition: attachment  

<?php echo $attachment; ?> 
--PHP-mixed-<?php echo $random_hash; ?>-- 

<?php 
//copy current buffer contents into $message variable and delete current output buffer 
$message = ob_get_clean(); 
//send the email 
$mail_sent = @mail( $to, $subject, $message, $headers ); 
//if the message is sent successfully print "Mail sent". Otherwise print "Mail failed" 
echo $mail_sent ? "Mail sent" : "Mail failed"; 
?>
]

Ps. verder ben ik eens gaan kijken naar PHPmailer van Brent R. Matzelle maar dat is voor mij nog net een brug te ver om te begrijpen hoe ik op die manier een dergelijke email verstuur.
[edit] Ps2 ik heb via strato.com een website gehost en heb helaas geen toegang tot de php.ini

Dank voor jullie reactie's _/-\o_

Acties:
  • 0 Henk 'm!

  • MRED
  • Registratie: Maart 2000
  • Laatst online: 22-12-2020

MRED

Carpe diem...

Kan je het niet met mb_send_mail doen?

Mijn weblog


Acties:
  • 0 Henk 'm!

  • MuisM4t
  • Registratie: Mei 2007
  • Niet online
Je zou eens [ code ] tags kunnen gebruiken

[ Voor 15% gewijzigd door MuisM4t op 29-12-2008 17:20 ]


Acties:
  • 0 Henk 'm!

  • Bender
  • Registratie: Augustus 2000
  • Laatst online: 16-09 09:15
Als het gebruik ervan al moeilijk is (phpmailer) dan is het maken er van natuurlijk nog moeilijker ;)

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Bespaar jezelf de moeite het MIME-protocol te implementeren, en gebruik de PhpMailer-class.
Dan hoeft je code niet heel veel meer te zijn dan;
PHP:
1
2
3
4
5
$mail = new Phpmailer;
$mail->AddAttachment('file.ext');
$mail->To = 'foo@example.com';
$mail->Subject = 'File attachment';
$mail->Send();


Bij de download van de source zit ongetwijfeld een example.php welke je 1-op-1 over kunt nemen.

[ Voor 11% gewijzigd door frickY op 29-12-2008 23:53 ]


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • jayb
  • Registratie: Oktober 2007
  • Laatst online: 05-01-2024
Thanks voor de replies so far.

@ MRED, klinkt zo snel okay moet even zien of het ook meerdere attachemets doet.
@ MuisM4t thx just fixed it
@ Triloxigen; ik wil weten en begrijpen wat ik precies doe en ook niet doe, doel is om er ook gelijk iets van te leren nietwaar
@frickY, ik ga idd even kijken naar dat phpmailer lijkt toch iets meer te zijn dan ik in eerste instantie zag je wordt alleen een beetje misselijk als je die class zelf doorneemt ;) en probeert te begrijpen wat er precies gebeurt haha
@crisp, excuus hiervoor ik was in de veronderstelling dat met alle php stukken binnen webdev het daar toch meer parkte

ik ga morgen gelijk met jullie comments aan de slag. Ik laat het weten zodra het is opgelost en hoe ... staat ook netjes voor in de toekomst ;)
Pagina: 1