1Du1 0 Denunciar post Postado Março 5, 2012 Olá....estou tentando enviar um email com anexo pelo zend e ele funciona corretamente pelo localhost mas quando eu tento enviar com o site online já no servidor ocorre este erro.... Warning: require_once(Zend/Mail/Transport/Abstract.php) [function.require-once]: failed to open stream: No such file or directory in C:\Inetpub\vhosts\psicoactivarh.com.br\httpdocs\Zend\Mail.php on line 26 Fatal error: require_once() [function.require]: Failed opening required 'Zend/Mail/Transport/Abstract.php' (include_path='C:\Program Files (x86)\Parallels\Plesk\Additional\PleskPHP5\pear') in C:\Inetpub\vhosts\psicoactivarh.com.br\httpdocs\Zend\Mail.php on line 26 O script que estou usando é este. <?php /** * O Email foi enviado corretamente? */ if($_POST) { require_once 'Zend/Mail.php'; require_once 'Zend/Mail/Transport/Smtp.php'; /** * Recebendo os campos do formulário */ $arqTmp = $_FILES["file"]["tmp_name"]; $arqName = $_FILES["file"]["name"]; $arqType = $_FILES["file"]["type"]; $para = $_POST["para"]; /** * Config */ $smtp = "smtp.gmail.com"; $conta = "*********@gmail.com"; $senha = "********"; $de = "email"; $assunto = "Curriculum"; $mensagem = "<b>Zend_Mail()</b> Teste de envio de email com Anexo."; try { $config = array ( 'auth' => 'login', 'username' => $conta, 'password' => $senha, 'ssl' => 'ssl', 'port' => '465' ); $mailTransport = new Zend_Mail_Transport_Smtp($smtp, $config); $mail = new Zend_Mail(); $mail->setFrom($de); $mail->addTo($para); $mail->setBodyHtml($mensagem); $mail->setSubject($assunto); $mail->createAttachment(file_get_contents($arqTmp), $arqType, Zend_Mime::DISPOSITION_INLINE, Zend_Mime::ENCODING_BASE64, $arqName); $mail->send($mailTransport); echo "Email enviado!"; } catch (Exception $e){ echo ($e->getMessage()); } } else { ?> <form method="post" enctype="multipart/form-data" name="form" id="form"> Arquivo: <input type="file" name="file" size="30" /> <br /> Para: <input type="text" name="para" size="50" value="email@teste.com.br" /> <br /> <input name="enviar" id="enviar" type="submit" value="Enviar" /> </form> <?php } ?> Alguem pode me ajudar ? Vlw.... Compartilhar este post Link para o post Compartilhar em outros sites
Leozitho 81 Denunciar post Postado Março 6, 2012 A mensagem de erro informa que o PHP não está conseguindo encontrar um arquivo do ZF. Para que os arquivos possam ser localizados automaticamente você precisa adicionar o caminho onde se encontra a pasta Zend no include_path da sua aplicação. Por exemplo, supondo que a sua pasta Zend esteja em /home/usuario/library ficaria assim: set_include_path(implode(PATH_SEPARATOR, array( '/home/usuario/library', get_include_path(), ))); Compartilhar este post Link para o post Compartilhar em outros sites
1Du1 0 Denunciar post Postado Março 6, 2012 Preciso colocar isso no script ou no php.ini ? A pasta Zend está no servidor e dentro dela estão os arquivos da library Compartilhar este post Link para o post Compartilhar em outros sites
Tiare Balbi Bonamini 2 Denunciar post Postado Março 6, 2012 O erro está no SSL! Para executar ssl o servidor tem que ter configurado o OpenSSL! Você pode confirmar isso mudando para TLS. Compartilhar este post Link para o post Compartilhar em outros sites
Leozitho 81 Denunciar post Postado Março 6, 2012 Preciso colocar isso no script ou no php.ini ? A pasta Zend está no servidor e dentro dela estão os arquivos da library Você precisa colocar em qualquer arquivo PHP antes do código que você postou, pode ser no mesmo arquivo ou então em um arquivo de configuração (se sua aplicação possuir um). Pela mensagem de erro eu vi que o local onde está a pasta Zend em sua hospedagem é C:\Inetpub\vhosts\psicoactivarh.com.br\httpdocs. Está na pasta raiz da sua hospedagem, certo? Se o arquivo que você postou também estiver na raiz, basta deixar o código assim: set_include_path(implode(PATH_SEPARATOR, array( dirname(__FILE__), get_include_path(), ))); Coloque esse código antes do código que você postou e veja se funcionou. O erro está no SSL! Para executar ssl o servidor tem que ter configurado o OpenSSL! Você pode confirmar isso mudando para TLS. Tiare, não entendi de onde você tirou ser erro de SSL. O erro está bem claro que é de arquivo não encontrado. Compartilhar este post Link para o post Compartilhar em outros sites
1Du1 0 Denunciar post Postado Março 6, 2012 Testei com tls e dá o mesmo erro =/.... o que será que pode ser no servidor ? Comtodos que testei só dá problema no servidor, com o phpmailer ele envia o email com o anexo pelo localhost e pelo servidor web só chega o email sem o anexo, já pelo zendmail ele vai normal pelo local e dá esse erro pelo servidor web... Leo deixei o código desse jeito.... <?php /** * O Email foi enviado corretamente? */ set_include_path(implode(PATH_SEPARATOR, array( dirname(__FILE__), get_include_path(), ))); if($_POST) { require_once 'Zend/Mail.php'; require_once 'Zend/Mail/Transport/Smtp.php'; /** * Recebendo os campos do formulário */ $arqTmp = $_FILES["file"]["tmp_name"]; $arqName = $_FILES["file"]["name"]; $arqType = $_FILES["file"]["type"]; $para = $_POST["para"]; /** * Config */ $smtp = "smtp.gmail.com"; $conta = "*********@gmail.com"; $senha = "********"; $de = "email"; $assunto = "Curriculum"; $mensagem = "<b>Zend_Mail()</b> Teste de envio de email com Anexo."; try { $config = array ( 'auth' => 'login', 'username' => $conta, 'password' => $senha, 'ssl' => 'ssl', 'port' => '465' ); $mailTransport = new Zend_Mail_Transport_Smtp($smtp, $config); $mail = new Zend_Mail(); $mail->setFrom($de); $mail->addTo($para); $mail->setBodyHtml($mensagem); $mail->setSubject($assunto); $mail->createAttachment(file_get_contents($arqTmp), $arqType, Zend_Mime::DISPOSITION_INLINE, Zend_Mime::ENCODING_BASE64, $arqName); $mail->send($mailTransport); echo "Email enviado!"; } catch (Exception $e){ echo ($e->getMessage()); } } else { ?> <form method="post" enctype="multipart/form-data" name="form" id="form"> Arquivo: <input type="file" name="file" size="30" /> <br /> Para: <input type="text" name="para" size="50" value="email@teste.com.br" /> <br /> <input name="enviar" id="enviar" type="submit" value="Enviar" /> </form> <?php } ?> Quando eu clico em enviar ele fica carregando por um tempo e dá esse erro Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, and inform them of the time the error occurred and anything you might have done that may have caused the error. More information about this error may be available in the server error log. Nem pelo localhost ele está mandando agora... Compartilhar este post Link para o post Compartilhar em outros sites
Leozitho 81 Denunciar post Postado Março 6, 2012 Mas agora o erro de arquivo não encontrado sumiu né? Eu vi que você está usando a porta 465, o Gmail usa a porta 587 (não sei se a 465 também funciona) e como o Tiare disse a criptografia é TLS e não SSL. Deixe o código assim e veja se funciona: $config = array ( 'auth' => 'login', 'username' => $conta, 'password' => $senha, 'tls' => 'ssl', 'port' => 587 ); Compartilhar este post Link para o post Compartilhar em outros sites
1Du1 0 Denunciar post Postado Março 6, 2012 Testei....agora está dando erro em outro lugar =/ Notice: Undefined index: file in C: on line 30 Notice: Undefined index: file in C: on line 31 Notice: Undefined index: file in C: on line 32 Notice: Undefined index: file in C: on line 33 que são: $arqTmp = $_FILES["file"]["tmp_name"]; $arqName = $_FILES["file"]["name"]; $arqType = $_FILES["file"]["type"]; $para = $_POST["para"]; Warning: file_get_contents() [function.file-get-contents]: Filename cannot be empty in C:\wamp\www\PsicoActiva\enviar.php on line 62 que é: $mail->createAttachment(file_get_contents($arqTmp), $arqType, Zend_Mime::DISPOSITION_INLINE, Zend_Mime::ENCODING_BASE64, $arqName); O erro está no anexo agora ? Este erro está dando no localhost, pelo servidor aparece esse somente Warning: file_get_contents() [function.file-get-contents]: Filename cannot be empty in C:\Inetpub\vhosts\psicoactivarh.com.br\httpdocs\enviar.php on line 62 5.7.0 Must issue a STARTTLS command first. u20sm8448608yhi.10 Compartilhar este post Link para o post Compartilhar em outros sites
Leozitho 81 Denunciar post Postado Março 6, 2012 Troque a linha: if($_POST) { Por: if ($_SERVER['REQUEST_METHOD'] == 'POST') { Compartilhar este post Link para o post Compartilhar em outros sites
1Du1 0 Denunciar post Postado Março 6, 2012 Continua com o mesmo erro Warning: file_get_contents() [function.file-get-contents]: Filename cannot be empty in C:\Inetpub\vhosts\psicoactivarh.com.br\httpdocs\enviar.php on line 62 5.7.0 Must issue a STARTTLS command first. e8sm3293343yhk.0 :wacko: Compartilhar este post Link para o post Compartilhar em outros sites
Leozitho 81 Denunciar post Postado Março 6, 2012 Amigo, esses erros que você está mostrando são apenas de PHP, não tem nada a ver com o ZF. Até agora você já apresentou vários erros diferentes, e você só diz "continua o mesmo erro", não diz quais pararam de aparecer, daí fica complicado ajudar. Os erros "Undefined index" pararam de aparecer né? Agora é só o erro da função file_get_contents que aparece? O erro informa que o nome do arquivo não pode ser vazio, você está selecionando o arquivo antes de enviar o formulário? Compartilhar este post Link para o post Compartilhar em outros sites
1Du1 0 Denunciar post Postado Março 7, 2012 Consegui arrumar Leo....a pasta temp n estava acessivel mesmo habilitando controle total nela...ai troquei de windows para linux no servidor e deu certo.... Vlw pela ajuda cara Compartilhar este post Link para o post Compartilhar em outros sites
Leozitho 81 Denunciar post Postado Março 7, 2012 Que bom que resolveu. Um abraço! Compartilhar este post Link para o post Compartilhar em outros sites