C# VB Web システム開発の部屋

システム開発で役に立つコードを厳選したブログです。

【対処方法】ThunderbirdにOneOfficeメールのアカウントを追加できないとき

設定項目は間違い無いのにアカウント設定が見つからない時は、
OneOfficeの受信サーバか送信サーバ、または両方に接続できるか確認してみる。

 

接続できてなさそうだと思えたら下記方法を実施してみる。

 

【方法①】
ファイヤーウォールのポートを開けてみる。

ファイヤーウォールがブロックしている可能性が高い。

 

 

【方法②】
OneOfficeの送受信サーバのルートを追加してみる。


1.ルートを追加する。
  コマンドプロンプト
  route -p add 21.121.1.200 MASK 255.255.255.255 デフォルトゲートウェイ

 ※21.121.1.200・・・OneOfficeの送受信サーバのIPアドレス


2.ルートの名前解決ができない場合、hostsに追加する。
  windows7の場合、C:\Windows\System32\drivers\etc\hosts
  
  <追加文>
  #OneOfficeのメールサーバ
  21.121.1.200 pprxa.gemini.oneoffice.jp
  21.121.1.200 smtxa.gemini.oneoffice.jp


3.Thunderbirdにアカウントを追加する。

  メールアドレス、パスワードを設定後、手動で下記を設定する。
  
  サーバ名:pprxa.gemini.oneoffice.jp
  ポート:993
  接続保護:SSL/TLS

  サーバ名:smtxa.gemini.oneoffice.jp
  ポート:465
  接続保護:SSL/TLS
  
  
  
 方法②の注意点はOneOfficeメールサーバのIPアドレスが変更になったら、接続できなくなるのであくまで一時的な設定ということになります。

【対処方法】リモートデスクトップ接続が急にできなくなった時

いつもはできていたリモートデスクトップ接続ですが、急にできなくなりました。

 

原因は接続先PCのWindowsアップデートの更新が2017年12月で止まっていたようです。

手動でアップデートを試みたが、通常の方法ではアップデートできなかった(正確にはアップデート中に固まっている)ので「Microsoft Update カタログ」からダウンロードして更新をかけました。

 

固まっていた更新プログラム1つをアップデートしたら他の待機中の更新プログラムも一気に最新まで更新でき、リモートデスクトップ接続もできるようになりました。

【対処方法】RPCサーバを利用できません

PCにログインしようとすると「RPCサーバーを利用できません」と表示される。

※PCを再起動かけることもできません。

 

私の場合はPCの強制終了で治りました。。。

 

その後、立ち上げてみても特に異常はなさそうです。

【VB.NET】ランダムな文字列を生成する ーモジュール④ー

 

<プログラムの説明>
ランダムな文字列を生成して値を返します。

 

<引数の説明>
  Length・・・文字列の長さを指定します。

  Digit・・・数字(0~9)で生成する場合はTrue、それ以外はFalseにします。

  Chars・・・使用する文字。指定がないときは英数字で生成します。

  Seed・・・シード値があれば指定します

 

<DebuggerStepThrough>
Public
Function NewChars(ByVal Length As Integer, Optional ByVal Digit As Boolean = False, Optional ByVal Chars As String = "", Optional ByVal Seed As Integer = 0) As String 'forで回す場合や連続で生成する場合はシード値を変更することで '同一文字列の生成を回避できる Dim r As New Random(Seed) '数字のみで生成する If Digit = True Then Dim strMin As String = "" Dim strMax As String = ""
For i As Integer = 0 To Length - 1 If strMin = "" Then
         '1文字目に0は使用しない strMin += "1" Else strMin += "0" End If strMax += "9" Next
NewChars = r.Next(CInt(strMin), CInt(strMax)).ToString Exit Function End If '使用する文字 Dim str As String If Chars <> "" Then str = Chars Else '指定がないときは英数字を使用する str = "0123456789abcdefghijklmnopqrstuvwxyz" End If '文字列を生成する Dim sb As New Text.StringBuilder(Length) For i As Integer = 0 To Length - 1 Dim pos As Integer = r.Next(str.Length) Dim c As Char = str(pos) sb.Append(c) Next Return sb.ToString()
End Function

【VB.NET】UPDATE文または、DELETE文を実行する ーモジュール③ー

 

