Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Javascript] meer dan 80 ontvangers via outlook bcc

Pagina: 1
Acties:

  • Abductee
  • Registratie: Oktober 2007
  • Laatst online: 20-11-2024
Hoi,

Ik ben momenteel bezig om een paar bugs uit een website te halen, en een van de problemen die ik heb is het volgende: de administrator van deze website wilt aan verschillende mensen (die uit een lijst geselecteerd kunnen worden, waardoor deze lijst iedere keer anders is) een email kunnen sturen. Momenteel wordt gewoon ieder geselecteerd email adres aan een string toegevoegd, gescheiden door een punt-komma en deze string wordt dan in een nieuw outlook-bericht aan de bcc toegevoegd.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
function addMails() {
    var add = "";
    var theForm = document.forms['resultaten'];
    for(z = 0; z < theForm.length; z++){
        if(theForm[z].type == 'checkbox' && theForm[z].checked == true){
            id = theForm[z].value;
            add += document.getElementById('mailid' + id).value + ";";
        }
    }
    
    document.getElementById('mail').href = "mailto: ?bcc=" + add.substr(0, add.length-1);
    
}

Dit werkt perfect, zolang er maximum 80 ontvangers zijn, dus ik neem aan dat 80 adressen het maximum is in outlook. Nu had ik gedacht van een extra lusje in te bouwen, zodat er per 80 adressen een nieuw bericht werd aangemaakt.
Zo dus:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function addMails() {
    var add = "";
    var maximum=0;
    var count=0;
    var theForm = document.forms['resultaten'];
    for(count=0; count<((theForm.length/80) + 1); count++) {
        if(((count+1)*80)<theForm.length) {
            maximum=(count+1)*80;
        } else {
            maximum=theForm.length;
        }
        for(z = count*80; z<maximum; z++){
            if(theForm[z].type == 'checkbox' && theForm[z].checked == true){
                id = theForm[z].value;
                add += document.getElementById('mailid' + id).value + " ; ";
            }
        }
        document.getElementById('mail').href = "mailto: ?bcc=" + add.substr(0, add.length-3);
        add="";
    }
}

Helaas krijg ik hiermee enkel het laatste bericht te zien, bv als ik 89 mensen een mail wil sturen, dan krijg ik enkel een nieuw bericht met de laatste 9 ontvangers erin.

Weet er iemand wat ik fout doe/over het hoofd zie?

met vriendelijke groeten,

Jurgen

  • torx
  • Registratie: Oktober 2006
  • Laatst online: 13:12
Dat komt omdat je telkens je <a id="mail"> overschrijft, kijk maar naar regel 18 van je code. Je zou dan bijvoorbeeld dynamische links aan moeten maken.

Honda CB750 Hornet :: Yamaha Fazer FZ6 SA (2011 - 2023) | F1Pool.net


  • Abductee
  • Registratie: Oktober 2007
  • Laatst online: 20-11-2024
Enig idee hoe ik daaraan moet beginnen?

  • torx
  • Registratie: Oktober 2006
  • Laatst online: 13:12
Jazeker, via google.

(hint: 2e resultaat)

Honda CB750 Hornet :: Yamaha Fazer FZ6 SA (2011 - 2023) | F1Pool.net


  • Abductee
  • Registratie: Oktober 2007
  • Laatst online: 20-11-2024
Dan kom ik hierop, maar dat werkt ook niet :s
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function addMails() {
    var add = "";
    var maximum=0;
    var count=0;
    var theForm = document.forms['resultaten'];
    for(count=0; count<((theForm.length/80) + 1); count++) {
        if(((count+1)*80)<theForm.length) {
            maximum=(count+1)*80;
        } else {
            maximum=theForm.length;
        }
        for(z = count*80; z<maximum; z++){
            if(theForm[z].type == 'checkbox' && theForm[z].checked == true){
                id = theForm[z].value;
                add += document.getElementById('mailid' + id).value + " ; ";
            }
        }
        var link = document.createElement('a' + count);
        link.setAttribute('href', 'mailto: ?bcc=' + add.substr(0, add.length-3));
        document.getElementById('mail').appendChild(link);
        add="";
    }
}


(sorry voor de misschien domme vragen, maar ik ben niet echt thuis in javascript...)
En alvast bedankt voor de hulp!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 27-11 09:24
Kun je niet een window.open("mailto:..."); doen per 80 adressen?
Of indien er eerst op een link geklikt moet worden, die een onclick geven die bovenstaande doet ipv een href?

  • torx
  • Registratie: Oktober 2006
  • Laatst online: 13:12
Ik zal je verder op weg helpen.
code:
1
var link = document.createElement('a' + count);

In createElement moet alleen de tag-naam staan, oftewel alleen 'a'.
code:
1
document.getElementById('mail').appendChild(link);

Ervan uitgaande dat je element 'mail' een link is, probeer je nu je nieuwe <a> element toe te voegen als child van je mail, oftewel in html:
code:
1
<a id="mail"><a href="mailto:...."></a></a>

Dat is dus niet de bedoeling. Ik zou een <div> aanmaken, die een uniek id geven, en daar je <a> elementen als child toevoegen (misschien ook handig om ook steeds een <br> element als child toe te voegen).

Ik hoop dat je er weer wat aan hebt :)

Honda CB750 Hornet :: Yamaha Fazer FZ6 SA (2011 - 2023) | F1Pool.net


  • Abductee
  • Registratie: Oktober 2007
  • Laatst online: 20-11-2024
Als ik het goed begrijp heb ik dan meerdere links onder elkaar staan in die div, ipv 1 link? In ieder geval, ik zal het straks of morgen eens proberen, momenteel ben ik niet thuis. Ik laat weten of het lukt!

In ieder geval al heel erg bedankt voor het geduld en de moeite ;)

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 12:28
De window.open methode is wellicht nog handiger uit deze post:frickY in "[Javascript] meer dan 80 ontvangers via ..." Dan zit je namelijk meteen met meerdere Outlook venstertjes. Met meerdere linkjes moet je die ook weer allemaal aanklikken enzo. Dat is niet echt handig.

Overigens vraag ik me af of je niet de verkeerde techniek gebruikt voor het verzenden van een mailing. Een standaard PHP scriptje wat je gratis kunt verkrijgen is wat mij betreft een betere oplossing. Daarin zit vaak ook een blokkade zodat je iemand maar 1 mail stuurt enzovoorts.

  • torx
  • Registratie: Oktober 2006
  • Laatst online: 13:12
Abductee schreef op zaterdag 20 oktober 2007 @ 19:15:
Als ik het goed begrijp heb ik dan meerdere links onder elkaar staan in die div, ipv 1 link? In ieder geval, ik zal het straks of morgen eens proberen, momenteel ben ik niet thuis. Ik laat weten of het lukt!

In ieder geval al heel erg bedankt voor het geduld en de moeite ;)
Yup, inderdaad. Ik moet zeggen dat ik de window.open oplossing ook wel een goede vindt. En het hierboven genoemde php-scriptje, alleen moet je dan een server hebben die het ondersteunt (vaak wel het geval) en wellicht ook wat kennis van php. Zelf heb ik vaak problemen dat ze snel in de spam-box komen, maar dat is een ander probleem... ;)

Honda CB750 Hornet :: Yamaha Fazer FZ6 SA (2011 - 2023) | F1Pool.net


  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 12:28
Dan moet je een GOED scriptje gebruiken ;)

  • Abductee
  • Registratie: Oktober 2007
  • Laatst online: 20-11-2024
Vandaag lag de server plat, dus heb ik niet veel meer kunnen proberen.
Morgen of dinsdag ga ik eerst proberen met window.open, en als dat werkt blijft het voorlopig zo en ga ik achter de resterende bugs aan. Heb ik daarna nog tijd over (ik krijg maar 4 weken om de bugs eruit te halen), dan kan ik nog altijd zoeken achter zo'n scriptje. Als iemand een goed voorstel hiervoor zou hebben, dan is dat natuurlijk altijd welkom.

Nogmaals bedankt voor al de moeite!

  • torx
  • Registratie: Oktober 2006
  • Laatst online: 13:12
djluc schreef op zondag 21 oktober 2007 @ 16:50:
Dan moet je een GOED scriptje gebruiken ;)
phpmailer() is voor zover ik weet een goed script. Toch werkt hotmail flink tegen (maar laten we niet teveel offtopic gaan ;))

Honda CB750 Hornet :: Yamaha Fazer FZ6 SA (2011 - 2023) | F1Pool.net


  • Abductee
  • Registratie: Oktober 2007
  • Laatst online: 20-11-2024
Ik was deze vraag hier even uit het oog verloren, maar wou toch nog even vermelden dat het opgelost is ondertussen. De simpelste oplossing bestond er dus uit om ook een titel mee te geven in de window.open (maw, de i variabele).

Ik weet dat het niet zo'n mooie oplossing was, maar door tijdsgebrek is het voorlopig dit geworden. Een mooie oplossing vinden is dan een taak voor de stagairs.

Nogmaals bedankt aan iedereen die hier met me meegedacht heeft!
Pagina: 1