Visualizzazione dei risultati da 1 a 7 su 7

Discussione: email non inviata

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    654

    email non inviata

    Premetto che la mia esperienza in asp è pari a zero, ma sono abituato a lavorare in php: quindi capisco la struttura ma non conosco la sintassi

    Ho creato un file per l'invio dell'email molto semplice, prendendolo da questo script . Il codice che ho usato:

    Codice PHP:
    <%
    Dim miaMail
    Set miaMail 
    CreateObject("CDONTS.NewMail")

    miaMail.From "mittente.mail@dominio.it"
    miaMail.To "mia.mail@dominio.it"

    miaMail.Subject "Oggetto della mail"
    miaMail.BodyFormat 0
    miaMail
    .MailFormat 0
    miaMail
    .Body "Testo della mail"
    miaMail.Send

    Set miaMail 
    Nothing
    %> 
    L'email però non viene inviata. All'inizio avevo provato anche con uno script più complesso, ma visto che non va neanche questa semplice robetta direi che non è dovuto solo alla mia incapacità. Con lo script più complesso mi dava questo errore:

    CDO.Message.1 error '80040213'

    The transport failed to connect to the server.

    Ho guardato in giro e sembra essere un errore di server. Avete idea di come posso risolverlo?


    A titolo di informazione
    Sto manipolando un sito creato da un altro, costruito metà in asp e metà in php (già qui mi sembra una cosa strana, credevo che i due linguaggi fossero incompatibili )
    In pratica il sito è costruito in asp, ma recupera i parametri per l'invio dell'email attraverso un file php. Lo script di invio email già presente nel sito non funziona e dà questo errore:
    errore fsockopen() [function.fsockopen] unable to connect to....

    Ho provato per sicurezza anche a creare un file ricezione.php e a lanciarlo da server per inviare l'email, ma niente da fare: il sito non sembra supportare il php

  2. #2
    Utente di HTML.it L'avatar di jhonny
    Registrato dal
    May 2001
    Messaggi
    130
    anche a me è capitato di smanettare con l'invio dell'email..
    ma il codice è molto + lungo..
    e ci sono cmq i parametri del server di posta etc.. etc..
    ke nel tuo codice nn vedo..
    se vuoi ti posso postare quello ke ho usato io cn il server di aruba...

    sempre se l'aiuto ke ti serve è questo qui....
    "Non cercare di piegare il cucchiaio ma cerca di fare la cosa più saggia.....
    ...pensa che il cucchiaio non esiste,allora vedrai che è la tua MENTE a piegarsi"

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    654
    Quello che mi serve è capire il meccanismo per inviare un'email
    Forse è meglio se prima posto lo script più complesso che avevo usato all'inizio (lì c'erano anche tutti i parametri), altrimenti ti scomodo per niente. Se noti delle differenze sostanziali mi faresti un favore a postare il tuo, così lo confronto.

    Grazie in ogni caso per l'aiuto

    Questo è il file principale, che chiamo attraverso la barra degli indirizzi:

    Codice PHP:

    <html>
    <
    body>
    <%
    dim oggetto
    dim contenuto
    oggetto 
    "Questa è una prova di invio email"
    contenuto "<html><body><h1>Titolo</h1>
    "
    contenuto contenuto "descrizione qualsiasi"
    contenuto contenuto "</body></html>"

    response.write contenuto

    myEmail 
    sendEmail("nome_destinatario""destinatario@libero.it""nome_mittente""mittente@libero.it"oggettocontenutoTRUE"CDOSYS""mail.smtp_mittente.it")

    response.Write "

    Email inviata"

    %>
    </
    body></html

    Questo invece è il file email.asp che viene richiamato (piuttosto lungo, anche se il codice è commentato):

    Codice PHP:
    <%
    public function 
    sendEmail(toNametoEmailfromNamefromEmailemailSubjectemailBodyisHTMLemailComponentemailServer)
    'toName  e toEmail : rispettivamente nome ed indirizzo del destinatario
    '
    fromName e fromEmail rispettivamente nome ed indirizzo del mittente
    'emailSubject : oggetto dell'email
    'emailBody : contenuto dell'email
    'isHTML : se impostato a true invia una email in formato HTML, altrimenti in formato testo
    '
    emailComponent oggetto email utilizzato
    'emailServer : indirizzo SMTP del server d'invioNecessario per qualsiasi oggetto tranne CDONTS

    Dim objMail 
    ' Oggetto email
    Dim objMailConfig ' 
    Configurazione oggetto email
    Dim blnSent 
    ' Conferma di invio email
    Dim strBodySignature ' 
    Firma da aggiungere alle email

    blnSent 
    false 'Assicuriamoci che di default la funzione restituisca false se non vengono inviate email

    '
    *****************************************************************************
    ' Per i tipi di server

    select case emailComponent
    ****** CDONTS *****
    case 
    "CDONTS"

    ' Crea l'
    oggetto CDONTS
    Set objMail 
    Server.CreateObject("CDONTS.NewMail")


    with objMail

    ' Mittente
    .From = fromName & " <" & fromEmail & ">"
    Destinatario
    .To toName " <" toEmail ">"

    ' Oggetto
    .Subject = emailSubject
    Corpo dell'email
    if isHTML then
    .Body = Replace(strBodyFormat, "$body$", emailBody & strBodySignature)
    else
    .Body = emailBody & strBodySignature
    end if
    Formato corpo HTMLText
    if isHTML then
    .BodyFormat 0
    else
    .
    BodyFormat 1
    end 
    If
    ' Formato email : 0 = MIME, 1 = Text
    .MailFormat = 0
    Importanza LowNormalHigh
    .Importance 1

    ' Invia l'email
    .Send
    blnSent 
    true

    end with

    Set objMail 
    Nothing

    ' ****** CDOSYS *****
    case "CDOSYS"

    Crea l'oggetto CDOSYS
    Set objMail = Server.CreateObject("CDO.Message")
    Set objMailConfig = Server.CreateObject ("CDO.Configuration")

    Proprietà di invio
    with objMailConfig
    ' SMTP mail server
    .Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = emailServer
    SMTP port
    .Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
    ' CDO port
    .Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    Timeout
    .Fields("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
    .Fields.Update
    end with

    ' Configurazione CDOSYS
    Set objMail.Configuration = objMailConfig

    with objMail

    Mittente
    .From fromName " <" fromEmail ">"
    ' Destinatario
    .To = toName & " <" & toEmail & ">"

    Oggetto
    .Subject emailSubject
    ' Corpo dell'email
    if isHTML then
    .HTMLBody Replace(strBodyFormat"$body$"emailBody strBodySignature)
    .
    HTMLBody emailBody strBodySignature
    else
    .
    TextBody emailBody strBodySignature
    end 
    if

    ' Invia l'email
    if Len(emailServer) > 0 then
    .Send
    blnSent 
    true
    end 
    if

    end with

    Set objMail 
    Nothing
    Set objMailConfig 
    Nothing

    ' ****** PERSIT ASPEMAIL *****
    case "ASPEmail"

    Crea l'oggetto ASPEMAIL
    Set objMail = Server.CreateObject("Persits.MailSender")

    with objMail

    SMTP mail server
    .Host emailServer
    ' SMTP port
    .Port = 25

    Mittente
    .From fromEmail
    .FromName fromName
    ' Destinatario
    .AddAddress toEmail, toName

    Oggetto
    .Subject emailSubject
    ' Corpo dell'email
    if isHTML then
    .Body Replace(strBodyFormat"$body$"emailBody strBodySignature)
    else
    .
    Body emailBody strBodySignature
    end 
    if
    ' Imposta il formato HTML
    if isHTML then
    .IsHTML = true
    end if

    if Len(emailServer) > 0 then
    .Send
    blnSent = true
    end if

    end with

    Set objMail = Nothing

    ****** ASPMAIL *****
    case 
    "ASPMail"

    ' Crea l'
    oggetto ASPMAIL
    Set objMail 
    Server.CreateObject("SMTPsvg.Mailer")

    with objMail

    ' SMTP mail server
    .RemoteHost = emailServer

    Mittente
    .FromAddress fromEmail
    .FromName fromName
    ' Destinatario
    .AddRecipient toName, toEmail

    Oggetto
    .Subject emailSubject
    ' Corpo dell'email
    if isHTML then
    .BodyText Replace(strBodyFormat"$body$"emailBody strBodySignature)
    .
    ContentType "text/HTML"
    else
    .
    BodyText emailBody strBodySignature
    .ContentType "text/plain"
    end if


    if 
    Len(emailServer) > 0 then
    .SendMail
    blnSent 
    true
    end 
    if

    end with

    Set objMail 
    Nothing

    end select

    ' Infine restituiamo il valore della variabile blnSent prima definita che presumibilmente corrisponderà a true se l'email è stata inviata

    sendEmail 
    blnSent

    ' e chiudiamo la funzione

    end function

    prova richiamo
    'myEmail = sendEmail("Destinatario", "destinatario@dominio.com", "Webmaster", "webmaster@sito.com", "Oggetto di prova", "Corpo dell'email", true, "CDONTS", "mail.sito.com")
    %> 

  4. #4
    Sei sicuro che sul server sia installato il componente CDONTS e non CDOSYS?

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    654
    In effetti non avevo idea della differenza tra i due componenti
    Ora ho cambiato questo

    Codice PHP:
    myEmail sendEmail("nome_destinatario""destinatario@libero.it""nome_mittente""mittente@libero.it"oggettocontenutoTRUE"CDOSYS""mail.smtp_mittente.it"
    con

    Codice PHP:
    myEmail sendEmail("nome_destinatario""destinatario@libero.it""nome_mittente""mittente@libero.it"oggettocontenutoTRUE"CDONTS""mail.smtp_mittente.it"
    Adesso l'errore è scomparso e mi dà anche la conferma che l'email è stata inviata, però non in realtà non arriva nella mia posta. In pratica è questo il codice che ho usato:

    Codice PHP:

    <html>
    <
    body>
    <%
    dim oggetto
    dim contenuto
    oggetto 
    "Questa è una prova di invio email"
    contenuto "<html><body><h1>Titolo</h1>
    "
    contenuto contenuto "Testo"
    contenuto contenuto "</body></html>"

    response.write contenuto

    myEmail 
    sendEmail("nome_destinatario""destinatario@libero.it""nome_mittente""mittente@libero.it"oggettocontenutoTRUE"CDONTS""mail.smtp_mittente.it")

    if 
    myEmail then
    response
    .Write "

    Email inviata"
    else
    response.Write "

    Email non inviata"
    end if

    %>
    </
    body></html
    Perchè non arriva se mi assicura che la variabile myEmail esiste?

  6. #6
    Utente di HTML.it L'avatar di jhonny
    Registrato dal
    May 2001
    Messaggi
    130
    un consiglio.: io avendo aruba come servizio di hosting ho scaricato direttamente il file con tutte le impostazioni giuste per l'invio..
    modificandolo un pò e nemmeno molto..è andato tutto ok...

    prova a vedere anke te se cè sul sito di ki ti fornisce l'hosting una cosa del genere..se no ti posto il mio ke è questo qui...la paginetta del form te la risparmio..
    --------------------------------------------------------------------------
    <%
    '============Linkbruttocane su specifiche MSDN================
    '* il corpo finale del messaggio contiene tutti i campi *
    '* inseriti nella pagina html, in pratica puoi mettere *
    '* tutti i campi che ti servono nel modulo di invio senza *
    '* fare altre configurazioni aggiuntive. *
    '================================================= ============

    DIM corpoMessaggio, numeroCampi, invioA, invioDa, nomeDominio, indirizzoIp, modulo, browserSistemaOperativo

    '* voce da modificare con il proprio indirizzo email

    invioA = "tecnici@bcdinformatica.it"

    '* voce da modificare con un indirizzo email che funga da mittente:
    '* in caso di errore riceverete notifica a questo indirizzo un MAILER-DAEMON
    '* dato che cdosys supporta questa notifica

    invioDa = ""

    '------------fine modifiche necessarie------------------

    nomeDominio = Request.ServerVariables("HTTP_HOST")
    indirizzoIp = Request.ServerVariables("REMOTE_ADDR")
    modulo = Request.ServerVariables("HTTP_REFERER")
    browserSistemaOperativo = Request.ServerVariables("HTTP_USER_AGENT")

    '*rilevo i campi del form

    FOR numeroCampi = 1 TO (Request.Form.Count() - 1)
    IF NOT Request.Form(numeroCampi) = "" THEN
    corpoMessaggio = corpoMessaggio & vbCrLf & Request.Form.Key(numeroCampi) & " = " & Trim(Request.Form(numeroCampi))
    END IF
    NEXT

    '* creo gli oggetti cdosys sul server e li gestisco

    DIM iMsg, Flds, iConf

    Set iMsg = CreateObject("CDO.Message")
    Set iConf = CreateObject("CDO.Configuration")
    Set Flds = iConf.Fields

    Flds(cdoSendUsingMethod) = cdoSendUsingPort
    Flds(cdoSMTPServer) = "smtp.aruba.it"
    Flds(cdoSMTPServerPort) = 25
    Flds(cdoSMTPAuthenticate) = cdoAnonymous ' 0
    Flds.Update

    With iMsg
    Set .Configuration = iConf
    .To = invioA
    .From = Request.Form("email")
    .Sender = invioDa
    .Subject = "Richiesta informazioni dal " & nomeDominio
    .TextBody = "Questi i dati inseriti nel modulo presente alla pagina " & modulo & " da utente con indirizzo IP " & indirizzoIp & " browser e sistema operativo " & browserSistemaOperativo & vbCrLf & corpoMessaggio & ""
    .Send
    End With
    "Non cercare di piegare il cucchiaio ma cerca di fare la cosa più saggia.....
    ...pensa che il cucchiaio non esiste,allora vedrai che è la tua MENTE a piegarsi"

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    654
    Grazie.
    Ci dò un'occhiata e vedo se riesco a cavarci fuori qualcosa

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 © 2026 vBulletin Solutions, Inc. All rights reserved.