Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Problem sa Net::SMTP, i while petljom

[es] :: Perl :: Problem sa Net::SMTP, i while petljom

[ Pregleda: 3515 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

ventura

Član broj: 32
Poruke: 7781
*.vdial.verat.net



+6455 Profil

icon Problem sa Net::SMTP, i while petljom22.02.2004. u 16:10 - pre 245 meseci
Napravo sam kod koji ce putem Net:SMTP-a da posalje HTML poruku na sve adrese iz subscribers file-a (sub.txt)

Code:

#!/usr/bin/perl --

print "Content-type: text/html\n\n";


use DBI;
#use DBD::Pg;
#use Mail::Mailer;
use Net::SMTP;
#use Socket;
require "cgi-lib.pl";

######### UCITAJ FAJLOVE ###############
######### UCITAJ FAJLOVE ###############
######### UCITAJ FAJLOVE ###############
######### UCITAJ FAJLOVE ###############

    open HTMLFILE,
             "link.html";
    read HTMLFILE, $html,16384;
    close HTMLFILE;
    
    
#    open ALTFILE,
#"subscribers.txt";
#    read ALTFILE, $alt,16384;
#    close ALTFILE;


######### UCITAJ FAJLOVE ###############
######### UCITAJ FAJLOVE ###############
######### UCITAJ FAJLOVE ###############
######### UCITAJ FAJLOVE ###############


open(FILE,"sub.txt");
while(<FILE>)



    
    $smtp = Net::SMTP->new('mail.daniflowers.com');
    $smtp = Net::SMTP->new('mail.daniflowers.com',
           Hello => 'mail.daniflowers.com',
           Timeout => 30,
         Debug   => 1,
          );

    $subject = "DaniFlowers - Isporuka cveca";
    $from = "office\@daniflowers.com";



$address = $_;

    $smtp->mail($from);
    $smtp->to($address);

    $smtp->data();

    ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) =
localtime(time);

    @days = ("Sun","Mon","Tue","Wed","Thu","Fri","Sat");
    @months =
("Jan","Feb","Mar","Apr","Jun","Jul","Aug","Sep","Oct","Nov","Dec");

    $year += 1900;
    $day = $days[$wday];
    $month = $months[$mon];
    $dateString = sprintf("$day, $mday $month $year
%0.2d:%0.2d:%0.2d -0600",$hour,$min,$sec);

    $msg = "";
    $msg = $msg . "To: $address\n";
       $msg = $msg . "From: $from\n";
       $msg = $msg . "Reply-To: $from <$from>\n";
       $msg = $msg . "Subject: $subject\n";
    $msg = $msg . "Date: $dateString \n";

    $uid =  time;
    $partID = "----=_NextPart_" . $uid;

    $msg = $msg . "MIME-Version: 1.0\n";
    $msg = $msg . "Content-Type: multipart/alternative;\n";
    $msg = $msg . "        boundary=\"$partID\"\n";
    $msg = $msg . "\n";
    $msg = $msg . "This is a multi-part message in MIME
format.\n\n";
    $msg = $msg . "\n";

    $msg = $msg . "--" . $partID;
    $msg = $msg . "\n";
    $msg = $msg . "Content-Type: text/plain;\n\n";
    $msg = $msg . $alt;
    $msg = $msg . $textCancelMSG;
    $msg = $msg . "\n\n";
                    
    $msg = $msg . "--" . $partID;
    $msg = $msg . "\n";
    $msg = $msg . "Content-Type: text/html;\n\n";

       $msg = $msg . $html;                
    $msg = $msg . "\n\n";

    $msg =~ s/\x0d//g;
    $msg =~ s/\x0a/\x0d\x0a/g;

    $smtp->datasend($msg);
    $smtp->dataend();

    
    $smtp->quit;
}

######### KRAJ KODA #############



SUBSCRIBERS file izleda ovako



Kada skriptu pokrenem, desava se sledece:

Mail se posalje svima sa lise, ali samo [email protected] (zadnji entry u sub.txt fajlu) dobije HTML mail, ostali dobiju poruku u plain text formatu koja sadrzi komletan $msg string, kako da napravim da svi korisnici dobiju HTML poruku a ne plaintext... probavao sam da resetujem sve parametre na kraju, da stavljam while petlju unutar konekcjie na SMTP server, da ucitavam iz array-a umesto iz fajla... I uvek je rezultat isti.. samo zadnji korisnik bilo u fajlu, bilo u array-u dobije HTML mail, a svi ostali nerazumljivi plaintext.
 
Odgovor na temu

Free_Sex
Aleksandar
Beograd

Član broj: 9601
Poruke: 616
*.vdial.verat.net



Profil

icon Re: Problem sa Net::SMTP, i while petljom25.02.2004. u 00:15 - pre 245 meseci
Ventura da napomenem da nisam slao html mail .... ali evo sta bih probao :

- $smtp (strukturu ?!?) definisi pre petlje ... ne znam da li ga poziv na quit metodu "ubije" skroz, ali ne bih rekao. Ili to, ili probaj da ga obrises skroz pre loop-a. Dakle nesto tipa free $smtp ili slicno.

- ili probaj sa onim mime easy modulom. Ne znam tacan naziv, ali koliko sam skapirao on se bas i koristi za sklapanje poruka sa atacmentima ....
 
Odgovor na temu

mire
Miroslav Madzarevic
Belgrade

Član broj: 252
Poruke: 145
*.dial.InfoSky.Net



Profil

icon Re: Problem sa Net::SMTP, i while petljom29.03.2004. u 01:46 - pre 244 meseci
na prvi pogled kod ti je prilicno lose napisan

npr. $msg = $msg . 'nesto' moze da se napise kao $msg .= 'nesto';

sto se tice poruke, ti saljes multipart alternative tj. imas i text i html mail u njemu a sam mail reader na osnovu svojih sposobnosti bira sta prikazuje korisniku. ti sa tim nemas nista.

najverovatnije nisi dobro formirao mail

svaki recipient treba da dobije isti mail (osim naravno hedera)

ako to nije slucaj pogledaj uputstvo za smtp modul kao i izgled iste poruke koju tvoj program kreira i one koju bi kreirao neki mail klijent npr. mozilla mail ili outlook
mire@zwer:~$ traceroute zivot.sloboda.potraga-za-srecom
 
Odgovor na temu

BobMarley
Vedran B
Bologna

Član broj: 148
Poruke: 1161
*.net.htnet.hr

ICQ: 61882680


+1 Profil

icon Re: Problem sa Net::SMTP, i while petljom29.03.2004. u 11:27 - pre 244 meseci
dodaj ih u Carbon Copy umjesto slanja jedan po jedan.
ili Definiraj za sve mail adrese headere u neki array pa se probaj spojiti na SMTP
i onda sa foreach petljom poslati mail i tek poslje petlje se disconnectati sa SMTP-a.

Isto tako i ovdje connect i disconnect sa SMTP-a radi van petlje.
BobMarley (me) ...the legend
 
Odgovor na temu

[es] :: Perl :: Problem sa Net::SMTP, i while petljom

[ Pregleda: 3515 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.