Script Library: 1238 scripts
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

Archive version of: massmailer.r ... version: 8 ... crazyaxe 11-Jan-2010

Amendment note: added check emails || Publicly available? Yes

Rebol [title: "Mass mailer"

    version: 0.1.10

    author: "Massimiliano Vessi"

    date:  29/9/2009

    email: maxint@tiscali.it

     file: %massmailer.r

    Purpose: {"Mass emailng the world! Modify boundary if you use attachments."}

    ;following data are for www.rebol.org library

    ;you can find a lot of rebol script there

    library: [ 

        level: 'beginner 

        platform: 'all 

        type: [tutorial tool] 

        domain: [vid gui email ] 

        tested-under: [windows linux] 

        support: none 

        license: [gpl] 

        see-also: none 

        ] 



    ]

header-script: system/script/header



version: "Version: "

append version header-script/version







config: array 13



; the file %mass_mailer_conf.txt contains all configurations

; from 1-8 fields are settings

; 9 oggetto, and on are last usage configuration





either exists? %mass_mailer_conf.txt [

    config:  read/lines %mass_mailer_conf.txt 

    ] [

    alert "You must set access data. Please fill in data in Settings panel."

    ritardo: 2

    ]



configurazione_lay: layout [

    across

    title "Settings"

    return

    text "Your email:"

    email_fl: field  

    return

    text "SMTP server:"

    smtp_fl: field  

    return

    text "SMTP user:"

    smtpuser_fl: field

    return

    text "SMTP password:"

    smtppass_fl: field 

    return

    button "Save" [

        poke config 1  to-email email_fl/text    

        poke config 2  to-url smtp_fl/text

        poke config 7 to-string smtpuser_fl/text

        poke config 8  to-string smtppass_fl/text

        write %mass_mailer_conf.txt " "

        foreach item config [

            write/append %mass_mailer_conf.txt item

            write/append %mass_mailer_conf.txt newline

            ]

        unview]

    button "Exit" [unview]  

    ]



aiuto_lay: layout [

    title "HELP"

    text 180 {This is a mass email, it permits to send any number of emails without problems. It will send an email each 2 seconds. 

    If you'll fill correctly settings panel, all will be alright. File loaded by Mass mailer must be in ASCII not in unicode. 

If you use attachments, use a correct boundary string.

    This program do his best with HTML email body. If you have problems, please contact me: maxint@tiscali.it }

    ]





controllo_emails: func [ lista] [

	lista_nera: copy []

	avvertire: false

	foreach indirizzo lista [

		temp2: length? parse indirizzo "@."

		if temp2 < 3 [	

			avvertire: true

			append lista_nera  indirizzo

			]

		]

	if avvertire = true [ alert reform ["The following addresses are NOT correct:" lista_nera ]]	

		

	]





view layout [

    across

    title "Mass mailing"

    return

    btn-help [ view/new aiuto_lay]

    text  version

    return

    button "Settings" [

        

        email_fl/text: to-string config/1

        smtp_fl/text:  to-string config/2

        smtpuser_fl/text: to-string config/7    

         smtppass_fl/text: to-string config/8

        show [email_fl  smtp_fl smtpuser_fl smtppass_fl ]

        view/new configurazione_lay

        ]

    button "Reload last" [

	oggetto/text: to-string config/9

	a_lay/text: to-string config/10

	b_lay/text: to-string config/11

	c_lay/text: to-string config/12

	ritardo/text: to-integer config/13

	testo: read/string  to-file config/10

	db_mail2: read/lines to-file  config/11

	led1/data: true

	led2/data: true

	led3/data: true

	led4/data: true

	show [ oggetto a_lay b_lay c_lay led1 led2 led3 led4 ritardo]

	]

    return

    led1: led

    text "Subject:"

    oggetto: field "subject" [led1/data: true

        show led1]

    return

    led2: led

    button "Body message" [ 

        corpo_ind: request-file 

        a_lay/text: to-string corpo_ind

        show a_lay

        testo: read/string to-file corpo_ind

        led2/data: true

        show led2

        ]

    a_lay: field "no text file loaded, html files are the best!"

    return

    led3: led

    button "Email list" [

        temp:  to-file request-file

        db_mail: read temp

        db_mail:  parse db_mail none

        sort db_mail 

        

        db_mail2: copy unique db_mail

        write/lines  temp db_mail2 ;scrive il file su hdd

	controllo_emails db_mail2

	b_lay/text: to-string temp

        show b_lay

        led3/data: true

        show led3

        ]

    b_lay: field "no email list file loaded"

    return

    led4: led 

    h3 "Boundary string (optional)" 

    c_lay: field "es. boundary" [led4/data: true 

                                    show led4

                                    ]

    return

    text "Retard:"

    button 22x22 "+" [temp: to-integer ritardo/text

	temp: temp + 1

	ritardo/text: to-string temp

	show ritardo]

    ritardo: field  40 "2"

    button 22x22 "-" [temp: to-integer ritardo/text

	temp: temp - 1

	if temp < 1 [temp: 1]

	ritardo/text: to-string temp

	show ritardo]

	

	

    return

    button red "MASS MAILING!" [

        il_content: rejoin [ "multipart/related; boundary=^"" c_lay/text "^"" ]

        set-net  config

        il_header: make object! [   

            Content-Type: "text/html; charset=ISO-8859-15"

            X-REBOL: "View 2.7.6.3.1 http://WWW.REBOL.COM"

            Subject:  to-string oggetto/text

            From:   to-email config/1

            Return-Path: to-email config/1

            To: to-email config/1

            Date: reform [now/date now/time]

            MIME-Version:  "1.0"

            Content-Type: il_content

            ]

        counter: 0

        b: length? db_mail2

        a: confirm reform ["You are going to send" b "emails. I already deleted double entries. Do you want to proced?"]

        if a = true [

	;saving configurations

	poke  config 9  to-string oggetto/text

	poke  config 10 to-file a_lay/text ;body message

	poke  config 11 to-file b_lay/text ; emails list

	poke  config 12 to-string c_lay/text ; boundary string

	write %mass_mailer_conf.txt " "

          foreach item config [

		write/append %mass_mailer_conf.txt item

		write/append %mass_mailer_conf.txt newline

		]

	;sending emails

            foreach record db_mail2 [ 

                il_header/To:  record

                counter: counter + 1

                sped_lay/text: reform ["Sending email n." counter]

                show sped_lay

                send/header     ( to-email record )    testo   il_header

                wait to-integer ritardo/text



                ]   

            alert reform ["Finished! You sent" counter "emails."]

            sped_lay/text: reform [ "Finished! You sent" counter "emails." ]

            show sped_lay           

            ]

        ]

        

    return

    sped_lay: text red "____________________________"

    

    ]
Notes