Jump to content
pessantiago

PHP: salvar email em ficheiro temporário

Recommended Posts

pessantiago

Boas

Envio o email com php mailer e pertendo  guardar um registo do email enviado no servidor de ftp.

tento criar um ficheiro temporário mas esta sempre vazio

o  guid é um random

 

aqui fica o código

$mail->preSend();

$file = GUID().'.eml'; 

$temp = tmpfile();
//file_put_contents($temp, $mail->getSentMIMEMessage());
fwrite($temp, $mail->getSentMIMEMessage());
$path = tempnam(sys_get_temp_dir(), 'prefix');

$ch = curl_init();
    $fp = fopen($path, 'r');
    curl_setopt($ch, CURLOPT_URL, 'ftp://'.$ftp_server . ''/' . $file);
    curl_setopt($ch, CURLOPT_USERPWD, $ftp_user_name . ':' . $ftp_user_pass);
       curl_setopt($ch, CURLOPT_UPLOAD, 1);
          curl_setopt($ch, CURLOPT_INFILE, $fp);
            curl_setopt($ch, CURLOPT_INFILESIZE, filesize($path));
            curl_exec ($ch);
            $error_no = curl_errno($ch);
            curl_close ($ch);


 

Share this post


Link to post
Share on other sites
M6

Já confirmaste que o $mail->getSentMIMEMessage() retorna mesmo alguma coisa?


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
jacreis

Ou configuração do servidor de FTP e/ou firewall... o $error_no deve ter 


---
 

Share this post


Link to post
Share on other sites
pessantiago

sim retorna localmente grava o ficheiro mas e enviar para o ftp mas só faz de vez em quando...nao percebo

$filelocal = GUID() . '.eml';
            file_put_contents($filelocal, $mail->getSentMIMEMessage());
            //salva o arquivo gerado para o remoto
            
            $ch = curl_init();
            $fp = fopen($filelocal, 'r');
            curl_setopt($ch, CURLOPT_URL, 'ftp://' . $ftp_server . '/EMAIL/' . $year . '/' . $month . '/' . $day . '/' . $filelocal);
            curl_setopt($ch, CURLOPT_USERPWD, $ftp_user_name . ':' . $ftp_user_pass);
            curl_setopt($ch, CURLOPT_UPLOAD);
            curl_setopt($ch, CURLOPT_INFILE, $fp);
            curl_setopt($ch, CURLOPT_INFILESIZE, filesize($filelocal));
            curl_exec($ch);
            $error_no = curl_errno($ch);

  unlink($filelocal);;

Mas já fiz que a estrutura que grava o eml porem está estrutura não é a mesma e como são app distintas nao posso usar o phpmailer porque depois o email não abre na outra aplicação.

 

Alguém sabe usar o chilkat peguei no exemplo https://www.example-code.com/phpExt/smtp_simpleSend.asp e nada...

 

meti o meu mail

 

Já tenho a lib instalada só que o php não reconhece a lib...

 

php 5.6.0

Edited by pessantiago

Share this post


Link to post
Share on other sites
jacreis

Então tens 2 problemas:

1º importação de livraria 

23 minutos atrás, pessantiago disse:

Já tenho a lib instalada só que o php não reconhece a lib...

já colocaste a função include? o caminho está certo? olha que os caminhos em windows e os caminhos em linux são diferentes...

saber mais: 
https://secure.php.net/manual/en/function.include.php
https://stackoverflow.com/questions/12316703/php-require-once-path-difference-between-windows-and-linux

 

2º Envio de ficheiros por FTP

3 horas atrás, M6 disse:

Já confirmaste que o $mail->getSentMIMEMessage() retorna mesmo alguma coisa?

Já?


Já confirmaste qual é o erro que retorna 

$error_no = curl_errno($ch);

É que a causa pode ser externa ao próprio código... pode ser do servidor de FTP ou da Firewall do servidor.

saber mais: 
https://curl.haxx.se/libcurl/c/libcurl-errors.html


---
 

Share this post


Link to post
Share on other sites
pessantiago

da primeira vez que corro app não da erro anexa, da segunda vez o servidor  para..

Share this post


Link to post
Share on other sites
pessantiago

alterei o codigo crei para o tmp mas apagar o ficheiro temporario que era bom diz que nao tenho permissões 

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.