Stack Overflow em Português Asked by WLS on November 25, 2021
Segui vários tutorias que procurei, mas não consegui funcionar, não sei o que estou deixando passar, estou começando agora a mexer com o Codeigniter e peguei a versão 4.
Estou querendo quando preencher o formulário enviar para email quando submit.
Mas quando envio sempre aparece o erro
500 (Internal Server Error)
Que é de como estou chamando a class email do meu controller do formulário.
Já olhei nesses dois sites
https://codeigniter.com/user_guide/libraries/email.html#sending-email
https://www.tutsmake.com/send-email-in-codeigniter-4-with-smtp/
Pelo que entendi tem que editar o Config/Email.php, mas no controller quando chamada usa
$email = ConfigServices::email();
Não sei se tem que configurar alguma coisa no Config/Services ou outro arquivo para mexer.
Esse é o arquivo Config/Email.php
<?php
namespace Config;
use CodeIgniterConfigBaseConfig;
class Email extends BaseConfig
{
/**
* @var string
*/
public $fromEmail;
/**
* @var string
*/
public $fromName;
/**
* @var string
*/
public $recipients;
/**
* The "user agent"
*
* @var string
*/
public $userAgent = 'CodeIgniter';
/**
* The mail sending protocol: mail, sendmail, smtp
*
* @var string
*/
public $protocol = 'mail';
/**
* The server path to Sendmail.
*
* @var string
*/
public $mailPath = '/usr/sbin/sendmail';
/**
* SMTP Server Address
*
* @var string
*/
public $SMTPHost = 'smtplw.com.br';
/**
* SMTP Username
*
* @var string
*/
public $SMTPUser = 'RRRRRRRRRRRR';
/**
* SMTP Password
*
* @var string
*/
public $SMTPPass = '################';
/**
* SMTP Port
*
* @var integer
*/
public $SMTPPort = 587;
/**
* SMTP Timeout (in seconds)
*
* @var integer
*/
public $SMTPTimeout = 15;
/**
* Enable persistent SMTP connections
*
* @var boolean
*/
public $SMTPKeepAlive = false;
/**
* SMTP Encryption. Either tls or ssl
*
* @var string
*/
public $SMTPCrypto = 'tls';
/**
* Enable word-wrap
*
* @var boolean
*/
public $wordWrap = true;
/**
* Character count to wrap at
*
* @var integer
*/
public $wrapChars = 76;
/**
* Type of mail, either 'text' or 'html'
*
* @var string
*/
public $mailType = 'html';
/**
* Character set (utf-8, iso-8859-1, etc.)
*
* @var string
*/
public $charset = 'UTF-8';
/**
* Whether to validate the email address
*
* @var boolean
*/
public $validate = false;
/**
* Email Priority. 1 = highest. 5 = lowest. 3 = normal
*
* @var integer
*/
public $priority = 3;
/**
* Newline character. (Use “rn†to comply with RFC 822)
*
* @var string
*/
public $CRLF = "rn";
/**
* Newline character. (Use “rn†to comply with RFC 822)
*
* @var string
*/
public $newline = "rn";
/**
* Enable BCC Batch Mode.
*
* @var boolean
*/
public $BCCBatchMode = false;
/**
* Number of emails in each BCC batch
*
* @var integer
*/
public $BCCBatchSize = 200;
/**
* Enable notify message from server
*
* @var boolean
*/
public $DSN = false;
}
E no meu controller da página que está o formulário estou chamando assim
<?php namespace AppControllers;
use CodeIgniterController;
class Contato extends BaseController
{
public function index()
{
if (!empty($_POST)) {
$this->load->library('PHPMailer_Lib');
$config['protocol'] = 'sendmail';
$config['mailPath'] = '/usr/sbin/sendmail';
$config['charset'] = 'iso-8859-1';
$config['wordWrap'] = true;
$email->initialize($config);
}
$date['isMap'] = true;
$this->templateNoHome('contato', $date);
}
//--------------------------------------------------------------------
}
E no ControllerBase estou chamando o helper email
protected $helpers = ['url', 'form', 'email'];
Não sei se está faltando mais algum arquivo para chamar, quem poder ajudar, agradeço bastante.
Consegui fazer funcionar, e pela as coisas que fiz o que e ficou faltando e chamar a classe do email
use CodeIgniterEmailEmail;
Com isso funcionou, segue um método que recebe os dados de um form e envia por email
<?php namespace AppControllers;
use CodeIgniterController;
use CodeIgniterEmailEmail;
use CodeIgniterHTTPRequestInterface;
class Sucesso extends Controller
{
public function index()
{
$request = ConfigServices::request();
if($request->getPost()){
$nome = $request->getVar('nome');
$telefone = $request->getVar('telefone');
$emailform = $request->getVar('email');
$mensagem = $request->getVar('mensagem');
$email = ConfigServices::email();
$config['mailType'] = 'html';
$email->initialize($config);
$email->setFrom('[email protected]');
$email->setTo('[email protected]');
$email->setSubject('Formulário de contato');
$email->setMessage("<!DOCTYPE html>
<html lang='en' dir='ltr'>
<head>
<meta charset='utf-8'>
<title></title>
</head>
<body>
<strong>" . $nome . "</strong><br/>" .
"<strong>Telefone:</strong> " . $telefone . "<br/>" .
"<strong>E-mail:</strong> " . $emailform . "<br/>" .
"<strong>Mensagem:</strong> <br/>" . $mensagem .
"</body>
</html>");
$email->setAltMessage("Nome: ".$nome."nTelefone: ".$telefone."nE-mail: ".$emailform."nMensagem: ".$mensagem);
$email->send();
//$email->printDebugger();
}
echo view('template/header', $data);
echo view('sucesso', $data);
echo view('template/footer', $data);
echo view('template/scripts', $data);
}
}
?>
Answered by WLS on November 25, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP