Outlook

giovedì 12 gennaio 2012 - 09.34

fra3000 Profilo | Newbie

Ciao a tutti,
ho bisogno di una mano con outlook. Allora ho un programma gestionale, da cui ogni 15 gg estraiamo le fatture da inviare via mail ai clienti. Il problema è che le mail inviate con le fatture non arrivano a destinazione, anche se le mail vengono salvate in Posta inviata. L'altro giorno per inviare le mail ne abbiamo inviate una alla volta mettendoci un'eternità. Visto che è un problema di provider molto lento (visto che con la newsletter a dicembre ci ho messo un'eternità ad inviare una mail a più di 1000 clienti) è possibile creare un programmino anche esterno che dica ad outlook di inviare al massimo non più di 20 email? Grazie

Francesco

luigidibiasi Profilo | Guru

scusa...

intendi che se invii le e-mail inserendo tutti i destinatari nel campo "to" non passano mentre se le invii una alla volta ci mette troppo?


Luigi Di Biasi


http://www.dibiasi.it/
http://netsell.dibiasi.it - ecomm software -
http://blogs.dotnethell.it/luigidibiasi/
http://yadamp.unisa.it/ - YADAMP CMS -

fra3000 Profilo | Newbie

Sì. Contando che essendo fatture, le mail devono essere inviate una per volta. Gli indirizzi sono caricati dal programma. Quindi dal gestionale faccio invia mail, il programma ha già un indirizzo mail inserito; non c'è da fare altro che conferma. Ma in questo modo succede che se le fatture da inviare sono moltissime (il programma non indica quante sono), outlook si blocca, le lascia in posta inviata per ore. Non è possibile dire ad outlook anche tramite programma esterno di bloccare l'invio dopo 20 mail e rilanciare l'invio dopo un tot di tempo?

luigidibiasi Profilo | Guru

Scusami ancora... accedi ad outlook così?
Dim oOApp = CreateObject("Outlook.Application") Dim oOMail = oOApp.CreateItem(0) With oOMail '.from = SMTP_CREDENTIAL.UserName & "@" & SMTP_CREDENTIAL.Domain .to = "" .Subject = "inserire oggetto dell'e-mail" .Body = "" .Attachments.Add(tocehck, 1, 1) .Display() End With
Luigi Di Biasi


http://www.dibiasi.it/
http://netsell.dibiasi.it - ecomm software -
http://blogs.dotnethell.it/luigidibiasi/
http://yadamp.unisa.it/ - YADAMP CMS -

fra3000 Profilo | Newbie

Per ora, per inviare mail da outlook, faccio tutto da programma. Ma se si volesse velocizzare la cosa, si potrebbe accedere direttamente da un foglio excel, salvando se non sono tante le fatture. Controllando le configurazioni del mailserver del programma, ho visto che la modalità di invio è manuale e il mail manager è outlook

luigidibiasi Profilo | Guru

Scusami ma non riesco a capire come fai ad inviare... cioè il codice che usi...
Se è lo stesso gestionale ad inviare le e-mail probabilmente il problema sta nel come è stato implementato l'invio li dentro...

Luigi Di Biasi


http://www.dibiasi.it/
http://netsell.dibiasi.it - ecomm software -
http://blogs.dotnethell.it/luigidibiasi/
http://yadamp.unisa.it/ - YADAMP CMS -

fra3000 Profilo | Newbie

Allora mi spiego meglio. Parlando ho capito meglio. Allora io estraggo le fatture in pdf dal programma in una cartella. Il gestionale non lo tocco più. In un file excel ho le ditte a cui inviare le fatture con tanto di indirizzi mail. Come creare una macro che dati 100 clienti mi permetta di riconoscere la fattura relativa, allegarla ad una mail ed inviarla?

P.S.: come client ho outlook, ma quando creo una macro di prova, mi dice che il client non è installato correttamente, anche se outlook è già programma predefinito

luigidibiasi Profilo | Guru

ok

allora... prima di continuare due domande... è necessario per te visualizzare in "posta inviata" le e-mail oppure ti basta la notifica di avvenuta spedizione?
(perché vorrei consigliarti di bypassare outlook)
Luigi Di Biasi


http://www.dibiasi.it/
http://netsell.dibiasi.it - ecomm software -
http://blogs.dotnethell.it/luigidibiasi/
http://yadamp.unisa.it/ - YADAMP CMS -

fra3000 Profilo | Newbie

entrambe, sia la posta inviata che l'avvenuta notifica (non messaggio di lettura)
Ho excel 2010.
Poi ho già creato qualcosa, e ti mostro la parte di codice:

For i% = 2 To 6
Dim OutApp As Object
Dim OutMail As Object
Dim nomefiledaallegare As String


Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
Set OutMail = OutApp.CreateItem(0)



On Error Resume Next
With OutMail
.to = Cells(i%, 2)
'.CC = ""
'.BCC = ""
'.Subject = "PRESENZE MENSILI"
.BodyFormat = Cells(i%, 3)
.Display
End With
On Error GoTo 0

Set OutMail = Nothing
Set OutApp = Nothing


Fin qui tutto va bene, il codice mi genera la mail. Ora nella I colonna di excel ho il campo IDAZIENDA estratto dal gestionale. Mi manca allegare il corretto file! E' consigliabile che il pdf abbia il codice della ditta nel nome?

luigidibiasi Profilo | Guru

bhe... devi solo settare la proprietà
.attachment = "nome.pdf"

di solito noi in azienda nel subject scriviamo "nome-nostra-azienda: oggetto della mail" in modo che non vada nell'antispam...

però ti da' problemi questo codice giusto?


Luigi Di Biasi


http://www.dibiasi.it/
http://netsell.dibiasi.it - ecomm software -
http://blogs.dotnethell.it/luigidibiasi/
http://yadamp.unisa.it/ - YADAMP CMS -

fra3000 Profilo | Newbie

No, questo pezzo di codice è corretto. Il più è fargli fare la ricerca corretta del file. O meglio esiste qualche funzione cerca file, che, data una società, trovi automaticamente il file da allegare?

luigidibiasi Profilo | Guru

allora tu in excel hai un codice univoco per la società alla quale inviare il file?

quando esporti il pdf che struttura ha il nome del file?
Luigi Di Biasi


http://www.dibiasi.it/
http://netsell.dibiasi.it - ecomm software -
http://blogs.dotnethell.it/luigidibiasi/
http://yadamp.unisa.it/ - YADAMP CMS -

fra3000 Profilo | Newbie

sì ogni società ha un codice univoco, per esempio, Ditta "Francesco" ha codice 1, ditta "marin" codice 2, ecc. Il fatto che i file esportati automaticamente dal programma non hanno nel nome un codice. Sarebbe meglio che vengano salvati con almeno il codice?

luigidibiasi Profilo | Guru

si, magari con struttura CODICE_altrotesto.pdf in modo che ti viene più facile capire quali file allegare...
Luigi Di Biasi


http://www.dibiasi.it/
http://netsell.dibiasi.it - ecomm software -
http://blogs.dotnethell.it/luigidibiasi/
http://yadamp.unisa.it/ - YADAMP CMS -

fra3000 Profilo | Newbie

ok, ne salvo alcuni con quel nome. ma poi per non creare una mail e fare la ricerca direttamente, c'è qualche modalità? O devo farlo manualmente. Cioè la vba cerca in una determinata directory in C:, guarda se c'è una fattura con quel codice, se c'è la allega, altrimenti non invia nulla

luigidibiasi Profilo | Guru

bhe un idea potrebbe essere :

1) enumera tutti i file contenuti nella cartella
2) estrai il prefisso codice_
3) cerca nel file excel quel codice
4) se lo trovi crea l'email


Luigi Di Biasi


http://www.dibiasi.it/
http://netsell.dibiasi.it - ecomm software -
http://blogs.dotnethell.it/luigidibiasi/
http://yadamp.unisa.it/ - YADAMP CMS -

fra3000 Profilo | Newbie

Una domanda: ho fatto la modifica dei nomi file, chiamandoli con i codici. Li estraggo direttamente dal VBA? Per esempio ho un file 986.pdf in una cartella, dove 986 è il cliente. Posso estrarre il nome del file?

luigidibiasi Profilo | Guru

certo... però devi vedere in vba come si fa che non mi ricordo
Luigi Di Biasi


http://www.dibiasi.it/
http://netsell.dibiasi.it - ecomm software -
http://blogs.dotnethell.it/luigidibiasi/
http://yadamp.unisa.it/ - YADAMP CMS -

fra3000 Profilo | Newbie

Grazie del consiglio e ce l'ho fatta, mi invia automaticamente mail solo nel caso in cui ci siano allegati con quel nome. Una cosa: è possibile dire di inviare una mail ogni tot secondi. Cioè è possibile dire nella macro, al .send (funzione di invio), invia ogni mail dopo che sono passati 15 secondi dall'ultimo invio? Questo per non caricare troppo il server

fra3000 Profilo | Newbie

