2009-11-21 11 views
0

J'essaie de créer une application de messagerie dans Visual Studio 2005 et j'utilise la classe System :: Net :: Mail :: Smtp de .NET pour envoyer des emails, mais je n'arrive pas à comprendre comment authentifier SMTP avec un serveur (en ce moment j'ai essayé avec smtp.gmail.com le plus).Comment puis-je authentifier SMTP dans .NET?

Voici mon code:

SmtpClient^ client = gcnew SmtpClient("smtp.gmail.com"); 
NetworkCredential^ basicCredential = gcnew NetworkCredential("[email protected]", "password"); 
client->UseDefaultCredentials = false; 
client->Credentials = basicCredential; 

Ce qui me contrarie est qu'il ne jette aucun SmtpExceptions il est donc communiquer avec le serveur bien, il est tout simplement pas l'authentification. J'ai aussi essayé de placer:

client->EnableSsl = true; 

mais cela ne fonctionne pas non plus.

Des idées sur comment faire ce travail?

Editer: J'ai supprimé ma réponse à cette question parce qu'elle était erronée. Après avoir éteint le pare-feu ne fait rien, il semble que ce code fonctionne sur et en dehors. Est-ce que quelqu'un sait si Gmail a une sorte de fonctionnalité de spam qui déverse tout ce qui n'a pas un titre/corps à la recherche légitime? Ou toute autre raison pour laquelle ce code fonctionne une fois sur dix?

Deuxième édition: Voici ce que mon MailMessage ressemble:

MailAddress^ from = gcnew MailAddress(fromAddr, fromName, System::Text::Encoding::UTF8); 
MailAddress^ to = gcnew MailAddress((String^) toAddr[0]); 
MailMessage^ message = gcnew MailMessage(from, to); 
MailAddress^ cc = gcnew MailAddress(ccAddr); 
message->CC->Add(cc); 
MailAddress^ bcc = gcnew MailAddress(bccAddr); 
message->Bcc->Add(bcc); 
message->Body = body; 
message->BodyEncoding = System::Text::Encoding::UTF8; 
message->Subject = sub; 
message->SubjectEncoding = System::Text::Encoding::UTF8; 
message->Attachments->Add(attachment); 

Cela semble fonctionner de manière plus cohérente, mais je n'ai rien changé dans mon code .. Il doit être quelque chose à voir avec le serveur SMTP réel?

+0

À quoi ressemble votre MailMessage? – Nate

+0

Pourquoi C++/CLI au lieu de C#? Microsoft cible désormais C++/CLI principalement dans les "scénarios Interop". –

+0

C'est un projet d'école, et nous devons utiliser C++, ne peut pas utiliser C# ... – hora

Répondre

2

Lorsque vous avez essayé d'activer ssl, avez-vous également changé le port en 587, le port SMTP SSL GMail?

+0

Ouais, j'ai essayé cela sans aucune chance. – hora

+0

Peut-être que vous devriez inclure un échantillon de code plus long? – Jherico