<プログラムの説明>

 UPDATE文または、DELETE文の実行結果を返します。

 実行結果 True = 成功 False = 失敗

  ※行数チェック無し

 

<引数の説明>

 SqlCmdText・・・SQL Query(UPDATE文、DELETE文)

 

<DebuggerStepThrough>
Public Function SqlRun(ByVal SqlCmdText As String) As Boolean SqlRun = False Using SqlConnection As New SqlClient.SqlConnection Dim SqlCommand As SqlClient.SqlCommand = SqlConnection.CreateCommand Dim SqlTransaction As SqlClient.SqlTransaction     'My.SettingのSQL Serverデータベースを開く SqlConnection.ConnectionString = My.Settings.SqlCon      SqlConnection.Open()      '最大待機時間を10分に設定 SqlCommand.CommandTimeout = 600
SqlTransaction = SqlConnection.BeginTransaction SqlCommand.Transaction = SqlTransaction Try       'SQL Queryを実行する
SqlCommand.CommandText = SqlCmdText SqlCommand.ExecuteNonQuery() SqlTransaction.Commit() SqlRun = True Catch ex As Exception If SqlTransaction Is Nothing = False Then SqlTransaction.Rollback() End If
MessageBox.Show(ex.Message)
Finally If SqlConnection.State = ConnectionState.Open Then SqlConnection.Close() End If SqlCommand.Dispose() End Try End Using End Function

【VB.NET】SELECT結果(1行目)を配列に格納する ーモジュール②ー

 

<プログラムの説明>

 SELECT結果(1行目)を配列に格納して返します。0行の場合はNothingを返します。

 

<引数の説明>

 SqlCmdText・・・SQL Query(SELECT文)    

 

 <DebuggerStepThrough>
 Public Function SqlSA(ByVal SqlCmdText As String) As String()

     Using SqlConnection As New SqlClient.SqlConnection
         Dim SqlCommand As SqlClient.SqlCommand = SqlConnection.CreateCommand
         Dim SqlDataReader As SqlClient.SqlDataReader = Nothing

         'My.SettingのSQL Serverデータベースを開く
         SqlConnection.ConnectionString = My.Settings.SqlCon

         SqlConnection.Open()

         Try
             SqlCommand.CommandText = SqlCmdText
             SqlDataReader = SqlCommand.ExecuteReader

             If SqlDataReader.HasRows = True Then
                 'データを取得できた場合

                 '1行目を読み込む
                 SqlDataReader.Read()

                 '配列に格納する
                 Dim ary(SqlDataReader.FieldCount - 1) As String
                 Dim intI As Integer = 0
                 Do While intI < SqlDataReader.FieldCount
                     ary(intI) = SqlDataReader(intI).ToString.Trim
                     intI += 1
                 Loop

                 Return ary
             Else
                 'データを取得できなかった場合
                 Dim str(0) As String
Return str End If Catch ex As Exception MessageBox.Show(ex.Message) Finally If Not SqlDataReader Is Nothing Then SqlDataReader.Close() End If SqlCommand.Dispose() End Try End Using End Function

【VB.NET】SELECT結果をデータテーブルに格納する ーモジュール①ー

 

<プログラムの説明>

SELECT文の結果をデータテーブルに格納して返します。エラーが発生した場合はNothingを返します。

 

<引数の説明>

SqlCmdText ・・・ SQL Query(SELECT文)

 

<DebuggerStepThrough>
Public Function SqlST(ByVal SqlCmdText As String) As DataTable

        Dim dt As New DataTable

        Using SqlConnection As New SqlClient.SqlConnection
            Dim SqlCommand As SqlClient.SqlCommand = SqlConnection.CreateCommand
            Dim SqlDataAdapter As New SqlClient.SqlDataAdapter

            'My.SettingのSQL Serverデータベースを開
            SqlConnection.ConnectionString = My.Settings.SqlCon

            '最大待機時間を10分に設定
            SqlCommand.CommandTimeout = 600

            Try
                SqlCommand.CommandText = SqlCmdText
                SqlDataAdapter.SelectCommand = SqlCommand

                'データテーブルに格納
                SqlDataAdapter.Fill(dt)

                Return dt

            Catch ex As Exception
                MessageBox.Show(ex.Message)
            Finally
                SqlCommand.Dispose()
            End Try

        End Using

    End Function