我正在使用这个功能:
void SendEmail(String ^ sendTo, String ^ sendFrom, String ^ subject, String ^ body, bool enableSsl, char* user_login, char* user_pass)
{
SmtpClient^ client = gcnew SmtpClient();
MailMessage^ msg = gcnew MailMessage();
String ^ user = gcnew String(user_login);
String ^ pass = gcnew String(user_pass);
System::Net::NetworkCredential^ smtpCreds = gcnew System::Net::NetworkCredential(user, pass);
client->Host = "smtp.gmail.com";
client->Port = 587;
client->Credentials = smtpCreds;
client->EnableSsl = enableSsl;
MailAddress^ to = gcnew MailAddress(sendTo);
MailAddress^ from = gcnew MailAddress(sendFrom);
msg->Subject = subject;
msg->Body = body;
msg->From = from;
msg->To->Add(to);
client->Send(msg);
}
用于发送电子邮件。我对第 9 行有疑问 - 如果我像这样设置静态字符串:
System::Net::NetworkCredential^ smtpCreds = gcnew System::Net::NetworkCredential("adress@gmail.com", "my_password");
没关系 - 邮件将被发送,但是当我尝试使用来自其他功能应用程序的变量时,崩溃了:
System.dll 中出现“System.Net.Mail.SmtpException”类型的未处理异常
附加信息:SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.5.1 需要身份验证。了解更多信息
PS。是的,SSL 已启用。
我有文件中的登录名和密码:
char * getAccountData(int marker, int lb_kont)
{
char wyjscie[256], login[256], password[256];
char * korektor = "||";
char * schowek;
string zawartosc_pliku;
ifstream NowyPlik;
NowyPlik.open("C:\\account.db");
for(int a =1; a<=lb_kont; a++)
{
getline(NowyPlik, zawartosc_pliku);
strncpy(wyjscie, zawartosc_pliku.c_str(), 128);
schowek = strtok( wyjscie, korektor );
strcpy(login, schowek);
schowek = strtok( NULL, korektor );
strcpy(password, schowek);
}
NowyPlik.close();
if(marker == 1)
return login;
if(marker == 2)
return password;
}
对于发送邮件的功能,我已经设置getAccountData(1,lb_kont)
为. 接下来我将 char * 更改为 String(我的第一篇文章中的第 6 行和第 7 行)。getAccountData(2,lb_kont)
char* user_login, char* user_pass