Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

Olá cidadãos do TibiaKing!

Como tenho visto muitas pessoas tendo problemas com o sistema de envio de e-mail do Lost Account através do PHP Mailer, resolvi postar pra vocês uma pequena alteração que fiz no código para utilizar o MailGun no disparo dos e-mails no lugar de um SMTP convencional. 

Alguns avisos:

  • O MailGun é uma plataforma estrangeira, que estou indicando por ter uma API de fácil entendimento. Não sou responsável pela plataforma ou suporte da mesma.
  • O plano grátis do MailGun suporta 10.000 envios por mês.
  • Caso você não tenha um domínio para utilizar (no-ip não é considerado como domínio), terá que fazer os envios através do sandbox deles, que permite 300 envios por hora, limitados a 10.000 por mês.

Para começar o tutorial, se cadastre na plataforma do MailGun aqui: https://mailgun.com/signup (depois que cadastrar, confirme sua conta através do link enviado por e-mail)

Em seguida, adicione seu domínio aqui: https://mailgun.com/app/domains/new
Para confirmar seu domínio, será necessário criar algumas entradas de DNS que estarão explicadas na página do MailGun.

Assim que o domínio for adicionado, clique no mesmo. (Caso não tenha domínio, clique no domínio sandbox).

Precisaremos dos seguintes dados para continuar: 
  • API Key
  • API Base URL
  • Default SMTP Login

Depois que obtiver os dados acima, abra o arquivo lostaccount.php e procure pela seguinte parte de código:
                        $mail = new PHPMailer();
						if ($config['site']['smtp_enabled'])
						{
							$mail->IsSMTP();
							$mail->Host = $config['site']['smtp_host'];
							$mail->Port = $config['site']['smtp_port'];
							$mail->SMTPAuth = $config['site']['smtp_auth'];
							$mail->Username = $config['site']['smtp_user'];
							$mail->Password = $config['site']['smtp_pass'];
						}
						$mail->IsMail();
						$mail->IsHTML(true);
						$mail->From = $config['site']['mail_address'];
						$mail->AddAddress($account->getCustomField('email'));
						$mail->Subject = $config['server']['serverName']." - Link to >set new password to account<";
						$mail->Body = $mailBody;
						$enviado = $mail->Send();
						if($enviado)
						{
							$account->set('email_code', $newcode);
							$account->set('next_email', (time() + $config['site']['email_lai_sec_interval']));
							$account->save();
							$main_content .= '<br />Link with informations needed to set new password has been sent to account e-mail address. You should receive this e-mail in 15 minutes. Please check your inbox/spam directory.';
						}
						else
						{
							$account->set('next_email', (time() + 60));
							$account->save();
							$main_content .= '<br />An error occorred while sending email! Try again or contact with admin. ('.$mail->ErrorInfo.')';
						}
Remova todo esse código e substitua por:
                        $to = ''.$account->getCustomField('email').'';
                        $subject = ''.$config['server']['serverName'].' - Set >new password to account<';
                        $ch = curl_init();
						curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
						curl_setopt($ch, CURLOPT_USERPWD, 'api:SUA API KEY');
						curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
						curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
						curl_setopt($ch, CURLOPT_URL, 
									  'https://api.mailgun.net/v2/SEUDOMINIO/messages');
						curl_setopt($ch, CURLOPT_POSTFIELDS, 
										array('from' => 'SEU OT <email@seuemail.com>',
											  'to' => $to,
											  'subject' => $subject,
											  'html' => $mailBody,
											  'text' => $mailBody));
						$result = curl_exec($ch);
						$info = curl_getinfo($ch);
						curl_close($ch);

						if($info['http_code'] == 200){ 
							$account->set('email_code', $newcode);
							$account->set('next_email', (time() + $config['site']['email_lai_sec_interval']));
							$account->save();
							$main_content .= '<br />Link with informations needed to set new password has been sent to account e-mail address. You should receive this e-mail in 15 minutes. Please check your inbox/spam directory.';							
						}
E em seguida altere as seguintes linhas para configurar de acordo com sua conta:
curl_setopt($ch, CURLOPT_USERPWD, 'api:key-xxxxxxx'); //Substitua key-xxxxxxx pela sua API Key
'https://api.mailgun.net/v2/SEUDOMINIO/messages'); //Altere SEUDOMINIO com o domínio que se encontra no final da API Base URL
array('from' => 'SEU OT <email@seuemail.com>', //Substitua pelo nome e e-mail do jogo (caso tenha domínio). Caso não tenha domínio, utilize o e-mail que está em Default SMTP Login

E pronto, seu Lost Account já estará funcionando normalmente!


Observações:
  • O código final tem algumas modificações para facilitar na configuração e na utilização, mas como a versão final foi desenvolvida para venda, resolvi postar uma versão simplificada que resolve o problema.
  • É necessário ter o PHP cURL funcionando para usar esse método.
  • O código foi feito em cima do Gesior 2012: https://github.com/gesior/Gesior2012
Façam bom proveito :)

(Esse tutorial foi completamente escrito por mim, incluindo o código. Qualquer cópia deve ser previamente autorizada e conter os devidos créditos.)
  • Respostas 9
  • Visualizações 2.3k
  • Created
  • Última resposta

Top Posters In This Topic

Postado
51mutNo.png Seu tópico foi aprovado e movido para a seção correta!
 Muito obrigado pela sua contribuição, nós do Tibia King agradecemos.
 Seu conteúdo com certeza ajudará à muitos outros, você recebeu +1 REP.
  • 2 weeks later...
  • 2 weeks later...
Postado
  • Autor
  Em 10/11/2015 em 23:41, fironfox disse:

Configurei tudo corretamente como indicado no tutorial e quando tento acessar minha página fica indisponível

 

Confere seu código, algum erro passou batido.

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo