質問編集履歴

4

追記のため

2018/03/03 15:13

投稿

退会済みユーザー
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

今後の展望を付け加えました

2018/03/03 15:13

投稿

退会済みユーザー
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

やりたいことを追記しました。

2018/03/03 14:31

投稿

退会済みユーザー
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

タイトルに誤りがありました。

2018/03/02 17:19

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- Mime規格に則ったメールのsubjectを作成する際に、Base64でエンコードする文字列の途中に記号があると文章にデコードされません。
1
+ Mime規格に則ったメールのsubjectを作成する際に、Base64でエンコードする文字列の途中に記号があると文字列としてデコードされません。
test CHANGED
File without changes