Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 3 odgovora
  • 4.448 pregleda

Najnovija ↓

Problem sa Net::SMTP, i while petljom 22.02.2004. u 17:10 · pre 276 meseci #1
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.
Re: Problem sa Net::SMTP, i while petljom 25.02.2004. u 01:15 · pre 276 meseci #2
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 ....
Re: Problem sa Net::SMTP, i while petljom 29.03.2004. u 02:46 · pre 275 meseci #3
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
Potpis
mire@zwer:~$ traceroute zivot.sloboda.potraga-za-srecom
Re: Problem sa Net::SMTP, i while petljom 29.03.2004. u 12:27 · pre 275 meseci #4
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.
Potpis
BobMarley (me) ...the legend
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme