質問編集履歴
4
追記のため
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
##現状
|
2
2
|
|
3
|
+
(頂きました回答を元に、文末に追記致しました)
|
4
|
+
|
5
|
+
|
6
|
+
|
3
7
|
以下の環境で、メーラーを作成しているのですが。
|
4
8
|
|
5
9
|
subjectを作成する際にBase64へUTF-8の文字列をエンコードしています。
|
@@ -106,10 +110,6 @@
|
|
106
110
|
|
107
111
|
|
108
112
|
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
113
|
###成功例と失敗例
|
114
114
|
|
115
115
|
|
@@ -123,3 +123,119 @@
|
|
123
123
|
②失敗例画像
|
124
124
|
|
125
125
|
![失敗例](9ad1bb72e337e8ceda21dea8fa216970.png)
|
126
|
+
|
127
|
+
|
128
|
+
|
129
|
+
---
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
##追記(1)
|
134
|
+
|
135
|
+
文字列中にCRが混入しているとのコメントを頂き、以下のようにコードを編集致しました。
|
136
|
+
|
137
|
+
|
138
|
+
|
139
|
+
```c#
|
140
|
+
|
141
|
+
string sub = "あいうえおかきくけこさしすせそなにぬねのはひふへほ";
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
MimeKit.Encodings.Base64Encoder ed = new MimeKit.Encodings.Base64Encoder();
|
146
|
+
|
147
|
+
System.Text.Encoding charEcd = System.Text.Encoding.UTF8;
|
148
|
+
|
149
|
+
|
150
|
+
|
151
|
+
byte[] cc = charEcd.GetBytes(sub);
|
152
|
+
|
153
|
+
byte[] nnn = new byte[1000];
|
154
|
+
|
155
|
+
ed.Encode(cc, 0, cc.Length, nnn);
|
156
|
+
|
157
|
+
|
158
|
+
|
159
|
+
byte[] bb = charEcd.GetBytes("\n");
|
160
|
+
|
161
|
+
byte[] nb = new byte[1000];
|
162
|
+
|
163
|
+
|
164
|
+
|
165
|
+
int ii = 0;
|
166
|
+
|
167
|
+
for (int i = 0; i < nnn.Length;i++)
|
168
|
+
|
169
|
+
{
|
170
|
+
|
171
|
+
if (nnn[i] != bb[0])
|
172
|
+
|
173
|
+
{
|
174
|
+
|
175
|
+
nb[ii] = nnn[i];
|
176
|
+
|
177
|
+
ii = ii + 1;
|
178
|
+
|
179
|
+
}
|
180
|
+
|
181
|
+
}
|
182
|
+
|
183
|
+
|
184
|
+
|
185
|
+
string ttt = charEcd.GetString(nb).TrimEnd('\0');
|
186
|
+
|
187
|
+
m_subject = string.Format("=?{0}?B?{1}?=", charEcd.BodyName, ttt);
|
188
|
+
|
189
|
+
|
190
|
+
|
191
|
+
|
192
|
+
|
193
|
+
```
|
194
|
+
|
195
|
+
|
196
|
+
|
197
|
+
新しく編集したコードでエンコードした文字列は以下となります
|
198
|
+
|
199
|
+
(エンコードした文字列はブレークポイントで停止し抽出したエンコードした文字列です)
|
200
|
+
|
201
|
+
```
|
202
|
+
|
203
|
+
- 元の文字列:あいうえおかきくけこさしすせそなにぬねのはひふへほ
|
204
|
+
|
205
|
+
- エンコードした文字列:=?utf-8?B?44GC44GE44GG44GI44GK44GL44GN44GP44GR44GT44GV44GX44GZ44Gb44Gd44Gq44Gr44Gs44Gt44Gu44Gv44Gy44G144G444G7?=
|
206
|
+
|
207
|
+
```
|
208
|
+
|
209
|
+
|
210
|
+
|
211
|
+
###問題点
|
212
|
+
|
213
|
+
ネットなどにあるツールを用いると、元の文字列の通り「あいうえおかきくけこさしすせそなにぬねのはひふへほ」とデコードすることができます。
|
214
|
+
|
215
|
+
しかし実際にメールとして送信し、受信メーラー(複数メーラーにて確認済み)しすると、どれもデコードに失敗し、エンコードした文字列のまま表示されてしまっていました。
|
216
|
+
|
217
|
+
|
218
|
+
|
219
|
+
どのようにしたらメーラーのsubjectでエンコードした文字列を表示できるのでしょうか?
|
220
|
+
|
221
|
+
|
222
|
+
|
223
|
+
何卒、ご教授をお願い致します。
|
224
|
+
|
225
|
+
|
226
|
+
|
227
|
+
|
228
|
+
|
229
|
+
###試したこと
|
230
|
+
|
231
|
+
エンコードした文字列が長すぎるのかとも思い、以下のように複数行へエンコードも実践致しました。
|
232
|
+
|
233
|
+
```
|
234
|
+
|
235
|
+
=?utf-8?B?44GC44GE44GG44GI44GK44GL44GN44GP44GR44GT44GV44GX44GZ44Gb44Gd?=
|
236
|
+
|
237
|
+
=?utf-8?B?44Gq44Gr44Gs44Gt44Gu44Gv44Gy44G144G444G7?=
|
238
|
+
|
239
|
+
```
|
240
|
+
|
241
|
+
しかし結果は問題点同様の結果しか得ることができませんでした。
|
3
今後の展望を付け加えました
test
CHANGED
File without changes
|
test
CHANGED
@@ -20,7 +20,9 @@
|
|
20
20
|
|
21
21
|
subjectの文字列がしっかりとデコードされ、文章として読めるようになること。
|
22
22
|
|
23
|
-
(文字列はUTF-8だけでなく、ASCIIやShift-JIS、iso-2022-jpなどを用いることも視野に入れています)
|
23
|
+
(今後:文字列はUTF-8だけでなく、ASCIIやShift-JIS、iso-2022-jpなどを用いることも視野に入れています)
|
24
|
+
|
25
|
+
(今後:Base64だけでなく、quoted-printableでのエンコードも考えています)
|
24
26
|
|
25
27
|
|
26
28
|
|
2
やりたいことを追記しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -15,6 +15,12 @@
|
|
15
15
|
何卒、ご教授の程よろしくお願い致します。
|
16
16
|
|
17
17
|
|
18
|
+
|
19
|
+
##やりたいこと
|
20
|
+
|
21
|
+
subjectの文字列がしっかりとデコードされ、文章として読めるようになること。
|
22
|
+
|
23
|
+
(文字列はUTF-8だけでなく、ASCIIやShift-JIS、iso-2022-jpなどを用いることも視野に入れています)
|
18
24
|
|
19
25
|
|
20
26
|
|
1
タイトルに誤りがありました。
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
Mime規格に則ったメールのsubjectを作成する際に、Base64でエンコードする文字列の途中に記号があると文
|
1
|
+
Mime規格に則ったメールのsubjectを作成する際に、Base64でエンコードする文字列の途中に記号があると文字列としてデコードされません。
|
test
CHANGED
File without changes
|