0

私はこの機能を使用しています:

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)getAccountData(2,lb_kont)としてchar* user_login, char* user_pass。次に、char * を String に変更します (最初の投稿の 6 行目と 7 行目)。

4

0 に答える 0