2010-06-07 36 views
6

sto ottenendo questo errore quando provo a trasmettere tramite il server localeErrore CDO.Message.1 '80070005' Accesso negato.

CDO.Message.1 error '80070005' 

Access is denied. 

/mail.asp, line xxx 

Ecco il codice che sto usando

MailBodyText = "TEST" 

    Set objNewMail = CreateObject("CDO.Message") 
    objNewMail.To = sSendTo 
    objNewMail.From = "[email protected]" 
    objNewMail.Cc = "[email protected]" 
    objNewMail.Subject = "Information Request & Feedback" 
    objNewMail.HTMLBody = "The following information was sent from " & sEmail & ":" & "<br>" & CHR(13) & MailBodyText & "<br>copies of this mail we sent to :"& sSendTo 
    objNewMail.Send 

    Set objNewMail = Nothing 

Sembra Si tratta di un errore di autorizzazione al Issur doesn' t hanno il permesso di scrittura per scrivere nella cartella mailroot/pickup.

Ma abbiamo verificato che e l'account di servizi utilizzato da questo sito sembra avere i diritti.

Domanda è questo errore sempre un errore di autorizzazione file?

Domanda come sapere/impostare la posizione che sta utilizzando CDO? Quindi possiamo confermare le autorizzazioni

Che altro dovrebbe guardare per risolvere questo problema?

risposta

5

utilizzare la proprietà .configuration che consente l'autenticazione e l'altro la messa a punto ..

esempi a: http://www.paulsadowski.com/wsh/cdo.htm

aggiornamento

La proprietà .configuration permette di impostare la directory di prelievo (come da richiesta)

objNewMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 1 
objNewMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverpickupdirectory") = "c:\inetpub\mailroot\pickup" 
objNewMail.Configuration.Fields.Update 
objNewMail.Send 
+0

grazie per questo, ma non sto cercando di inviare la posta a un server remoto, basta farlo funzionare nella casella locale. – Pbearne

+0

@Pbearne, è possibile impostare la directory di prelievo tramite la proprietà '.configuration' (* risposta aggiornata *) –

+0

Grazie per l'esempio di codice aggiuntivo funziona sul server di sviluppo Detesto dover inserire i percorsi nel codice. ma posso conviverci – Pbearne

0

Sto migrando alcuni vecchi siti classici di asp a un nuovo server (Windows 2008R2) e ho avuto "esattamente" lo stesso problema (beh, almeno lo stesso errore e praticamente lo stesso codice). La soluzione presentata da Gaby:

objNewMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 1 
objNewMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverpickupdirectory") = "c:\inetpub\mailroot\pickup" 

non ha funzionato per me, ho ancora avuto lo stesso errore.

Dopo qualche ricerca ho trovato questo suggerimento:

myMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 
myMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "localhost" 

(NON impostare lo smtpserverpickupdirectory)

Ora funziona benissimo.

A proposito, se è necessario configurare il servizio SMTP necessario sul server Windows 2008 (IIS7), ho trovato estremamente utile this blog.

UPDATE:

Secondo microsoft sendusing = 1 utilizza il server SMTP e SendUsing 2 utilizza Outlook Express, ho guardato sul server, e non sembra essere OutlookExpress o Windows Mail installato , ancora questa impostazione funziona per me. Se qualcuno potesse spiegare che sono curioso di sapere.

4

SE NON VOLETE CAMBIARE IL CODICE

Concessione IIS_IUSRS gruppo l'accesso in scrittura ai c: \ inetpub \ Mailroot \ Pickup cartella o tutto ciò che è tuo dir pick-up.

Dev'essere IIS_IUSRS Gruppo, non il IUSR utente (avete capito bene mispelled probabilmente).

mi è stato sempre questo errore dopo l'esecuzione di operazioni di cui l'opzione 3 a blog.msdn.com

non ho dovuto modificare il codice ASP. Il tuo codice funziona bene sul mio server.

+2

Questa dovrebbe essere la risposta accettata in quanto questa è la causa del messaggio "Accesso negato". Il gruppo 'IIS_IUSRS' contiene sugli account' ApplicationPoolIdentity' per ogni sito sul server, quindi se si configura questo a livello di server questo approccio funziona alla grande. Ricorda che la tua cartella di prelievo dovrà fornire l'autorizzazione "IIS_IUSRS' * almeno *' modify' o continuerai a ricevere l'errore. – Lankymart

+0

Tuttavia, l'articolo collegato è per un altro errore ('Errore: CDO.Message.1 (0x80040220) Il valore di configurazione" SendUsing "non è valido su IIS 7.5') e in questo caso l'aggiunta delle autorizzazioni al' metabase IIS 'farà ** niente ** il problema sono i permessi della cartella per la cartella di prelievo. – Lankymart