Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2013
    Messaggi
    28

    salvare mail in uscita smtp vb.net

    Salve,

    ho realizzato un programma che invia delle mail tramite smtp in vb.net con visual studio 2010, funziona tutto sia su gmail, su alice, e sul server di posta dell'ufficio (privato dell'azienda).

    Il mio problema è il seguente:

    non riesco a salvare le mail in uscita, se invio una mail con gmail, questa viene salvata, se la invio tramite alice oppure il server dell'azienda non me le salva.

    Ho provato in tutti i modi ma non sono riuscito a fare niente.

    Potete aiutarmi?

    Grazie

  2. #2

    Moderazione

    Devi specificare il linguaggio di riferimento (sia nel testo del messaggio che come tag), il codice usato, i tentativi fatti...
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    In ogni caso, l'invio di mail tramite SMTP non c'entra niente con quello che si vede in posta inviata (normalmente gestito da un server IMAP); l'SMTP si limita a consegnare la posta, se vuoi che compaia nelle cartelle IMAP ti devi collegare al server in questione e inserire il messaggio inviato nella cartella opportuna (che è quello che fanno i normali client di posta). Il fatto che GMail faccia diversamente è una sua stranezza.
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2013
    Messaggi
    28
    Originariamente inviato da MItaly
    In ogni caso, l'invio di mail tramite SMTP non c'entra niente con quello che si vede in posta inviata (normalmente gestito da un server IMAP); l'SMTP si limita a consegnare la posta, se vuoi che compaia nelle cartelle IMAP ti devi collegare al server in questione e inserire il messaggio inviato nella cartella opportuna (che è quello che fanno i normali client di posta). Il fatto che GMail faccia diversamente è una sua stranezza.
    ok avevo provato a fare na cosa del genere, ma non sono riuscito a fare nulla.
    Cioè mi è venuta in mente come idea da provare ma come faccio a tradurla a msg? e come faccio a sapere la cartella in cui salvare la mail?
    comunque con outlook non mi salva le mail inviate su alice per esempio.

  5. #5

    Re: Moderazione

    Originariamente inviato da MItaly
    Devi specificare il linguaggio di riferimento (sia nel testo del messaggio che come tag), il codice usato, i tentativi fatti...
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    in vb.net con visual studio 2010
    ok avevo provato a fare na cosa del genere
    Ovvero che avevi fatto?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2013
    Messaggi
    28
    Originariamente inviato da oregon
    Ovvero che avevi fatto?
    in realtà niente...ho provato a scorrere qualche comando ma non ho proprio idea di dove andare a sbattere la testa.

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2013
    Messaggi
    28
    questa è na parte di codice che uso attualmente, però è smtp, mi sembra di aver capito che devo usare imap. Ma imap non è un protocollo per la ricezione? non capisco sono un po confuso.

    codice:
      Public Function SendMail(ByVal dest As List(Of String), ByVal ob As String, ByVal mex As String, ByVal address As String, ByVal ricevuta As Boolean) As Boolean
            Try
                Dim x As New System.Net.Mail.SmtpClient()
                Dim c As New System.Net.NetworkCredential(address, trovaPassword(address))
                If address.Contains("@") = False Then
                    address = address & "@asolodolce.it"
                End If
                msg = New System.Net.Mail.MailMessage(address, dest(0), ob, mex)
                If dest.Count > 1 Then
                    For Each d In dest
                        msg.CC.Add(d)
                    Next
                End If
                If allegato.Capacity <> 0 Then
                    For Each all In allegato
                        msg.Attachments.Add(New Net.Mail.Attachment(all))
                    Next
    
                End If
    
                x.UseDefaultCredentials = False
                x.Credentials = c
                x.Host = parametri(address, "smtp")
                x.Port = parametri(address, "porta")
                x.EnableSsl = parametri(address, "ssl")
                msg.DeliveryNotificationOptions = Convert.ToDecimal(ricevuta)
                x.Send(msg)
                SendMail = True
    
            Catch ex As Exception
    
                SendMail = False
                tsl1.Text = ex.Message
                Try
                    If ex.InnerException.Message <> Nothing Then
                        tsl1.Text = tsl1.Text + ex.InnerException.Message
                    End If
    
                Catch ex2 As Exception
    
                End Try
    
    
            End Try
    
    
        End Function

  9. #9
    Al di là del fatto che il codice va postato tra tag [code] ... [/code] (cosa che ho provveduto a correggere), mi sa che non hai bene in mente come funziona la posta elettronica, da cui il fraintendimento.

    SMTP si occupa di consegnare i messaggi; quanto tu giri un messaggio al tuo server SMTP, questo scopre qual è l'SMTP a cui va recapitato (andando a vedere il record DNS MX) e lo consegna a questo server, che poi ci farà quel che gli pare (se è un messaggio valido per un destinatario esistente tipicamente lo memorizzerà in qualche maniera in modo che il destinatario vi possa accedere).
    Da questo punto di vista, inviare un messaggio via SMTP è come imbucare una lettera in una cassetta delle lettere: non ne viene lasciata una copia nella tua posta inviata, il postino si limita a recapitarla.

    In effetti, non è neanche detto che il mittente abbia una casella di posta elettronica: esattamente come puoi scrivere su una lettera un mittente falso (o comunque diverso dal tuo recapito preciso - che so, ufficio tal dei tali invece di Mario Rossi c/o ufficio tal dei tali), una email che mandi attraverso un server SMTP può avere un mittente finto (o un indirizzo puramente "di rappresentanza", a cui non corrisponde alcuna casella postale), e in generale per inviare mail via SMTP non serve autenticazione (come non serve autenticazione per imbucare una lettera); per questo e altri motivi, non vale la corrispondenza indirizzo e-mail del mittente <=> esiste una sua casella postale.

    Inoltre, anche se il mittente ha una casella email, non è detto che questa consenta di avere una cartella "posta inviata" sul server; questo accade tipicamente per tutti gli account a cui si accede solo via POP; ovvero, il tuo gestore di posta elettronica ti fornisce solo uno spazio di "buffer" in cui vengono memorizzate le email finché non le recuperi con un client di posta elettronica. In questo caso, la "posta inviata" è un file locale sul PC da cui si accede alla email gestito dall'Outlook o Thunderbird del caso, e quindi ovviamente in generale non ci puoi fare niente (salvo passando per il programma di posta in questione).

    Rimane l'ultimo caso, che è sostanzialmente l'unico in cui si potrebbe fare quello che chiedi, ovvero il caso in cui:
    • al mittente corrisponde effettivamente un account di posta elettronica di qualche genere;
    • l'account in questione consente, oltre alla banale memorizzazione della posta in ingresso con accesso via POP, anche la possibilità di avere altre cartelle, tra cui la posta inviata;
    • l'account in questione consente di accedere a tali informazioni via IMAP o altri protocolli pubblici (alcuni provider consentono solo l'accesso via interfaccia web)


    In questo caso, quello che devi fare è:
    • inviare la mail via SMTP;
    • entrare via IMAP nella casella di posta del mittente (nota che server SMTP e IMAP sono tipicamente diversi) e aggiungere il messaggio alla cartella della posta inviata

    ovvero sostanzialmente quello che fa qualunque client di posta elettronica ogni volta che si invia un messaggio tramite un account IMAP.
    Ribadisco che i due processi sono completamente indipendenti - via SMTP invii il messaggio al destinatario, via IMAP lo memorizzi nella posta inviata (sul server) della casella.

    Per lavorare via IMAP non ci sono strumenti inclusi nel .NET Framework, ma con una rapida ricerca via Google trovi diversi componenti di terze parti (diversi anche opensource) adatti allo scopo.
    Amaro C++, il gusto pieno dell'undefined behavior.

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2013
    Messaggi
    28
    grazie mille per la risposta! mi hai chiarito un paio di idee che vagando nel web non avevo afferrato..anzi mi sa che le ho ancora più incasinate. Ho provato comunque a scaricare qualche libreria per l'imap ma le ho trovate tutte a pagamento o in altri linguaggi. Me ne consigleresti una di free? Scusa ma è un progetto per il lavoro anche parecchio importante :-)
    grazie ancora

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.