Página 1 de 1

Envío de múltiples correos con Mime::Lite

NotaPublicado: 2012-02-29 08:32 @397
por danimera
Resulta que tengo este trozo de código:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. foreach my $l (@$lista) {
  2.     $i++;
  3.     my $msg = $msg->build(
  4.         From    => '[email protected]',
  5.         To      => '[email protected]',
  6.         Subject => "!! Vende  en 7 Dias",
  7.         Type    => 'text/html',
  8.         Data    => $l->{'email'}
  9.     );
  10.  
  11.     #$msg->send('smtp', "mail.kolonosgroup.com", AuthUser=>"[email protected]", AuthPass=>"2011Asuseepc");
  12.     $msg->send;
  13.     sleep 5;
  14.  
  15. }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

pero resulta que a mi correo solo llegan dos correos... es decir, parece que no me envía todo, y mi @lista es:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $VAR1 = [
  2.           {
  3.             'email' => '[email protected]',
  4.             'nombres' => '',
  5.             'id' => '13'
  6.           },
  7.           {
  8.             'email' => '[email protected]',
  9.             'nombres' => '',
  10.             'id' => '16'
  11.           },
  12.           {
  13.             'email' => '[email protected]',
  14.             'nombres' => '',
  15.             'id' => '21'
  16.           },
  17.           {
  18.             'email' => '[email protected]',
  19.             'nombres' => '',
  20.             'id' => '22'
  21.           },
  22.           {
  23.             'email' => '[email protected]',
  24.             'nombres' => '',
  25.             'id' => '23'
  26.           },
  27.           {
  28.             'email' => '[email protected]',
  29.             'nombres' => '',
  30.             'id' => '24'
  31.           },
  32.           {
  33.             'email' => '[email protected]',
  34.             'nombres' => '',
  35.             'id' => '26'
  36.           },
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
.
.
.
.
Etc.... Etc..

Es bastante grande, de cientos de correos.. ¡¡ Qué será que puede pasar ??

Re: Envío de múltiples correos con Mime::Lite

NotaPublicado: 2012-02-29 08:53 @411
por explorer
Según la documentación, 'Data' indica el nombre de un archivo que contendrá el cuerpo del mensaje a enviar.

Pero tu lo que estás poniendo ahí es la dirección de correo del destinatario...

Mejor si pones esa dirección en el campo To.

Otra cosa... te recomiendo que edites tu mensaje y falsifiques las direcciones de correo que has puesto, si no quieres que los dueños de esas direcciones de correo reciban montañas de correo basura.

Re: Envío de múltiples correos con Mime::Lite

NotaPublicado: 2012-02-29 09:07 @421
por danimera
La verdad, quiero probar que me llegue el correo de esa persona a mi correo, es todo.
Por eso en Data solo pongo el correo y deberían llegarme 100, pero la verdad, solo llegan 2.

Re: Envío de múltiples correos con Mime::Lite

NotaPublicado: 2012-02-29 09:45 @448
por explorer
No estás "poniendo el correo" en Data.

Estás "poniendo la dirección de correo" en Data. Y Data no sirve para eso.

En Data tienes que poner el nombre de un archivo que contiene el cuerpo del mensaje. Pero no es la única manera de indicarle a MIME::Lite ese cuerpo.

Si quieres que el bucle envíe un correo a cada destinatario, solo puedes poner las direcciones en los campos To, Cc, y Bcc.

Y eso si quieres enviarles uno a uno, como está puesto en el bucle. Se pueden enviar a más destinatarios, por cada envío, pero eso es ya otra historia.

Re: Envío de múltiples correos con Mime::Lite

NotaPublicado: 2012-02-29 09:48 @450
por danimera
Yo no quiero que el correo le envie un email a cada destinatario...

Quiero que me envíe a mi un correo, para cada email y con el email de cada persona de la lista.

Pero solo me envía dos correos...

Re: Envío de múltiples correos con Mime::Lite

NotaPublicado: 2012-02-29 18:06 @796
por explorer
¡¡¡AAAhhh!!!

Entendido...

El error está en la línea 3, que debes escribirla así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     my $msg = MIME::Lite->build(
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Re: Envío de múltiples correos con Mime::Lite

NotaPublicado: 2012-02-29 20:20 @888
por danimera
Gracias, gracias, pero qué raro...

Así debía funcionarme porque en mi clase base de CGI-App yo hice:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. sub sendEmail{
  2.     my $self = shift;
  3.     return new MIME::Lite;
  4.  
  5. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


y en mi controlador lo llamé:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $msg = $self->sendEmail;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


:?

Re: Envío de múltiples correos con Mime::Lite

NotaPublicado: 2012-02-29 20:43 @904
por explorer
Sí que es raro, pero el problema principal es que estás usando el mismo nombre de variable escalar para dos cosas distintas: una cosa es el objeto MIME::Lite, y otra cosa es el objeto correo creado a partir de la llamada al método build().

Es mejor que cada cosa tenga su propio nombre.

Por ejemplo, para el objeto MIME::Lite, llámalo $mimelite, mientras que para crear el correo, puedes llamarlo $msg. Así sabes en cada momento a qué te refieres, porque sino, en la línea 12 del primer código, ¿a qué $msg haces referencia? ¿al que acabas de crear o al del objeto MIME::Lite?

Re: Envío de múltiples correos con Mime::Lite

NotaPublicado: 2012-03-02 11:23 @516
por danimera
Pero si se supone que declaro la variable local com my() dentro de bucle no debería tener problemas, ¿o sí?

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $msg = $self->sendmail;
  2.  
  3. foreach $x(@x){
  4.     my $msg = $msg->build();
  5.  
  6.  
  7. }
  8.  
  9.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Re: Envío de múltiples correos con Mime::Lite

NotaPublicado: 2012-03-02 12:18 @554
por explorer
(Has escrito dos '-')

Pues... no sé decirte... yo sospecho que en la segunda vuelta, el valor de $msg será el del valor de la $msg local de la primera vuelta... y quizás por eso falle en la segunda vuelta.

Ya digo que no sé... habría que ejecutarlo paso a paso con el depurador.