Erro ao enviar Email

(jobsoncunha) #1

Olá pessoal,

Tenho uma rotina de envio de email que funcionava bem para um cliente HOSTNET. porém esse cliente resolveu mudar para outro provedor, UOLHOSTS. Neste novo provedor a rotina de email retorna o seguinte erro:

[i]ERRO
fsockopen() [function.fsockopen]: SSL: connection timeout

Script: C:\Arquivos de programas\netmake\v5\wwwroot\scriptcase\prod\third\email_new\lib\Swift\Connection\SMTP.php (324)
fsockopen() [function.fsockopen]: Failed to enable crypto

Script: C:Arquivos de programas etmake5wwwrootscriptcaseprod hirdemail_newlibSwiftConnectionSMTP.php (324)
fsockopen() [function.fsockopen]: unable to connect to tls://smtp.clube-a.com:587 (Unknown error)

Script: C:Arquivos de programas etmake5wwwrootscriptcaseprod hirdemail_newlibSwiftConnectionSMTP.php (324)

Uncaught Error of type [Swift_ConnectionException] with message [The SMTP connection failed to start [tls://smtp.clube-a.com:587]: fsockopen returned Error Number 0 and Error String ‘’]
@0 cont_envia_email_apl::controle() in C:Arquivos de programas etmake5wwwrootscriptcaseappclubeacont_envia_emailcont_envia_email.php on line 1309
@1 cont_envia_email_apl::ini_controle() in C:Arquivos de programas etmake5wwwrootscriptcaseappclubeacont_envia_emailcont_envia_email_apl.php on line 1044
@2 cont_envia_email_apl::enviar() in C:Arquivos de programas etmake5wwwrootscriptcaseappclubeacont_envia_emailcont_envia_email_apl.php on line 1010
@3 Swift::Swift() in C:Arquivos de programas etmake5wwwrootscriptcaseappclubeacont_envia_emailcont_envia_email_apl.php on line 1555

Script: C:Arquivos de programas etmake5wwwrootscriptcaseprod hirdemail_newlibSwiftErrors.php (99)
Swift::handshake expects parameter 1 to be of type Swift_Events_ResponseEvent.

Script: C:Arquivos de programas etmake5wwwrootscriptcaseprod hirdemail_newlibSwift.php (279)
Enviados 2 e-mail com sucesso !!
[/i]

Mesmo mostrando a mensagem que os e-mails foram enviados, os mesmo não são enviados.
Meus parâmetros são os seguintes:

[i]$frase = {de};
//// provedor anterior HOSTNET - troca o ‘@’ por ‘=’ para o usuário
//// $frase = ereg_replace("@", “”, strtr($frase, “@”, “=”));
$frase = $frase;

sc_lookup(ds,“select senha from contas_email where conta = ‘{de}’”);
$senha = {ds[0][0]};

$smtp = ‘smtp.clube-a.com’;
$usr = $frase;
$pw = $senha;
$de = {de};
$para_x = {de};
$assunto = {assunto};
$mensagem = {menssagem};
$tipo_mens = ‘H’;
$copias = {enviar};
$tp_copias = ‘BCC’;
//// provedor anterior HOSTNET - $porta = ‘25’
$porta = ‘587’;
$tp_conexao = ‘S’;

$anexos = {anexos} . ‘;’ . {anexo1} . ‘;’ . {anexo2} . ‘;’ . {anexo3} . ‘;’ . {anexo4} . ‘;’ . {anexo5};

sc_mail_send ($smtp, $usr, $pw, $de, $para_x, $assunto, $mensagem, $tipo_mens, $copias, $tp_copias, $porta, $tp_conexao, $anexos);

if ({sc_mail_ok})
{
echo {para};
echo “Enviados {sc_mail_count} e-mail com sucesso !!”;
}
else
{
sc_erro_mensagem({sc_mail_erro});
}
[/i]

As mudanças no script foram as seguintes:
Para o usuário do provedor HOSTNET trocava o ‘@’ (usuario@meusite.com) por ‘=’
A porta para o provedor HOSTNET é ‘25’
A porte para o provedor UOLHOSTS é ‘587’

Existem apenas essas diferenças, porém o erro persiste da forma como mostrado acima.
Aguém poderia me ajudar a desvendar esse problema?

(rrma) #2

Amigo, vc conseguiu resolver este problema? To passando pela mesma coisa aqui.
Valeu.
Rodrigo

(waae) #3

Estava com o mesmo problema. No meu caso tive que configurar pra enviar email pelo GMAIL.
A porta correta lá era 465. Só que tem que tomar cuidado pois com o tipo de conexão NÃO segura não passava os emails. Tive que mudar para conexão Segura (“S”).

(rrma) #4

Pois então, eu to tentando pelo gmail mesmo, mas não envia de jeito nenhum, dá uma mensagem de timed out pra tls://smtp.gmail.com:465.

Já tentei de várias formas e não manda.

(waae) #5

1º coloque o conexão segura “S”.
2º verifique se seu servidor não está com essa porta bloqueada. pois no meu caso isso tb tava me atrapalhando.

sc_mail_send($smtp, $usuario, $senha,’$email_origem’,$email_destino,$assunto,$body,“H”,"" ,"" ,465, “S” );

O meu estava dando timeout tb… foi assim que resolvi

(rrma) #6

Já olhei meu firewall e parece certo, a mensagem de erro continua:

(Connection timed out)
Undefined index: file
Undefined index: line
Uncaught Error of type [Swift_ConnectionException] with message [The SMTP connection failed to start [tls://smtp.gmail.com:465]: fsockopen returned Error Number 110 and Error String ‘Connection timed out’]
@0 sajax_handle_client_request() in /var/www/planet/form_envio_arquivos/form_envio_arquivos.php on line 1282
@1 call_user_func_array() in /var/www/planet/form_envio_arquivos/form_envio_arquivos_sajax.php on line 122
@2 ajax_form_envio_arquivos_submit_form() in on line
@3 form_envio_arquivos_apl::controle() in /var/www/planet/form_envio_arquivos/form_envio_arquivos.php on line 1510
@4 form_envio_arquivos_apl::nm_acessa_banco() in /var/www/planet/form_envio_arquivos/form_envio_arquivos_apl.php on line 968
Swift::handshake expects parameter 1 to be of type Swift_Events_ResponseEvent.

Meu firewall //Trecho para liberacao do google mail:
#iptables -A OUTPUT -m multiport -p tcp --dport 465,995,587 -j ACCEPT
#iptables -A OUTPUT -m multiport -p tcp --sport 465,995,587 -j ACCEPT
#iptables -A FORWARD -m multiport -p tcp --dport 465,995,587 -j ACCEPT
#iptables -A FORWARD -m multiport -p tcp --sport 465,995,587 -j ACCEPT
#iptables -A INPUT -m multiport -p tcp --dport 465,995,587 -j ACCEPT
#iptables -A INPUT -m multiport -p tcp --sport 465,995,587 -j ACCEPT
#iptables -A INPUT -m multiport -p tcp --dport 465,995,587 -m state --state ESTABLISHED,RELATED -j ACCEPT
#iptables -A INPUT -p tcp --sport 465,995,587 -m state --state ESTABLISHED,RELATED -j ACCEPT
#iptables -A OUTPUT -p tcp --dport 465,995,587 -m state --state ESTABLISHED,RELATED -j ACCEPT
#iptables -A OUTPUT -p tcp --sport 465,995,587 -m state --state ESTABLISHED,RELATED -j ACCEPT
#iptables -A FORWARD -p tcp --dport 465,995,587 -m state --state ESTABLISHED,RELATED -j ACCEPT
#iptables -A FORWARD -p tcp --sport 465,995,587 -m state --state ESTABLISHED,RELATED -j ACCEPT

Rotina de envio:
/**
* Send a simple email
*/
// Email parameters
$mail_smtp_server = ‘smtp.gmail.com’; // SMTP server name or IP address
$mail_smtp_user = ‘XXXXXX@gmail.com’; // SMTP user name
$mail_smtp_pass = ‘XXXXXXX’; // SMTP password
$mail_from = ‘XXXXXX@gmail.com’; // From email
$mail_to = ‘email_do_cliente@gmail.com’; // To email
$mail_subject = ‘Assunto…xxx’; // Message subject
$mail_message = ‘Mensagem…xxx’;
$mail_format = ‘H’; // Message format: (T)ext or (H)tml

// Send email
sc_mail_send($mail_smtp_server,
             $mail_smtp_user,
             $mail_smtp_pass,
             $mail_from,
             $mail_to,
             $mail_subject,
             $mail_message,
             $mail_format,"","",465,"S");

Tenho ate algumas rotinas agendadas no servidor que me mandam email pelo gmail tranquilo. O erro deve estar na função do php.

Vou continuar tentando…
Valeu!

(Eduardo Alves) #7

Olá RRMA, conseguiu resolver essa parada ?? meu email deu o mesmo problema (servidor LOCAWEB)

tentei $mail_format,"","",465,""); no final mais deu a seguinte mensagem:

ERRO
FSOCKOPEN()[function.fsockopen]:unable to conect to tls://smtp.slords.com.br:465 (unable to find the socket transport “tls” - did you forget to enable it when you configured PHP?)
Swift:handshake expect parameter 1 to be of type Swift_Events_REsponseEvent.

(rrma) #8

Eduardo, no final das contas era apenas meu firewall mesmo que estava barrando a comunicação. Fiz alguns ajustes e passou a enviar normal.
Caso seu server seja um cloud locaweb como o meu eu posso te passar as mudanças do meu firewall pra ver se te ajuda.
Boa sorte aí!
Rodrigo