2009-03-23 6 views
0

J'essaie d'envoyer un courriel à une adresse externe dans le cadre d'une application Web. Je peux envoyer une amende e-mail lors de l'utilisation d'un exécutable sur simple, fonctionnement du serveur:Capable d'envoyer des e-mails via .exe, mais pas ASP.NET?

private void button1_Click(object sender, EventArgs e) 
    { 
     MailMessage message = new MailMessage(welcomeMessageFrom, toAddress, welcomeMessageSubject, welcomeMessageSubject); 
     SmtpClient emailClient = new SmtpClient("mail.sortuv.com"); 

     System.Net.NetworkCredential SMTPUserInfo = new System.Net.NetworkCredential(username, password); 
     emailClient.UseDefaultCredentials = false; 
     emailClient.Credentials = SMTPUserInfo; 
     emailClient.Send(message); 
    } 

Cependant, en essayant le même code à partir d'une page ASP.NET donne l'exception suivante:

Mailbox unavailable. The server response was: 5.7.1 Unable to relay for <user's email> 

Je suis nouveau à IIS mais avez-vous des suggestions sur la façon de déboguer?

MISE À JOUR: J'ai également dû spécifier le domaine pour l'utilisateur. Je ne sais toujours pas pourquoi un fichier .exe normal était correct sans. J'espère que cela aide quelqu'un.

Répondre

0

Merci pour toute l'aide les gars, je viens de le comprendre. J'ai dû spécifier le domaine:

SmtpClient emailClient = new SmtpClient(servername); 

      System.Net.NetworkCredential SMTPUserInfo = new System.Net.NetworkCredential(name, pass); 
      SMTPUserInfo.Domain = domain; // i.e. "foo.com" 
      emailClient.UseDefaultCredentials = false; 
      emailClient.Credentials = SMTPUserInfo; 
      emailClient.Send(message); 
0

Essayez d'ajouter

emailClient .DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis; 
+0

Merci - J'ai oublié de mentionner que j'ai essayé ceci, mais notre serveur d'échange ne semble pas le soutenir. Je vais voir si cela peut être activé. – Kalid

1

Semble une question des titres de compétences. L'exe normal fonctionne sous votre compte. L'application ASP.NET s'exécute sous le service réseau dans Windows Server et ASPNET sous Windows XP. Vous devez utiliser d'autres informations d'identification pour envoyer des e-mails avec succès depuis ASP.NET

+0

Merci, je vais essayer. – Kalid

0

Est-ce que vous définissez quoi que ce soit votre web.config, relatif aux paramètres de messagerie? IIRC, le web.config remplacera vos paramètres de code.

De même, vous pouvez également activer la journalisation pour voir ce que le SmtpClient envoie.

Vous devez ajouter des valeurs à votre fichier .config. Voici un exemple:

<configuration> 
    <system.diagnostics> 
    <trace autoflush="true" /> 

    <sources> 

     <source name="System.Net" > 
     <listeners> 
      <add name="MyTraceFile"/> 
     </listeners> 
     </source> 

     <source name="System.Net.Sockets"> 
     <listeners> 
      <add name="MyTraceFile"/> 
     </listeners> 
     </source> 

    </sources> 


    <sharedListeners> 
     <add 
     name="MyTraceFile" 
     type="System.Diagnostics.TextWriterTraceListener" 
     initializeData="System.Net.trace.log"    /> 
    </sharedListeners> 

    <switches> 
     <add name="System.Net" value="Verbose" /> 
     <add name="System.Net.Sockets" value="Verbose" /> 
    </switches> 
</configuration> 

Voici un lien avec plus d'informations: http://systemnetmail.com/faq/4.10.aspx

+0

Merci Dave! J'apprécie vraiment l'aide car cela me montre comment déboguer toute une classe de problèmes :) – Kalid

0

Est-ce pour IIS7 comme je l'ai eu un problème simular je devais activer le service de smtp sur le serveur

Et mettre en place le courrier pour chaque domaine là-bas

+0

Oui, c'est pour IIS7 - merci pour le conseil. – Kalid

Questions connexes