如何在.NET中对SMTP进行身份验证?

时间:2009-11-21 23:48:18

标签: .net c++ smtp smtp-auth

我正在尝试在Visual Studio 2005中构建一个电子邮件应用程序,我正在使用.NET的System :: Net :: Mail :: Smtp类来发送电子邮件,但我无法弄清楚如何验证{{ 3}}与服务器(现在我一直在尝试使用smtp.gmail.com)。

这是我的代码:

SmtpClient^ client = gcnew SmtpClient("smtp.gmail.com");
NetworkCredential^ basicCredential = gcnew NetworkCredential("username@gmail.com", "password");
client->UseDefaultCredentials = false;
client->Credentials = basicCredential;

令我烦恼的是它不会抛出任何SmtpExceptions,因此它与服务器通信正常,它只是不进行身份验证。 我也尝试过设置:

client->EnableSsl = true;

但这也行不通。

关于如何使这项工作的任何想法?

编辑:我已删除了我对此问题的回答,因为它错了。关闭防火墙什么都不做,看起来这个代码可以打开和关闭。有谁知道Gmail是否有某种垃圾邮件功能可以转储任何没有合法外观标题/正文的东西?或者为什么这个代码在十次尝试中起作用的任何其他原因??

第二次编辑:这是我的MailMessage的样子:

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);

这似乎现在更加一致,但我的代码中没有改变任何内容..它必须与实际的SMTP服务器有关吗?

1 个答案:

答案 0 :(得分:2)

当您尝试启用ssl时,您是否也将端口更改为587,GMail SSL SMTP端口?