Buongiorno,
Le ho tentate tutte ma non riesco a venire a capo:
If (a$ = Cells(k% + n, 1)) Then

Cells(k% + n, 4) = a$
End If
Questo codice mi fa un confronto tra la stringa a$ presente nella riga 1 e la cella ad esempio nella riga 4. Se volessi fare il contrario, a$ presente nella riga 4 e confrontarla con la riga 1 è possibile? E come? Cioè il codice mi confronta le celle dalla riga 1 alla riga 100. Se volessi fare il contrario?

luigidibiasi Profilo | Guru

>Grazie del consiglio e ce l'ho fatta, mi invia automaticamente
>mail solo nel caso in cui ci siano allegati con quel nome. Una
>cosa: è possibile dire di inviare una mail ogni tot secondi.
>Cioè è possibile dire nella macro, al .send (funzione di invio),
>invia ogni mail dopo che sono passati 15 secondi dall'ultimo
>invio? Questo per non caricare troppo il server

VBA sicuramente ha una funzione Sleep ... devi cercare come si usa su google perché non ricordo...

sotto hai postato un nuovo problema? puoi descriverlo meglio?

Luigi Di Biasi


http://www.dibiasi.it/
http://netsell.dibiasi.it - ecomm software -
http://blogs.dotnethell.it/luigidibiasi/
http://yadamp.unisa.it/ - YADAMP CMS -

fra3000 Profilo | Newbie

No ho trovato era abbastanza una stupidata.

Allora io ho una colonna codici e una colonna nomefile che è sempre il codice della I colonna . (pdf, doc, ecc). I nomi nella II colonna non sono ordinati secondo i codici della I. Allora facendo un confronto ho detto se il codice della I colonna corrisponde al codice della II colonna, ok; se corrisponde al codice presente nella riga i%+n (con n che va da 1 a 100) , metti ok. E fin qui tutto ok. Può capitare che però il controllo debba essere fatto tra la colonna i%-1 (cioè ad esempio il codice della I colonna è nella riga 1 e il nome della II nella colonna 5) e mettendo i%-n non me lo fa; mi dà errore. E' possibile fare quindi un confronto tra riga 5 e riga 1, quindi non andando avanti (Cells(i%+n, 1), ma Cells(i%-n, 1))?
Grazie

luigidibiasi Profilo | Guru

un for al contrario?

for i = 5 to 1 step -1 ?
Luigi Di Biasi


http://www.dibiasi.it/
http://netsell.dibiasi.it - ecomm software -
http://blogs.dotnethell.it/luigidibiasi/
http://yadamp.unisa.it/ - YADAMP CMS -

fra3000 Profilo | Newbie

Grazie mille, da un pò funziona tutto! Ma c'è da dire anche non mi apre più l'editor delle macro. Può essere che abbia fatto qualcosa sulle autorizzazioni?

robybayy Profilo | Newbie

come spedire mensilmente email con codice macro

Ciao,
ho lo stesso problema anche io, mensilmente devo spedire un certo numero di fatture in pdf salvate con data_codcli.pdf e devo allegare ad ogni indirizzo di Outlook 2007 la fattura che riporta il codcli uguale, come posso fare?
grazie Roby
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5