18. januar 2003 - 11:37
Der er
6 kommentarer og 1 løsning
e-mail med vedhæftet fil
Den virker nogenlunde, men teksten der bliver skrevet i $mail_body kommer ikke med. Er der en der kan finde fejlen eller fortælle mig hvorfor? Koden ser sådan ud: <?php function mailer_header() { ?> <html> <head> <title>E-mailer</title> </head> <body> <?php } function mailer_footer() { ?> </body> </html> <?php } function error_message($msg) { mailer_header(); echo "<SCRIPT>alert(\"Error: $msg\");history.go(-1)</SCRIPT>"; mailer_footer(); exit; } function user_message($msg) { mailer_header(); echo "<SCRIPT>alert(\"$msg\");history.go(-1)</SCRIPT>"; mailer_footer(); exit; } function mail_form() { global $PHP_SELF; ?> <FORM METHOD="POST" ENCTYPE="MULTIPART/FORM-DATA" ACTION=<?php echo $PHP_SELF ?> > <INPUT TYPE="hidden" NAME="action" VALUE="send_mail"> <DIV ALIGN="CENTER"><TABLE CELLSPACING="2" CELLPADDING="5" WIDTH="90%" BORDER="1"> <TR> <TH ALIGN="CENTER" WIDTH="30%">Til</TH> <TD WIDTH="70%"> <INPUT NAME="mail_to" SIZE="20"></TD> </TR> <TR> <TH ALIGN="CENTER" WIDTH="30%">Fra</TH> <TD WIDTH="70%"> <INPUT NAME="mail_from" SIZE="20"></TD> </TR> <TR> <TH ALIGN="CENTER" WIDTH="30%">Vedhæft</TH> <TD WIDTH="70%"> <INPUT TYPE="file" NAME="userfile"></TD> </TR> <TR> <TH ALIGN="CENTER" WIDTH="30%">Type</TH> <TD WIDTH="70%"> <INPUT TYPE="RADIO" VALUE="text" NAME="mail_type" CHECKED>TEXT <INPUT TYPE="RADIO" VALUE="html" NAME="mail_type">HTML</TD> </TR> <TR> <TH ALIGN="CENTER" WIDTH="30%">Emne</TH> <TD WIDTH="70%"> <INPUT NAME="mail_subject" SIZE="40"></TD> </TR> <TR> <TH ALIGN="CENTER" WIDTH="30%">Tekst</TH> <TD WIDTH="70%"> <TEXTAREA NAME="mail_body" ROWS="16" COLS="70"></TEXTAREA></TD> </TR> <TR> <TH WIDTH="100%" COLSPAN="2" ALIGN="CENTER"> <INPUT TYPE="SUBMIT" VALUE="Send" NAME="SUBMIT"> <INPUT TYPE="RESET" VALUE="Reset" NAME="RESET"> </TH> </TR> </TABLE> </DIV> </FORM> <?php } function send_mail() { global $mail_to, $mail_from; global $mail_body, $mail_subject; global $userfile, $userfile_type, $userfile_name, $userfile_size; global $mail_type; $mail_parts["mail_to"] = $mail_to; $mail_parts["mail_from"] = $mail_from; $mail_parts["mail_subject"] = trim($mail_subject); $mail_parts["mail_body"] = $mail_body; $mail_parts["mail_type"] = $mail_type; $mail_parts["userfile"] = $userfile; $mail_parts["userfile_type"] = $userfile_type; $mail_parts["userfile_name"] = $userfile_name; $mail_parts["userfile_size"] = $userfile_size; if(my_mail($mail_parts)) user_message("Din e-mail er blevet sendt. Emne: '$mail_subject'."); else error_message("Der er sket en fejl, da du forsøgte at sende, emne: '$mail_subject'."); } function my_mail($mail_parts) { $mail_to = $mail_parts["mail_to"]; $mail_from = $mail_parts["mail_from"]; $mail_subject = $mail_parts["mail_subject"]; $mail_body = $mail_parts["mail_body"]; $mail_type = $mail_parts["mail_type"]; $userfile = $mail_parts["userfile"]; $userfile_type = $mail_parts["userfile_type"]; $userfile_name = $mail_parts["userfile_name"]; $userfile_size = $mail_parts["userfile_size"]; if(empty($mail_to)) error_message("Empty to field!"); if(empty($mail_subject)) error_message("Empty subject!"); if(empty($mail_body)) error_message("Empty body!"); $mail_to = str_replace(";", ",", $mail_to); $mail_header = ''; if(!empty($mail_from)) $mail_header .= "From: $mail_from\n"; $mail_subject = stripslashes($mail_subject); $mail_body = stripslashes($mail_body); if($userfile_size > 0) { $mail_boundary = md5 (uniqid(time())); $mail_headers .= "MIME-Version: 1.0\r\n"; $mail_headers .= "Content-type: multipart/mixed; boundary=\"$mail_boundary\"\r\n\r\n"; $mail_headers .= "This is a multi-part message in MIME format.\r\n\r\n"; $fp = fopen($userfile, "r"); $file = fread($fp, filesize($userfile)); $file = chunk_split(base64_encode($file)); $new_mail_body = "--$mail_boundary\r\n"; $new_mail_body .= "Content-type:text/plain;charset=$mail_charset\r\n"; $new_mail_body .= "$mail_body\r\n"; $new_mail_body .= "--$mail_boundary\r\n"; if(!empty($userfile_type)) $mime_type = $userfile_type; else $mime_type = "application/octet-stream"; $new_mail_body .= "Content-type:$mime_type;name=$userfile_name\r\n"; $new_mail_body .= $file . "\r\n\r\n"; $new_mail_body .= "--$mail_boundary--"; $mail_body = $new_mail_body; } else if($mail_type == 'html') { $mail_header .= "Content-type: text/html; charset=$mail_charset\r\n"; } else { $mail_header .= "Content-type: text/plain; charset=$mail_charset\r\n"; } return mail($mail_to,$mail_subject,$mail_body,$mail_headers); } switch ($action) { case "send_mail": mailer_header(); send_mail(); mailer_footer(); break; case "mail_form": mailer_header(); mail_form(); mailer_footer(); break; default: mailer_header(); mail_form(); mailer_footer(); break; } ?>
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
18. januar 2003 - 13:17
#1
Er det *kun* $mail_body der ikke kommer med? Kan du ikke barbere din kode ned, så fejlen stadigvæk er med, men der er mindre kode?
18. januar 2003 - 13:36
#2
Synes det er mærkelig kode i dine funktioner, hvor du hopper ind og ud af html - fungerer det virkelig efter hensigten!!??
18. januar 2003 - 13:50
#3
"beskeden eller teksten" jeg skriver i mit textarea som hedder $mail_body bliver ikke sendt med, hvis jeg har vedhæftet en fil. Hvis jeg ikke vedhæfter noget, kommer det godt nok med. Og ja, det fungerer fint....borset fra mit problem.
18. januar 2003 - 14:32
#4
Hey hey....jeg har selv løst problemmet. Ellers mange tak.
18. januar 2003 - 14:50
#5
Venter lidt med point uddelingen.....hvis der er nogle der vil have dem...så skriv et svar. Den bedste kommentar synes jeg selv kommer fra darkstar! Og løsningen: <?php function mailer_header() { ?> <html> <head> <title>E-mailer</title> </head> <body> <?php } function mailer_footer() { ?> </body> </html> <?php } function error_message($msg) { mailer_header(); echo "<SCRIPT>alert(\"Error: $msg\");history.go(-1)</SCRIPT>"; mailer_footer(); exit; } function user_message($msg) { mailer_header(); echo "<SCRIPT>alert(\"$msg\");history.go(-1)</SCRIPT>"; mailer_footer(); exit; } function mail_form() { global $PHP_SELF; ?> <FORM METHOD="POST" ENCTYPE="MULTIPART/FORM-DATA" ACTION=<?php echo $PHP_SELF ?> > <INPUT TYPE="hidden" NAME="action" VALUE="send_mail"> <DIV ALIGN="CENTER"><TABLE CELLSPACING="2" CELLPADDING="5" WIDTH="90%" BORDER="1"> <TR> <TH ALIGN="CENTER" WIDTH="30%">Til</TH> <TD WIDTH="70%"> <INPUT NAME="mail_to" SIZE="20"></TD> </TR> <TR> <TH ALIGN="CENTER" WIDTH="30%">Fra</TH> <TD WIDTH="70%"> <INPUT NAME="mail_from" SIZE="20"></TD> </TR> <TR> <TH ALIGN="CENTER" WIDTH="30%">Vedhæft</TH> <TD WIDTH="70%"> <INPUT TYPE="file" NAME="userfile"></TD> </TR> <TR> <TH ALIGN="CENTER" WIDTH="30%">Type</TH> <TD WIDTH="70%"> <INPUT TYPE="RADIO" VALUE="text" NAME="mail_type" CHECKED>TEXT <INPUT TYPE="RADIO" VALUE="html" NAME="mail_type">HTML</TD> </TR> <TR> <TH ALIGN="CENTER" WIDTH="30%">Emne</TH> <TD WIDTH="70%"> <INPUT NAME="mail_subject" SIZE="40"></TD> </TR> <TR> <TH ALIGN="CENTER" WIDTH="30%">Tekst</TH> <TD WIDTH="70%"> <TEXTAREA NAME="mail_body" ROWS="16" COLS="70"></TEXTAREA></TD> </TR> <TR> <TH WIDTH="100%" COLSPAN="2" ALIGN="CENTER"> <INPUT TYPE="SUBMIT" VALUE="Send" NAME="SUBMIT"> <INPUT TYPE="RESET" VALUE="Reset" NAME="RESET"> </TH> </TR> </TABLE> </DIV> </FORM> <?php } function send_mail() { global $mail_to, $mail_from; global $mail_body, $mail_subject; global $userfile, $userfile_type, $userfile_name, $userfile_size; global $mail_type, $mail_charset, $mail_encoding; $mail_parts["mail_to"] = $mail_to; $mail_parts["mail_from"] = $mail_from; $mail_parts["mail_subject"] = trim($mail_subject); $mail_parts["mail_body"] = $mail_body; $mail_parts["mail_type"] = $mail_type; $mail_parts["mail_charset"] = $mail_charset; $mail_parts["mail_encoding"] = $mail_encoding; $mail_parts["userfile"] = $userfile; $mail_parts["userfile_type"] = $userfile_type; $mail_parts["userfile_name"] = $userfile_name; $mail_parts["userfile_size"] = $userfile_size; if(my_mail($mail_parts)) user_message("Successfully sent an e-mail titled '$mail_subject'."); else error_message("An unknown error occurred while attempting to send an e-mail titled '$mail_subject'."); } function my_mail($mail_parts) { $mail_to = $mail_parts["mail_to"]; $mail_from = $mail_parts["mail_from"]; $mail_subject = $mail_parts["mail_subject"]; $mail_body = $mail_parts["mail_body"]; $mail_type = $mail_parts["mail_type"]; $mail_charset = $mail_parts["mail_charset"]; $mail_encoding = $mail_parts["mail_encoding"]; $userfile = $mail_parts["userfile"]; $userfile_type = $mail_parts["userfile_type"]; $userfile_name = $mail_parts["userfile_name"]; $userfile_size = $mail_parts["userfile_size"]; if(empty($mail_to)) error_message("Empty to field!"); if(empty($mail_subject)) error_message("Empty subject!"); if(empty($mail_body)) error_message("Empty body!"); $mail_to = str_replace(";", ",", $mail_to); $mail_header = ''; if(!empty($mail_from)) $mail_header .= "From: $mail_from\n"; $mail_subject = stripslashes($mail_subject); $mail_body = stripslashes($mail_body); if($userfile_size > 0) { $mail_boundary = md5 (uniqid(time())); $mail_headers .= "MIME-Version: 1.0\r\n"; $mail_headers .= "Content-type: multipart/mixed; boundary=\"$mail_boundary\"\r\n\r\n"; $mail_headers .= "This is a multi-part message in MIME format.\r\n\r\n"; $fp = fopen($userfile, "r"); $file = fread($fp, filesize($userfile)); $file = chunk_split(base64_encode($file)); $new_mail_body = "--$mail_boundary\r\n"; $new_mail_body .= "Content-type:text/plain;charset=$mail_charset\r\n"; $new_mail_body .= "Content-transfer-encoding:$mail_encoding\r\n\r\n"; $new_mail_body .= "$mail_body\r\n"; $new_mail_body .= "--$mail_boundary\r\n"; if(!empty($userfile_type)) $mime_type = $userfile_type; else $mime_type = "application/octet-stream"; $new_mail_body .= "Content-type:$mime_type;name=$userfile_name\r\n"; $new_mail_body .= "Content-transfer-encoding:base64\r\n\r\n"; $new_mail_body .= $file . "\r\n\r\n"; $new_mail_body .= "--$mail_boundary--"; $mail_body = $new_mail_body; } else if($mail_type == 'html') { $mail_header .= "Content-type: text/html; charset=$mail_charset\r\n"; $mail_header .= "Content-transfer_encoding:$mail_encoding\r\n\r\n"; } else { $mail_header .= "Content-type: text/plain; charset=$mail_charset\r\n"; $mail_header .= "Content-transfer_encoding:$mail_encoding\r\n\r\n"; } return mail($mail_to,$mail_subject,$mail_body,$mail_headers); } switch ($action) { case "send_mail": mailer_header(); send_mail(); mailer_footer(); break; case "mail_form": mailer_header(); mail_form(); mailer_footer(); break; default: mailer_header(); mail_form(); mailer_footer(); break; } ?>
18. januar 2003 - 14:54
#6
Ih tak. Jeg nåede egentlig ikke at give dig et svar.
18. januar 2003 - 14:54
#7
Men så er der et "svar" her.
Vi tilbyder markedets bedste kurser inden for webudvikling