2016-02-11 2 views
2

J'essaie de faire défiler une requête de base de données et d'envoyer des e-mails aux adresses e-mail que je reçois de la requête. Voici mon morceau de code.ASP Classic, Boucler la requête et envoyer des e-mails

do until rs.EOF 
    Set myMail = CreateObject("CDO.Message") 
    myMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 
    myMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") ="relay-hosting.secureserver.net" 
    myMail.Configuration.Fields.Update 
    myMail.Subject= subject 
    myMail.From="[email protected]" 
    myMail.To = rs("Email") 
    myMail.HTMLBody = strMessage & "Some Message" 
    myMail.Send 
    Set myMail = Nothing 
    rs.MoveNext 
loop 

J'ai cherché et essayé une solution différente sans aucune chance. Les lignes suivantes du code semble avoir un problème, mais je ne pouvais pas trouver ce que

myMail.To = rs("Email") 

Avant de donner une réponse ou suggestion s'il vous plaît garder à l'esprit,

  • Ce code fonctionne très bien quand je l'utilise tout adresse électronique statique dans l'attribut "TO" de l'objet Message CDO
  • La requête donne des résultats précis
  • Je reçois 500 erreur interne du serveur lorsque j'utilise l'email dynamique (email de la requête) dans l'attribut "TO" du message CDO objet . Je n'ai pas l'accès à IIS pour activer les messages d'erreur détaillés.
+0

Sans le message d'erreur réel, il est presque impossible de le savoir. Quand vous dites «résultats précis», qu'est-ce que cela signifie? Quel est le retour de la requête et quelle est la valeur codée en dur que vous avez utilisée? –

+1

Vérifiez les résultats de votre requête très attentivement. Au moins une des valeurs 'rs (" Email ")' n'est pas une adresse e-mail valide. Il n'y a pas d'autre explication. – Keith

+0

@SeanLange De "Résultats précis" je veux dire le résultat de la requête me donne l'adresse e-mail souhaitée. J'ai codé en dur mon adresse email pour recevoir des emails, et je les ai reçus. Mais quand j'utilise la valeur dynamique, cela donne une erreur. S'il vous plaît laissez-moi savoir si vous n'êtes toujours pas clair ce que je veux dire – Atif

Répondre

2

Eh bien, comme d'autres l'ont observé dans les commentaires, sans le message d'erreur réel, il est difficile à dire. Il existe de nombreuses sources possibles:

  • est fermé le jeu d'enregistrements à ce moment, pour une raison
  • il n'y a pas de champ "Email" dans le recordset
  • Adresse e-mail invalide
  • ...

la bonne chose est, vous pouvez utiliser la gestion des erreurs ASP classique pour trouver l'erreur comme ceci:

on error resume next 

do until rs.EOF 
    Set myMail = CreateObject("CDO.Message") 
    myMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 
    myMail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") ="relay-hosting.secureserver.net" 
    myMail.Configuration.Fields.Update 
    myMail.Subject= subject 
    myMail.From="[email protected]" 
    myMail.To = rs("Email") 
    myMail.HTMLBody = strMessage & "Some Message" 
    myMail.Send 

    if err then 
     Response.write "<code>" & err.Source & " - " & err.Description & "</code>" 
    end if 

    Set myMail = Nothing 
    rs.MoveNext 
loop 

on error goto 0 

Il existe bien sûr de meilleurs moyens de gérer ces erreurs, même en ASP classique (search SO ou this solution). C'est seulement pour vous aider à trouver l'erreur lorsque vous n'avez pas accès aux paramètres IIS.

+0

Il ya un champ de courrier électronique dans le jeu d'enregistrements, Les courriels sont au format valide (je les ai tous vu en les écrivant à la page), ne peut pas penser à une raison. J'ai essayé le traitement des erreurs mais le code d'erreur est 0. J'ai utilisé le fichier web.config pour remplacer les paramètres d'affichage des erreurs et maintenant je vois l'erreur de délai d'attente de la requête.Mais le même code s'exécute en quelques secondes lorsque j'utilise une adresse email statique dans l'attribut "TO" pour envoyer un email. – Atif

+0

peut-être 'rs (" Email ")' est NULL quelque part? Ajoutez CStr() pour le convertir. – gpinkas

+0

J'ai vérifié deux fois et chaque ligne dans le jeu d'enregistrements a une adresse email valide. J'avais essayé CStr() sans aucune chance. En tout cas merci pour le temps de chacun ici. Je vais devoir continuer à creuser pour résoudre ce problème. – Atif