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

Archive version of: massmailer.r ... version: 7 ... crazyaxe 24-Nov-2009

Amendment note: better || Publicly available? Yes

Rebol [title: "Mass mailer"
    version: 0.1.8
    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 }
    ]


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
        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