20_LESI Posted December 27, 2009 at 01:27 AM Report Share #302528 Posted December 27, 2009 at 01:27 AM Boas! Ao seguir o tutorial de php da w3schools não consegui fazer nada no que ao envia de e-mails diz respeito... Eles fornecem este código: <?php $to = "someone@example.com"; $subject = "Test mail"; $message = "Hello! This is a simple email message."; $from = "someonelse@example.com"; $headers = "From: $from"; mail($to,$subject,$message,$headers); echo "Mail Sent."; ?> Isto é suposto funcionar? Já experimentei de montes de maneiras diferentes e nada... Link to comment Share on other sites More sharing options...
rjcarneiro Posted December 27, 2009 at 01:32 AM Report Share #302529 Posted December 27, 2009 at 01:32 AM Tens a correr no teu server? Ou tens alguma conta? Se tiveres no teu server, provavelmente tens que configurar, no Apache, a função sendmail.... Link to comment Share on other sites More sharing options...
20_LESI Posted December 27, 2009 at 02:19 AM Author Report Share #302534 Posted December 27, 2009 at 02:19 AM No meu server! Como configuro isso? Link to comment Share on other sites More sharing options...
rjcarneiro Posted December 28, 2009 at 12:00 AM Report Share #302698 Posted December 28, 2009 at 12:00 AM http://lmgtfy.com/?q=how+configure+mail+apache+php Link to comment Share on other sites More sharing options...
20_LESI Posted December 28, 2009 at 12:14 AM Author Report Share #302699 Posted December 28, 2009 at 12:14 AM ? Depois de algumas horas de pesquisa encontrei finalmente algo que funciona, no entanto não consigo enviar mails para o hotmail. Alguém tem alguma ideia do que está a acontecer? <form action="FormToEmail.php" method="post"> <table border="0" style="background:#ececec" cellspacing="5"> <tr align="left"><td>Name</td><td><input type="text" size="30" name="name"></td></tr> <tr align="left"><td>Email address</td><td><input type="text" size="30" name="email"></td></tr> <tr align="left"><td valign="top">Comments</td><td><textarea name="comments" rows="6" cols="30"></textarea></td></tr> <tr align="left"><td> </td><td><input type="submit" value="Send"><font face="arial" size="1"> <a href="http://FormToEmail.com">Form Mail</a> by FormToEmail.com</font></td></tr> </table> </form> <?php $my_email = "my_email"; $from_email = ""; $continue = "/"; $errors = array(); // Remove $_COOKIE elements from $_REQUEST. if(count($_COOKIE)){foreach(array_keys($_COOKIE) as $value){unset($_REQUEST[$value]);}} // Validate email field. if(isset($_REQUEST['email']) && !empty($_REQUEST['email'])) { $_REQUEST['email'] = trim($_REQUEST['email']); if(substr_count($_REQUEST['email'],"@") != 1 || stristr($_REQUEST['email']," ")){$errors[] = "Email address is invalid";}else{$exploded_email = explode("@",$_REQUEST['email']);if(empty($exploded_email[0]) || strlen($exploded_email[0]) > 64 || empty($exploded_email[1])){$errors[] = "Email address is invalid";}else{if(substr_count($exploded_email[1],".") == 0){$errors[] = "Email address is invalid";}else{$exploded_domain = explode(".",$exploded_email[1]);if(in_array("",$exploded_domain)){$errors[] = "Email address is invalid";}else{foreach($exploded_domain as $value){if(strlen($value) > 63 || !preg_match('/^[a-z0-9-]+$/i',$value)){$errors[] = "Email address is invalid"; break;}}}}}} } // Check referrer is from same site. if(!(isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER']) && stristr($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST']))){$errors[] = "You must enable referrer logging to use the form";} // Check for a blank form. function recursive_array_check_blank($element_value) { global $set; if(!is_array($element_value)){if(!empty($element_value)){$set = 1;}} else { foreach($element_value as $value){if($set){break;} recursive_array_check_blank($value);} } } recursive_array_check_blank($_REQUEST); if(!$set){$errors[] = "You cannot send a blank form";} unset($set); // Display any errors and exit if errors exist. if(count($errors)){foreach($errors as $value){print "$value<br>";} exit;} if(!defined("PHP_EOL")){define("PHP_EOL", strtoupper(substr(PHP_OS,0,3) == "WIN") ? "\r\n" : "\n");} // Build message. function build_message($request_input){if(!isset($message_output)){$message_output ="";}if(!is_array($request_input)){$message_output = $request_input;}else{foreach($request_input as $key => $value){if(!empty($value)){if(!is_numeric($key)){$message_output .= str_replace("_"," ",ucfirst($key)).": ".build_message($value).PHP_EOL.PHP_EOL;}else{$message_output .= build_message($value).", ";}}}}return rtrim($message_output,", ");} $message = build_message($_REQUEST); $message = $message . PHP_EOL.PHP_EOL."-- ".PHP_EOL."Thank you for using FormToEmail from http://FormToEmail.com"; $message = stripslashes($message); $subject = "FormToEmail Comments"; $subject = stripslashes($subject); if($from_email) { $headers = "From: " . $from_email; $headers .= PHP_EOL; $headers .= "Reply-To: " . $_REQUEST['email']; } else { $from_name = ""; if(isset($_REQUEST['name']) && !empty($_REQUEST['name'])){$from_name = stripslashes($_REQUEST['name']);} $headers = "From: {$from_name} <{$_REQUEST['email']}>"; } if(!mail($my_email,$subject,$message,$headers)) { echo "Error sending: " . $mail->ErrorInfo; } else { echo "Letter is sent"; } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Form To Email PHP script from FormToEmail.com</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body bgcolor="#ffffff" text="#000000"> <div> <center> <b>Thank you <?php if(isset($_REQUEST['name'])){print stripslashes($_REQUEST['name']);} ?></b> <br>Your message has been sent <p><a href="<?php print $continue; ?>">Click here to continue</a></p> <p><b>FormToEmail</b> by <a href="http://FormToEmail.com">FormToEmail.com</a></p> </center> </div> </body> </html> Link to comment Share on other sites More sharing options...
20_LESI Posted December 28, 2009 at 04:58 AM Author Report Share #302706 Posted December 28, 2009 at 04:58 AM Consegui resolver o problema. Tive de sacar a última versão da classe phpmailer deste site http://www.phpclasses.org/ O código depois é o seguinte: <html> <body> <?php require("class.phpmailer.php"); $mail = new PHPMailer(); $mail->IsSMTP(); $mail->Mailer = 'smtp'; $mail->Host = 'ssl://smtp.gmail.com'; // SMTP server $mail->Port = 465; $mail->SMTPAuth = true; $mail->Username = "yourmail@gmail.com"; $mail->Password = "yourpassword"; $mail->From = "yourmail@gmail.com"; $mail->FromName = "REI"; $mail->AddAddress("destination_mail@*********"); $mail->AddReplyTo = "yourmail@gmail.com"; $mail->WordWrap = 50; $mail->IsHTML(true); $mail->Subject = "subject"; $mail->Body = 'body'; if(!$mail->Send()) { echo "Error sending: " . $mail->ErrorInfo; } else { echo "Letter is sent"; } ?> </html> </body> Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now