2016-05-30 11 views
1

私はこのガイドhttp://www.aspsnippets.com/Articles/Send-user-Confirmation-email-after-Registration-with-Activation-Link-in-ASPNet.aspxを登録して登録電子メールを送信するシステムを作成しました。ガイドがWebアプリケーションに適しているため、小さな問題に遭遇したようですコンソールアプリケーションでWebアプリケーションメソッドを使用する

このコードはWebアプリケーションには適していますが、コンソールアプリケーションに合わせて変更しようとしています。

body += "<br /><a href = '" +Request.Url.AbsoluteUri.Replace("CS.aspx", "CS_Activation.aspx?ActivationCode=" + activationCode) + "'>Click here to activate your account.</a>"; 

は、Webクライアントまたはウリオプションについて読んでみましたが、私は絶対URIを取得し、コンソールアプリケーションからの起動リンクを生成するために必要な文字列を追加する方法を見つけ出すように見えるいけません。

必要に応じてコードを追加します。

この後に試してみました.SO How to build a Url?でも、正しく動作させるようです。

アクティベーションコードこれをDBに生成して保存します。

private static void SendActivationEmail(string email, string userName, MySqlConnection mysqlCon) 
    { 

     string activationCode = Guid.NewGuid().ToString(); 
     using (mysqlCon) 
     { 
      using (MySqlCommand cmd = new MySqlCommand("UPDATE accounts SET [email protected] " + 
                 "WHERE [email protected]me;")) 
      { 
       using (MySqlDataAdapter sda = new MySqlDataAdapter()) 
       { 
        cmd.CommandType = CommandType.Text; 
        cmd.Parameters.AddWithValue("@Username", userName); 
        cmd.Parameters.AddWithValue("@ActivationCode", activationCode); 
        cmd.ExecuteNonQuery(); 
        mysqlCon.Close(); 
       } 
      } 
     } 

答えて

0

特定のサービスのユーザー登録を持つコンソールアプリケーションを構築していますか?私はあなたがここでやろうとしていることを実際には得ていません。

コンソールアプリケーションをお持ちの場合は、Requestというようなものはありません。したがって、確かにRequest.Urlはありません。したがって、送信メールに埋め込むURLを見つけたり構築したりする別の方法が必要です。

+0

これはまさに私が求めていることです。私が取り組んでいるゲームの登録とログインを処理するサーバー用のコンソールアプリケーションです。このhttp://stackoverflow.com/questions/20164298/how-to-build-a-urlを使用してURLを構築しようとしていましたが、悲しいことにそれを動作させるように思われます。 –

+0

送信メールに埋め込みたいリンクが常に同じではありませんか? –

+0

リンク自体はconstですが、ActivationCodeは登録時に自動的に生成され、変数です。送信したいURLは "http://example.com/CS_Activation.aspx?ActivationCode=" + activationCode –

0

ASP.NETでは、アプリケーションはホストされ、常にUrlを持ちますが、コンソールアプリケーションでは手動で設定する必要があります。

おそらく「http://myserver.com/Activate.aspx?ac=を」と言ってMyWebActivationBaseUrlと設定された値を呼び出し、アプリケーションの設定にパラメータを追加することが良いでしょう:ロイDictusコメントに拡大すること

次に、それを使用して個別のアクティベーションURLを作成します。

+0

コメントを評価して、すでにこの問題を解決しました。すぐにソリューションが追加されます。 –

関連する問題