Discussione chiusa
Pagina 2 di 3 primaprima 123 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 22

Caricare un indirizzo email in una finestra di outlook

  1. #11
    Joe_01 non è in linea Scolaretto
    Post
    108
    Like Inviati  
    0
    Like Ricevuti  
    0
    Quote Originariamente inviato da gibra Visualizza il messaggio
    Direi che mi pare logico così, visto il tuo codice.

    Ora, io non conosco il contenuto del tuo DataReader, ma suppongo che il campo che leggi contenga l'indirizzo e-mail, se è così allora la condizione:

    If (String.IsNullOrEmpty(oMail.To)) Then


    non sarà mai vera (ed è corretto che sia così), per cui eseguirà sempre l'istruzione

    oMail.To = oMail.To & (String.Format("{0}", reader(0))) & ";"

    Quindi l'errore sta nella logica del tuo codice.
    Siccome noi non conosciamo i criteri per cui devi mettere gli indirizzi in BCC, non possiamo aiutarti.


    Non ho afferrato completamente il senso della tua domanda, ma se volevi sapere che uso devo farne te lo spiego subitto.
    Fermo restando che non vorrei mettere l'indirizzo in (Bcc) ma semplicemente in (To), ma questo lo posso risolvere io, lo scopo di questo programma è creare un messaggio con outlook che vado a prendere da un modello e, nel mio form ci sono due pulsanti rispettivamente (Email singola) e (Emal multipla) ovviamente il testo del pulsante da immediatamente il senso dell'utilizzo.
    Comunque per quanto riguarda l'email multipla, come dicevo vorrei usare un messaggio da un modello che ho creato e inviare ad una cinquantina di indirizzi circa, una volta il rinnovo del contratto piuttosto che dellle offerte di prodotti e cosi via, volevo creare una funzione che mi leggesse una serie di email in una tabella (e giustamente come hai osservato la SELECT estrae degli indirizzi da una tabella) ed inviarli sequenzialmente dopo aver preparato il modello.
    Spero di averti spiegato lo scopo se hai bisogno di chiarimenti chiedi.
    ................ e grazie ancora

  2. #12
    L'avatar di gibra
    gibra ora è in linea Very Important Person
    Post
    6,205
    Like Inviati  
    18
    Like Ricevuti  
    10
    Quote Originariamente inviato da Joe_01 Visualizza il messaggio
    Non ho afferrato completamente il senso della tua domanda]
    Non avevo fatto alcuna domanda, ma solo una constatazione.

    Quote Originariamente inviato da Joe_01 Visualizza il messaggio
    Fermo restando che non vorrei mettere l'indirizzo in (Bcc) ma semplicemente in (To)
    Adesso ho letto il tuo penultimo post ed ho visto che hai tolto la riga del BCC.
    Comunque il concetto non cambia.

    Infatti, rispondendo a quanto scrivi nel tuo penultimo post:
    Quote Originariamente inviato da Joe_01 Visualizza il messaggio
    se lascio solo la riga di codice come nel tuo post (6) va subito all'ultimo record
    ed è logico che sia così, perchè la condizione:

    If (String.IsNullOrEmpty(oMail.To)) Then

    è vera solo la prima volta, in seguito oMail.To non sarà più vuota perchè conterrà ancora l'indirizzo precedente.
    Quindi, o lo azzeri dopo l'invio, oppure crei un nuovo oggetto oMail ad ogni ciclo.

    Ma quello che non capisco è: a che serve testare il valore di oMail.To?
    Secondo me è un controllo inutile, anzi in questo caso è proprio quello che ri crea il problema.

    Quindi per me se togli la IF dovrebbe funzionare.
    Eventualemente fail debug passo-passo (F11) e verifica ad ogni riga i valori delle varie proprietà o variabili.

    ℹ️ Leggi di più su gibra ...

  3. #13
    L'avatar di gibra
    gibra ora è in linea Very Important Person
    Post
    6,205
    Like Inviati  
    18
    Like Ricevuti  
    10
    I miei sospetti erano fondati.

    Ad ogni ciclo devi creare un nuovo oggetto oMail, altrimenti ne usa uno solo, e ad ogni ciclo sostituisce l'indirizzo in oMail.To, così alla fine ti ritrovi con un solo mail in cui vedi l'ultimo indirizzo di posta presente nel tuo Reader.

    Questo codice funziona (testato su VS2010):

    While reader.Read()
        oMail = CType(oApp.CreateItem(Outlook.OlItemType.olMailItem), Outlook.MailItem)
        oMail.To = String.Format("{0}", reader(0))
        oMail.Display() '<-- ha senso visualizzarla per poi inviarla?
        'oMail.Send()   '<-- oppure meglio inviala direttamente?
    End While
    
    N.B. Io non ho usato un modello; sostituisci la mia riga CreateItem() con la tua riga CreateitemFromTemplate()

    ℹ️ Leggi di più su gibra ...

  4. #14
    Joe_01 non è in linea Scolaretto
    Post
    108
    Like Inviati  
    0
    Like Ricevuti  
    0
    Quote Originariamente inviato da gibra Visualizza il messaggio
    I miei sospetti erano fondati.

    Ad ogni ciclo devi creare un nuovo oggetto oMail, altrimenti ne usa uno solo, e ad ogni ciclo sostituisce l'indirizzo in oMail.To, così alla fine ti ritrovi con un solo mail in cui vedi l'ultimo indirizzo di posta presente nel tuo Reader.

    Questo codice funziona (testato su VS2010):

    While reader.Read()
        oMail = CType(oApp.CreateItem(Outlook.OlItemType.olMailItem), Outlook.MailItem)
        oMail.To = String.Format("{0}", reader(0))
        oMail.Display() '<-- ha senso visualizzarla per poi inviarla?
        'oMail.Send()   '<-- oppure meglio inviala direttamente?
    End While
    
    N.B. Io non ho usato un modello; sostituisci la mia riga CreateItem() con la tua riga CreateitemFromTemplate()


    Ciao, ho appena provato il codice, è vero avevi ragione infatti mancava il messaggio, giustamente ora ad ogni ciclo aggiunge un indirizzo, il send lo commentato semplicemente per poter vedre cosa succedeva, poi ovviamnete lo avrei attivato.
    Solo un'ultima domanda, non so se dipende dal fatto che il send è commentato, ma vorrei se possibile che il messaggio sucessivo apparisse solo dopo aver inviato il precedente, ora si aprono per esempio 10 messaggi contemporaneamente.

  5. #15
    L'avatar di bumm
    bumm non è in linea Very Important Person Ultimo blog: [VB2010] ComboBox ed Enumeratori
    Post
    2,140
    Blogs
    1
    Like Inviati  
    0
    Like Ricevuti  
    0
    non so se dipende dal fatto che il send è commentato, ma vorrei se possibile che il messaggio sucessivo apparisse solo dopo aver inviato il precedente, ora si aprono per esempio 10 messaggi contemporaneamente.
    Devi gestire l'evento del oggetto oApp - ApplicationClass.ApplicationEvents_Event_ItemSend Event (Microsoft.Office.Interop.Outlook)
    Quindi mandi le email una alla volta dal gestore dell'evento.

    -----
    Ma è veramente necessario di mandare i messaggi tramite interoperabilità di outlook?
    Personalmente eviterei di usarla, almeno che non è un plugin per l'Outlook.
    Ci sono delle situazioni quando il tuo programma può fallire(es se outlook e già aperto)
    Oppure il tuo programma bloccherà l'outlook(se non chiudi correttamente tutti gli oggetti usati)
    Secondo me, meglio usare i metodi nativi di Framework per mandare i messaggi:
    System.Net.Mail Namespace ()
    ℹ️ Leggi di più su bumm ...

  6. #16
    Joe_01 non è in linea Scolaretto
    Post
    108
    Like Inviati  
    0
    Like Ricevuti  
    0
    Quote Originariamente inviato da bumm Visualizza il messaggio
    Devi gestire l'evento del oggetto oApp - ApplicationClass.ApplicationEvents_Event_ItemSend Event (Microsoft.Office.Interop.Outlook)
    Quindi mandi le email una alla volta dal gestore dell'evento.

    -----
    Ma è veramente necessario di mandare i messaggi tramite interoperabilità di outlook?
    Personalmente eviterei di usarla, almeno che non è un plugin per l'Outlook.
    Ci sono delle situazioni quando il tuo programma può fallire(es se outlook e già aperto)
    Oppure il tuo programma bloccherà l'outlook(se non chiudi correttamente tutti gli oggetti usati)
    Secondo me, meglio usare i metodi nativi di Framework per mandare i messaggi:
    System.Net.Mail Namespace ()
    Ciao devi aver pazienza ma non ho la minima idea di quello che devo fare con (oApp) ho capito che è l'applicazione che si interfaccia con Outlook ma non so cosa fare per inviarne una alla volta.......

    Per quanto riguarda l'uso di Outlook ho pensato che era l'unico modo per tener traccia delle email inviate.....
    Grazie ancora di cuore.

  7. #17
    L'avatar di gibra
    gibra ora è in linea Very Important Person
    Post
    6,205
    Like Inviati  
    18
    Like Ricevuti  
    10
    Quote Originariamente inviato da Joe_01 Visualizza il messaggio
    Ciao devi aver pazienza ma non ho la minima idea di quello che devo fare con (oApp) ho capito che è l'applicazione che si interfaccia con Outlook ma non so cosa fare per inviarne una alla volta.......

    Per quanto riguarda l'uso di Outlook ho pensato che era l'unico modo per tener traccia delle email inviate.....
    Grazie ancora di cuore.
    1)
    Innanzitutto sarebbe il caso di spiegare il perchè vuoi inviarne una alla volta...
    Devi modificarle prima di inviarle?
    Se sì, non è possibile automatizzare la modifica oppure è proprio necessario farla a mano?

    2)
    Se distribuisci la tua applicazione, c'è un'altro punto da non sottovalutare:
    Se l'utente NON ha Outlook... si attacca al tram.

    Quindi, il suggerimento di bumm (usare System.Net.Mail) è corretto, però c'è il rovescio della medaglia:
    devi creare un form in cui l'utente deve inserire i parametri per SMTP, quindi username, password e server.

    3) poi c'è la terza soluzione (in pratica è come il metodo che usi attualmente) vecchia, se vogliamo, ma che ha il pregio di funzionare con qualsiasi programma di posta e non serve conoscere i parametri SMTP, ed è quello di usare il protocollo MailTo tramite la funzione API ShellExecute().
    Lo svantaggio di questo protocollo è che non si possono inviare allegati, ed è più complicato voler attendere di inviare un mail alla volta.
    Ecco perchè ti ho chiesto se davvero ti serve modificare tutti i messaggi manualmente.

    ℹ️ Leggi di più su gibra ...

  8. #18
    Joe_01 non è in linea Scolaretto
    Post
    108
    Like Inviati  
    0
    Like Ricevuti  
    0
    Quote Originariamente inviato da gibra Visualizza il messaggio
    1)
    Innanzitutto sarebbe il caso di spiegare il perchè vuoi inviarne una alla volta...
    Devi modificarle prima di inviarle?
    Se sì, non è possibile automatizzare la modifica oppure è proprio necessario farla a mano?

    2)
    Se distribuisci la tua applicazione, c'è un'altro punto da non sottovalutare:
    Se l'utente NON ha Outlook... si attacca al tram.

    Quindi, il suggerimento di bumm (usare System.Net.Mail) è corretto, però c'è il rovescio della medaglia:
    devi creare un form in cui l'utente deve inserire i parametri per SMTP, quindi username, password e server.

    3) poi c'è la terza soluzione (in pratica è come il metodo che usi attualmente) vecchia, se vogliamo, ma che ha il pregio di funzionare con qualsiasi programma di posta e non serve conoscere i parametri SMTP, ed è quello di usare il protocollo MailTo tramite la funzione API ShellExecute().
    Lo svantaggio di questo protocollo è che non si possono inviare allegati, ed è più complicato voler attendere di inviare un mail alla volta.
    Ecco perchè ti ho chiesto se davvero ti serve modificare tutti i messaggi manualmente.

    Provo a spiegare la mia opinione:
    1) se mando una e-mail in fila all'altra (credo) che anche su un PC che non è di ultima generazione forse qualche problema in meno di carico potrebbe esserci, ovvero se mando una e-mail alla volta è vero che impiego più tempo ma il PC elabora un'e-mail e la invia e la banda non si carica, poi ne invia un'altra e cosi di seguito.
    Non ho esigenze di modifica, quando devo mandare un'e-mail particolare, come avevo detto qulche post fa ho il pulsante email singola che mi permette di allegare tutto quello che voglio e di scrivere quello che voglio.

    2) in questo momento l'applicazione deve girare su macchine equipaggate di outlook in due casi (due reti) ho anche exchange

    3)Se creare la funzione che mi permette di accodare le email fra loro non implica una mole di lavoro indescrivibile preferirei stare sulla mia soluzione.

    Siete sempre molto precisi e chiari nelle spiegazioni, dovete scusarmi ma non sono di carattere piuttosto sintetico, anche a scuola (ormai qualche anno fa) mi dicevano sempre "validi i contenuti ma troppo sintetico!"

    Aspetto una vostra preziosa risposta.
    Grazie per l'aiuto

  9. #19
    L'avatar di bumm
    bumm non è in linea Very Important Person Ultimo blog: [VB2010] ComboBox ed Enumeratori
    Post
    2,140
    Blogs
    1
    Like Inviati  
    0
    Like Ricevuti  
    0
    1) se mando una e-mail in fila all'altra (credo) che anche su un PC che non è di ultima generazione forse qualche problema in meno di carico potrebbe esserci, ovvero se mando una e-mail alla volta è vero che impiego più tempo ma il PC elabora un'e-mail e la invia e la banda non si carica, poi ne invia un'altra e cosi di seguito.
    Argomentazione non mi convince.
    2) in questo momento l'applicazione deve girare su macchine equipaggate di outlook in due casi (due reti) ho anche exchange
    Sei consapevole che per colpa di tuo software potresti mandare in tilt l'outlook provocando i disaggi ai utenti?
    Ripeto di nuovo, consiglio di non usare l'interoperabilità con outlook almeno che la tua applicazione non è un addon per outlook.
    3)Se creare la funzione che mi permette di accodare le email fra loro non implica una mole di lavoro indescrivibile preferirei stare sulla mia soluzione.
    Non è indescrivibile, ma le competenze sono gradite. Quindi l'unico modo per capire se il messaggio e stato inviato - controllare l'evento ItemSend di classe Microsoft.Office.Interop.Outlook.ApplicationClass
    quindi dopo l'invio del primo messaggio devi attendere l'evento e poi lanciare il secondo messaggio e cosi via. Purtroppo non ho tempo di scrivere tutto il codice, quindi una spinta hai avuto, adesso cerchi di informarti sugli eventi buttare giù qualche riga di codice.
    ricapitoliamo, quello che ti serve:
    - creare un metodo per elaborazione dell'evento
    - dichiarare un EventHandler puntandolo su metodo di elaborazione di evento
    - creare un flag sullo stato di invio(sending-true/sended-false o qualcosa del genere)
    - modificare la procedura di invio in modo da poter controllare lo stato del'invio in base al flag(magari in un timer o ciclo, vedi tu)
    ℹ️ Leggi di più su bumm ...

  10. #20
    Joe_01 non è in linea Scolaretto
    Post
    108
    Like Inviati  
    0
    Like Ricevuti  
    0
    Quote Originariamente inviato da bumm Visualizza il messaggio
    Argomentazione non mi convince.

    Sei consapevole che per colpa di tuo software potresti mandare in tilt l'outlook provocando i disaggi ai utenti?
    Ripeto di nuovo, consiglio di non usare l'interoperabilità con outlook almeno che la tua applicazione non è un addon per outlook.

    Non è indescrivibile, ma le competenze sono gradite. Quindi l'unico modo per capire se il messaggio e stato inviato - controllare l'evento ItemSend di classe Microsoft.Office.Interop.Outlook.ApplicationClass
    quindi dopo l'invio del primo messaggio devi attendere l'evento e poi lanciare il secondo messaggio e cosi via. Purtroppo non ho tempo di scrivere tutto il codice, quindi una spinta hai avuto, adesso cerchi di informarti sugli eventi buttare giù qualche riga di codice.
    ricapitoliamo, quello che ti serve:
    - creare un metodo per elaborazione dell'evento
    - dichiarare un EventHandler puntandolo su metodo di elaborazione di evento
    - creare un flag sullo stato di invio(sending-true/sended-false o qualcosa del genere)
    - modificare la procedura di invio in modo da poter controllare lo stato del'invio in base al flag(magari in un timer o ciclo, vedi tu)

    Ok, per ora ti ringrazio per il tempo e la pazienza che mi hai dedicato tu e gibra, provo a mettere insieme qualcosa, infatti pensavo di mettere un timer ad ogni invio, ci provo.
    Sicuramente tornerò alla carica con le domande, a presto.

Discussione chiusa
Pagina 2 di 3 primaprima 123 ultimoultimo

Potrebbero interessarti anche ...

  1. Estrarre parte di un indirizzo email
    Da rossonero nel forum Microsoft Access
    Risposte: 5
    Ultimo Post: 03-02-2016, 17:59
  2. [Outlook VBA] estrazioni di email allegate ad altre email
    Da carlo65 nel forum Microsoft Word
    Risposte: 1
    Ultimo Post: 15-11-2011, 12:46
  3. Indirizzo email in MessageBox.Show
    Da glak nel forum Visual Basic .Net
    Risposte: 15
    Ultimo Post: 29-08-2011, 23:13
  4. Indirizzo email su stampa Excel.
    Da maximum nel forum Visual Basic 6
    Risposte: 3
    Ultimo Post: 17-10-2007, 10:00
  5. Validazione indirizzo email
    Da luciano.net nel forum Visual Basic 6
    Risposte: 6
    Ultimo Post: 27-09-2006, 16:59