Re: デコメ登録 ( No.1 ) |
- 日時: 2011/03/18 23:04
- 名前: Toki◆pRU.c9X.EOI
- 参照: http://www.atmarkit.co.jp/fnetwork/rensai/kihon11/01.html
- >デコメを含んだメールの場合デコメは添付ファイルとして取得し
>本文はデコメを空白に置き換えた状態で取得していて、 >デコメを含んだ状態の内容がDBに登録できません。
TKMPではサーバーから受信したデータをデコードしているだけなので、 デコメが添付ファイルとし取得されるのならば、 サーバーから受信した時点でそうなっているのだと思われます。
>理想としてはデコメをIMGタグに変換をしブログサイト上では >ユーザーさんが投稿した内容のまま表示したいのですが、
TKMPではサーバーからの受信処理と、パート毎のエンコード処理までしか行えません。 この処理は、受信したメールデータから解析して再現させることになるので、 この処理を行うのは、WWWさんの作成するプログラムで行う必要があります。
URLの文献が参考になるかもしれません。
|
Re: デコメ登録 ( No.2 ) |
- 日時: 2011/03/22 19:34
- 名前: WWW
- 早速の返信ありがとうございました。
下記のロジックでHTMLメールを取得できました。 本文中のデコメの順番どおりに添付ファイルとしてFileCollectionに格納されている みたいでしたので順番に置換処理を行い表示することができました。
参考URLも大変助かりました。ありがとうございます。
'--- 添付ファイル保存--- Private Sub PopClient_GetFiles(ByVal MailStream As System.IO.Stream)
Dim reader As New TKMP.Reader.MailReader(MailStream, False) Dim strTmpFile() As String
If reader.FileCount = 0 Then System.Windows.Forms.MessageBox.Show("添付ファイルはありません。") Return End If
Dim file As TKMP.Reader.File Dim i As Integer = 1 ReDim strTmpFile(reader.FileCount) For Each file In reader.FileCollection 'ファイル出力 file.FileSave("c:\data\") 'ファイル名を変更する System.IO.File.Move("c:\data\" & file.FileName, _ "c:\data\" & Now.ToString("yyyyMMddHHmmss") & "_" & i & System.IO.Path.GetExtension(file.FileName)) strTmpFile(i - 1) = Now.ToString("yyyyMMddHHmmss") & "_" & i & System.IO.Path.GetExtension(file.FileName) i = i + 1 Next file
Dim strMaindata As String = ""
For i = 0 To reader.PartCollection.Count - 1 For j = 0 To reader.PartCollection.Item(i).PartCollection.Count - 1
If reader.PartCollection.Item(i).PartCollection.Item(j).PartCollection.Count > 0 Then
If reader.PartCollection.Item(i).PartCollection.Item(j).PartCollection.Count >= 2 Then 'HTMLメール strMaindata = reader.PartCollection.Item(i).PartCollection.Item(j).PartCollection.Item(1).MainText Else 'TEXTメール strMaindata = reader.PartCollection.Item(i).PartCollection.Item(j).PartCollection.Item(0).MainText End If
End If Next j Next i
End Sub
|
Re: デコメ登録 ( No.3 ) |
- 日時: 2011/03/23 22:48
- 名前: WWW
- 先日の投稿したロジックですとキャリアによって取得できてませんでした。
下記のHTMLメールかどうかの判定をするループを下記の内容に変更したら3キャリアで 双方取得することができました。
For i = 0 To reader.PartCollection.Count - 1 For j = 0 To reader.PartCollection.Item(i).PartCollection.Count - 1
If reader.PartCollection.Item(i).PartCollection.Item(j).PartCollection.Count > 0 Then
If reader.PartCollection.Item(i).PartCollection.Item(j).PartCollection.Count >= 2 Then 'HTMLメール strMaindata = reader.PartCollection.Item(i).PartCollection.Item(j).PartCollection.Item(1).MainText Else 'TEXTメール pStrBody = reader.PartCollection.Item(i).PartCollection.Item(j).PartCollection.Item(0).MainText End If
Exit For
Else If reader.PartCollection.Item(i).PartCollection.Count >= 2 Then 'HTMLメール strMaindata = reader.PartCollection.Item(i).PartCollection.Item(1).MainText Else 'TEXTメール pStrBody = reader.PartCollection.Item(i).PartCollection.Item(0).MainText End If
Exit For
End If Next j Next i
|