質問編集履歴
4
追記のため
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
##現状
|
2
|
+
(頂きました回答を元に、文末に追記致しました)
|
3
|
+
|
2
4
|
以下の環境で、メーラーを作成しているのですが。
|
3
5
|
subjectを作成する際にBase64へUTF-8の文字列をエンコードしています。
|
4
6
|
エンコードする文字列のなかに記号や半角文字が入った状態でエンコードしメールを送信すると、
|
@@ -52,12 +54,68 @@
|
|
52
54
|
|
53
55
|
何卒ご教授のほど、よろしくお願い致します。
|
54
56
|
|
55
|
-
|
56
|
-
|
57
57
|
###成功例と失敗例
|
58
58
|
|
59
59
|
①成功例画像
|
60
60
|

|
61
61
|
|
62
62
|
②失敗例画像
|
63
|
-

|
63
|
+

|
64
|
+
|
65
|
+
---
|
66
|
+
|
67
|
+
##追記(1)
|
68
|
+
文字列中にCRが混入しているとのコメントを頂き、以下のようにコードを編集致しました。
|
69
|
+
|
70
|
+
```c#
|
71
|
+
string sub = "あいうえおかきくけこさしすせそなにぬねのはひふへほ";
|
72
|
+
|
73
|
+
MimeKit.Encodings.Base64Encoder ed = new MimeKit.Encodings.Base64Encoder();
|
74
|
+
System.Text.Encoding charEcd = System.Text.Encoding.UTF8;
|
75
|
+
|
76
|
+
byte[] cc = charEcd.GetBytes(sub);
|
77
|
+
byte[] nnn = new byte[1000];
|
78
|
+
ed.Encode(cc, 0, cc.Length, nnn);
|
79
|
+
|
80
|
+
byte[] bb = charEcd.GetBytes("\n");
|
81
|
+
byte[] nb = new byte[1000];
|
82
|
+
|
83
|
+
int ii = 0;
|
84
|
+
for (int i = 0; i < nnn.Length;i++)
|
85
|
+
{
|
86
|
+
if (nnn[i] != bb[0])
|
87
|
+
{
|
88
|
+
nb[ii] = nnn[i];
|
89
|
+
ii = ii + 1;
|
90
|
+
}
|
91
|
+
}
|
92
|
+
|
93
|
+
string ttt = charEcd.GetString(nb).TrimEnd('\0');
|
94
|
+
m_subject = string.Format("=?{0}?B?{1}?=", charEcd.BodyName, ttt);
|
95
|
+
|
96
|
+
|
97
|
+
```
|
98
|
+
|
99
|
+
新しく編集したコードでエンコードした文字列は以下となります
|
100
|
+
(エンコードした文字列はブレークポイントで停止し抽出したエンコードした文字列です)
|
101
|
+
```
|
102
|
+
- 元の文字列:あいうえおかきくけこさしすせそなにぬねのはひふへほ
|
103
|
+
- エンコードした文字列:=?utf-8?B?44GC44GE44GG44GI44GK44GL44GN44GP44GR44GT44GV44GX44GZ44Gb44Gd44Gq44Gr44Gs44Gt44Gu44Gv44Gy44G144G444G7?=
|
104
|
+
```
|
105
|
+
|
106
|
+
###問題点
|
107
|
+
ネットなどにあるツールを用いると、元の文字列の通り「あいうえおかきくけこさしすせそなにぬねのはひふへほ」とデコードすることができます。
|
108
|
+
しかし実際にメールとして送信し、受信メーラー(複数メーラーにて確認済み)しすると、どれもデコードに失敗し、エンコードした文字列のまま表示されてしまっていました。
|
109
|
+
|
110
|
+
どのようにしたらメーラーのsubjectでエンコードした文字列を表示できるのでしょうか?
|
111
|
+
|
112
|
+
何卒、ご教授をお願い致します。
|
113
|
+
|
114
|
+
|
115
|
+
###試したこと
|
116
|
+
エンコードした文字列が長すぎるのかとも思い、以下のように複数行へエンコードも実践致しました。
|
117
|
+
```
|
118
|
+
=?utf-8?B?44GC44GE44GG44GI44GK44GL44GN44GP44GR44GT44GV44GX44GZ44Gb44Gd?=
|
119
|
+
=?utf-8?B?44Gq44Gr44Gs44Gt44Gu44Gv44Gy44G144G444G7?=
|
120
|
+
```
|
121
|
+
しかし結果は問題点同様の結果しか得ることができませんでした。
|
3
今後の展望を付け加えました
title
CHANGED
File without changes
|
body
CHANGED
@@ -9,7 +9,8 @@
|
|
9
9
|
|
10
10
|
##やりたいこと
|
11
11
|
subjectの文字列がしっかりとデコードされ、文章として読めるようになること。
|
12
|
-
(文字列はUTF-8だけでなく、ASCIIやShift-JIS、iso-2022-jpなどを用いることも視野に入れています)
|
12
|
+
(今後:文字列はUTF-8だけでなく、ASCIIやShift-JIS、iso-2022-jpなどを用いることも視野に入れています)
|
13
|
+
(今後:Base64だけでなく、quoted-printableでのエンコードも考えています)
|
13
14
|
|
14
15
|
###使用環境
|
15
16
|
PC:MacOSX
|
2
やりたいことを追記しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -7,6 +7,9 @@
|
|
7
7
|
|
8
8
|
何卒、ご教授の程よろしくお願い致します。
|
9
9
|
|
10
|
+
##やりたいこと
|
11
|
+
subjectの文字列がしっかりとデコードされ、文章として読めるようになること。
|
12
|
+
(文字列はUTF-8だけでなく、ASCIIやShift-JIS、iso-2022-jpなどを用いることも視野に入れています)
|
10
13
|
|
11
14
|
###使用環境
|
12
15
|
PC:MacOSX
|
1
タイトルに誤りがありました。
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
Mime規格に則ったメールのsubjectを作成する際に、Base64でエンコードする文字列の途中に記号があると文
|
1
|
+
Mime規格に則ったメールのsubjectを作成する際に、Base64でエンコードする文字列の途中に記号があると文字列としてデコードされません。
|
body
CHANGED
File without changes
|