VB6でSMTPソフトを使用してユーザーにメールを自動で送信するアプリを
開発しております。
それで、メールで送信する処理を標準モジュールを使用して
実装しようとしているのですが、実装すると文字バケがおきてしまいます。
標準モジュールを使用せずに、フォーム側のコードで実装すると
文字バケはおきません。
文字バケがおきるのは本文のみです。
送るときには本文の内容をString型の変数に格納しています。
繰り返しますが、フォーム側のコードで実装すると文字バケはおきません。
標準モジュール側で実装すると文字バケがおきます。
これは、どういったことが原因なのでしょうか?
ご教授お願いします。
文字化け...の話なのに、
質問の内容からして、文字コード(EUC,JIS etc)について
何の記載もありません。
おそらく文字コードを意識していないに原因があるかと思います。
受信したメールの本文には、文字バケされていて
その文字コードは把握できません。
ただし、その本文をSHIFT-JISにすると、
文字バケが解除されます。
つまり、標準モジュール側でSHIFT-JISから
なんらかの文字コードに変換されて文字バケが
おきているかと思うのですが。。。
フォームモジュールだから、標準モジュールだから、
というモジュールの違いによるプログラムの動作の違いはありません。
>SMTPソフトを使用して
何のですか?
>標準モジュールを使用せずに、フォーム側のコードで実装すると
>文字バケはおきません。
そこに違いがあるからでしょう。
でも、ソースの該当箇所の提示等もありませんし、
起きている文字化けの状況説明も不足しているので、
これ以上のアドバイスは難しいでしょうね。
JISへエンコードする関数です。
ファイル経由してますけど、動いてますよ。(^^;
Function EncodeJIS(sStr As String) As String
'-------------------------------------
'JISへエンコードしてファイルへ書き出し
Dim objStream As ADODB.Stream
Set objStream = CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = adTypeText
objStream.Charset = "ISO-2022-JP"
objStream.WriteText sStr
objStream.SaveToFile App.Path & "\JIS.TXT", adSaveCreateOverWrite
objStream.Close
Set objStream = Nothing
'-------------------------------------
'JISのファイルをバイナリーで読み込み
Dim iFile As Integer
Dim sFile As String
Dim vFile As Variant
Dim sRet As String
sRet = ""
iFile = FreeFile
sFile = App.Path & "\JIS.TXT"
Open sFile For Binary Access Read As #iFile
On Error Resume Next
Do Until EOF(iFile)
Line Input #iFile, vFile
If Err.Number = 62 Then Exit Do
sRet = sRet & vFile & vbCrLf
Loop
Close #iFile
EncodeJIS = sRet
End Function
ツイート | ![]() |