RF
Envio em lote de emails
Tenho um formulário para envio de "peças" de marqketing, eu consigo enviar individualmente, porém quero enviar para todos os clientes essa peça. Eu não estou sabendo como mandar para a função onEnvio o email
public function onLote ($param)
{
try
{
TTransaction::open('sample');
$criteria = new TCriteria;
$criteria->setProperty('limit' ,2);
$criteria->setProperty('offset',0);
$criteria->setProperty('order','id');
$repository = new TRepository('Cliente');
$clientes = $repository->load($criteria);
foreach ($clientes as $cliente)
{
$cliente->email; // Como passo para a outra função o valor dentro de $cliente?
self::onEnvio();
}
TTransaction::close();
}
catch (Exception $e)
{
new TMessage('error',$e->getMessage());
}
}
public function onEnvio()
{
//$nomeemail = 'teste';
try
{
// get the form data
$data = $this->form->getData();
// validate data
$this->form->validate();
// open a transaction with database
TTransaction::open('permission');
$preferences = SystemPreference::getAllPreferences();
$mail = new TMail;
$mail->setFrom( trim($preferences['mail_from']) , TSession::getValue('username'));
$mail->addAddress ($data->email); //( trim($preferences['mail_support']) );
$mail->setSubject( $data->empreendimento );
if ($preferences['smtp_auth'])
{
$mail->SetUseSmtp();
$mail->SetSmtpHost($preferences['smtp_host'], $preferences['smtp_port']);
$mail->SetSmtpUser($preferences['smtp_user'], $preferences['smtp_pass']);
}
$mail->setHtmlBody ($data->emailmarketing);
// $mail->setTextBody($data->emailmarketing);
$mail->send();
// close the transaction
TTransaction::close();
// Mensagem de sucesso COMENTE ELA PARA O ENVIO EM LOTE
new TMessage('info', _t('Message sent successfully'));
}
catch (Exception $e) // in case of exception
{
// get the form data
$object = $this->form->getData();
// fill the form with the active record data
$this->form->setData($object);
// shows the exception error message
new TMessage('error', $e->getMessage());
// undo all pending operations
TTransaction::rollback();
}
}
public function onLote ($param)
{
try
{
TTransaction::open('sample');
$criteria = new TCriteria;
$criteria->setProperty('limit' ,2);
$criteria->setProperty('offset',0);
$criteria->setProperty('order','id');
$repository = new TRepository('Cliente');
$clientes = $repository->load($criteria);
foreach ($clientes as $cliente)
{
$cliente->email; // Como passo para a outra função o valor dentro de $cliente?
self::onEnvio();
}
TTransaction::close();
}
catch (Exception $e)
{
new TMessage('error',$e->getMessage());
}
}
public function onEnvio()
{
//$nomeemail = 'teste';
try
{
// get the form data
$data = $this->form->getData();
// validate data
$this->form->validate();
// open a transaction with database
TTransaction::open('permission');
$preferences = SystemPreference::getAllPreferences();
$mail = new TMail;
$mail->setFrom( trim($preferences['mail_from']) , TSession::getValue('username'));
$mail->addAddress ($data->email); //( trim($preferences['mail_support']) );
$mail->setSubject( $data->empreendimento );
if ($preferences['smtp_auth'])
{
$mail->SetUseSmtp();
$mail->SetSmtpHost($preferences['smtp_host'], $preferences['smtp_port']);
$mail->SetSmtpUser($preferences['smtp_user'], $preferences['smtp_pass']);
}
$mail->setHtmlBody ($data->emailmarketing);
// $mail->setTextBody($data->emailmarketing);
$mail->send();
// close the transaction
TTransaction::close();
// Mensagem de sucesso COMENTE ELA PARA O ENVIO EM LOTE
new TMessage('info', _t('Message sent successfully'));
}
catch (Exception $e) // in case of exception
{
// get the form data
$object = $this->form->getData();
// fill the form with the active record data
$this->form->setData($object);
// shows the exception error message
new TMessage('error', $e->getMessage());
// undo all pending operations
TTransaction::rollback();
}
}
Se entendi direito você quer utilizar a função onEnvio tanto para envio individual quanto em lote, certo? Nesse caso, primeiro eu modificaria a função onEnvio para receber o email, assunto e texto por parâmetro e executar o envio do email somente. Outras tarefas, como buscar os dados formulário, ficariam a cargo de outras funções:
Entendi, ok, obrigado tudo em ordem agora.