2010-05-26 4 views
3

J'utilise asp.net 3.5 et C#.Envoyer un mail à asp.net

Je veux envoyer du courrier à partir asp.net, pour que j'ai quelques détails de mon fournisseur d'hébergement

qui sont les suivants:

  • mail.MySite.net
  • UserName
  • Mot de passe

Mais je ne peux pas envoyer de courrier à travers ces détails, j'ai fait le changement suivant s dans mon fichier web.config:

<system.net> 
    <mailSettings> 
     <smtp> 
      <network 
       host="mail.MySite.net" 
       port="8080" 
       userName="UserName" 
       password="Password" /> 
     </smtp> 
    </mailSettings> 
</system.net> 

En outre, le code derrière je suis en train d'écrire cette fonction:

MailMessage mail = new MailMessage("[email protected]", "[email protected]"); 
mail.Subject = "Hi"; 
mail.Body = "Test Mail from ASP.NET"; 
mail.IsBodyHtml = false; 

SmtpClient smp = new SmtpClient(); 
smp.Send(mail); 

mais je reçois un message d'erreur comme message n'a pas pu.

S'il vous plaît laissez-moi savoir ce que je fais mal et ce que je dois faire pour que ça fonctionne bien.

Merci d'avance.

+0

Vous êtes sûr que l'adresse 'TO' est une adresse réelle et valide? –

+0

Oui, c'est mon propre identifiant d'e-mail. – Zerotoinfinity

+0

Aussi, essayez de mettre votre code dans un bloc TRY-CATCH et d'écrire le message entier à l'écran 'Catch (Exception x) {Response.Write (x);}' pour voir s'il y a plus de détails dans le message d'erreur que vous avez peut-être manqué. –

Répondre

2

Avez-vous besoin de fournir les informations d'identification du client?

smp.Credentials = CredentialCache.DefaultNetworkCredentials; 

ou

smp.Credentials = new NetworkCredential("yourUserID", "yourPassword", "yourDomainName"); 

En outre, l'exception exacte que vous obtenez serait utile.

Voir un post by Scott Guthrie pour plus d'aide.

2

Je doute que le port 8080 soit le port smtp correct. Peut-être le port 25 ou 587.

+1

Je suis d'accord, son port semble totalement éteint. Une exception nous permettrait de savoir si c'est une erreur de connexion impossible par rapport à une erreur non autorisée ... jusqu'à ce que tout devine :) – Kelsey

+0

Je vais vous fournir l'exception correcte, qui je crois serait utile pour trouver la cause réelle. – Zerotoinfinity

0

J'ai un code très similaire au vôtre qui fonctionne, je pense que la différence est que vous devez fournir l'adresse IP à votre serveur SMTP dans le constructeur pour le client SMTP.

 MailMessage Email = new MailMessage("[email protected]", "[email protected]"); 
     Email.Subject = "RE: Hello World."; 
     Email.Body = "Hello World"; 
     Email.IsBodyHtml = false; 
     SmtpClient Client = new SmtpClient(SMTP_SERVER); //This will be an IP address 
     Client.Send(Email); 

Espérons que ça aide! :)

(BTW, je l'ai utilisé dans ce Winforms, services Windows et ASP .NET. Je ne .NET en ASP pas besoin de fournir quoi que ce soit dans la page ASPX.)

1

Envoi d'un email par asp.net C# est pas une chose compliquée ... juste que nous savons sur le port smtp et hôte ...

  MailAddress to = new MailAddress("Email Id"); 

      MailAddress from = new MailAddress("Email Id"); 

      MailMessage mail = new MailMessage(from, to); 

      mail.Subject = ""; 
      mail.Body = ""; 


      SmtpClient smtp = new SmtpClient(); 
      smtp.Host = "smtp.gmail.com"; 
      smtp.Port = 587; 

      smtp.Credentials = new NetworkCredential(
       "Email Id", "Password"); 
      smtp.EnableSsl = true; 

      smtp.Send(mail); 
1

Sans utiliser SMTP, ajouter à l'aide Microsoft.Office.Interop.Outlook; référence

 Application app = new Application(); 
     NameSpace ns = app.GetNamespace("mapi"); 
     ns.Logon("Email-Id", "Password", false, true); 
     MailItem message = (MailItem)app.CreateItem(OlItemType.olMailItem); 
     message.To = "To-Email_ID"; 
     message.Subject = "A simple test message"; 
     message.Body = "This is a test. It should work"; 

     message.Attachments.Add(@"File_Path", Type.Missing, Type.Missing, Type.Missing); 

     message.Send(); 
     ns.Logoff();