質問編集履歴

3

不足情報の追加

2020/12/11 07:11

投稿

ohno1011
ohno1011

スコア14

test CHANGED
File without changes
test CHANGED
@@ -234,6 +234,8 @@
234
234
 
235
235
  ```C#
236
236
 
237
+ private bool DirectoryDelete(string Path)
238
+
237
239
  try
238
240
 
239
241
  {
@@ -262,6 +264,8 @@
262
264
 
263
265
  }
264
266
 
267
+ }
268
+
265
269
  ```
266
270
 
267
271
  ☆の処理で

2

不足情報の追加

2020/12/11 07:11

投稿

ohno1011
ohno1011

スコア14

test CHANGED
File without changes
test CHANGED
@@ -12,6 +12,10 @@
12
12
 
13
13
  ```C#
14
14
 
15
+ public bool SendMail()
16
+
17
+ {
18
+
15
19
 
16
20
 
17
21
  MimeKit.MimeMessage message = new MimeKit.MimeMessage();
@@ -210,6 +214,14 @@
210
214
 
211
215
  }
212
216
 
217
+
218
+
219
+ if (errMessage != "") { return false; }
220
+
221
+ return true;
222
+
223
+ }
224
+
213
225
  ```
214
226
 
215
227
 

1

不足情報の追加

2020/12/11 07:10

投稿

ohno1011
ohno1011

スコア14

test CHANGED
File without changes
test CHANGED
@@ -6,104 +6,252 @@
6
6
 
7
7
 
8
8
 
9
+
10
+
11
+ **clsSendMail.cs**
12
+
9
13
  ```C#
10
14
 
11
-
12
-
15
+
16
+
13
- MimeKit.MimeMessage message = new MimeKit.MimeMessage();
17
+ MimeKit.MimeMessage message = new MimeKit.MimeMessage();
18
+
19
+
20
+
14
-
21
+ //送付先の設定
22
+
15
-
23
+ message.From.Add(new MimeKit.MailboxAddress("送信者名", "送信者アドレス"));
24
+
16
-
25
+ message.To.Add(new MimeKit.MailboxAddress("宛先名", "宛先アドレス"));
26
+
27
+ message.Subject = "件名";
28
+
29
+
30
+
31
+ string strText = "本文";
32
+
33
+ var textPart = new MimeKit.TextPart(MimeKit.Text.TextFormat.Plain);
34
+
35
+ textPart.Text = strText;
36
+
37
+
38
+
39
+ //添付ファイルを取得
40
+
41
+ string FolderPath = "添付するファイルの保存ディレクトリ";
42
+
43
+ string FilePath = string.Empty;
44
+
45
+
46
+
47
+ DirectoryInfo di = new DirectoryInfo(FolderPath);
48
+
49
+ IEnumerable<DirectoryInfo> subFolders = di.EnumerateDirectories("*", SearchOption.AllDirectories);
50
+
51
+
52
+
53
+ foreach (DirectoryInfo FolderName in subFolders)
54
+
55
+ {
56
+
57
+ if (cc.LeftByte(FolderName.Name, 3) == "宛先コード")
58
+
59
+ {
60
+
61
+ FilePath = FolderPath + FolderName + @"\";
62
+
63
+ break;
64
+
65
+ }
66
+
67
+ }
68
+
69
+
70
+
71
+ string[] FileNames = Directory.GetFiles(FilePath, "*", SearchOption.TopDirectoryOnly);
72
+
73
+ string[] Name = new string[9] { "", "", "", "", "", "", "", "", "" };
74
+
75
+ int intCnt = 0;
76
+
77
+ foreach (string FileName in FileNames)
78
+
79
+ {
80
+
81
+ Name[intCnt] = cc.NullChecks(FileName); //宛先のフォルダ内にあるファイルを全て取得
82
+
83
+ intCnt++; //取得したファイルの数をカウント
84
+
85
+ }
86
+
87
+
88
+
17
-       //-----------------------------
89
+ //ファイルを添付(最大9個まで)
90
+
18
-
91
+ var attachment1 = new MimeKit.MimePart();
92
+
93
+ var attachment2 = new MimeKit.MimePart();
94
+
95
+ var attachment3 = new MimeKit.MimePart();
96
+
97
+ var attachment4 = new MimeKit.MimePart();
98
+
99
+ var attachment5 = new MimeKit.MimePart();
100
+
101
+ var attachment6 = new MimeKit.MimePart();
102
+
103
+ var attachment7 = new MimeKit.MimePart();
104
+
105
+ var attachment8 = new MimeKit.MimePart();
106
+
107
+ var attachment9 = new MimeKit.MimePart();
108
+
109
+
110
+
111
+ MimeKit.MimePart[] attachments = new MimeKit.MimePart[9]
112
+
113
+ { attachment1,attachment2,attachment3,attachment4,attachment5,
114
+
115
+ attachment6,attachment7,attachment8,attachment9};
116
+
117
+
118
+
19
- //message に対して各partの設定
119
+ //ファイルの件数分、添付ファイルのpartを作成
20
-
120
+
21
- //-----------------------------
121
+ for (int i = 0; i < Name.Length; i++)
122
+
22
-
123
+ {
124
+
23
-
125
+ if (Name[i] != "")
126
+
24
-
127
+ {
128
+
25
- using (var client = new MailKit.Net.Smtp.SmtpClient())
129
+ attachments[i] = new MimeKit.MimePart()
26
130
 
27
131
  {
28
132
 
133
+ Content = new MimeKit.MimeContent(File.OpenRead(Name[i])),
134
+
135
+ ContentDisposition = new MimeKit.ContentDisposition(),
136
+
137
+ ContentTransferEncoding = MimeKit.ContentEncoding.Base64,
138
+
139
+ FileName = Path.GetFileName(Name[i])
140
+
141
+ };
142
+
143
+ }
144
+
145
+ }
146
+
147
+
148
+
149
+ var multiPart = new MimeKit.Multipart("mixed");
150
+
151
+ multiPart.Add(textPart);
152
+
153
+ for (int i = 0; i < intCnt; i++)
154
+
155
+ {
156
+
157
+ multiPart.Add(attachments[i]);
158
+
159
+ }
160
+
161
+
162
+
163
+ //MimeMessageを完成させる
164
+
165
+ message.Body = multiPart;
166
+
167
+
168
+
169
+ //SMTPサーバーに接続してメールを送信する
170
+
171
+ using (var client = new MailKit.Net.Smtp.SmtpClient())
172
+
173
+ {
174
+
29
- try
175
+ try
176
+
177
+ {
178
+
179
+ client.Connect(SmtpServer, SmtpPort);
180
+
181
+ Console.WriteLine("接続完了");
182
+
183
+
184
+
185
+ client.Authenticate(MailAddress, Password);
186
+
187
+ Console.WriteLine("認証完了");
188
+
189
+
190
+
191
+ client.Send(message);
192
+
193
+ Console.WriteLine("送信完了");
194
+
195
+
196
+
197
+ client.Disconnect(true);
198
+
199
+ Console.WriteLine("切断");
200
+
201
+ }
202
+
203
+ catch (Exception ex)
204
+
205
+ {
206
+
207
+ errMessage = ex.ToString();
208
+
209
+ }
210
+
211
+ }
212
+
213
+ ```
214
+
215
+
216
+
217
+ その後、ファイルを含むフォルダ削除の処理
218
+
219
+
220
+
221
+ **Form1.cs**
222
+
223
+ ```C#
224
+
225
+ try
226
+
227
+ {
228
+
229
+ DirectoryInfo target = new DirectoryInfo(Path);
230
+
231
+ foreach (DirectoryInfo dir in target.GetDirectories())
30
232
 
31
233
  {
32
234
 
33
- client.Connect(iSmtpServer, iSmtpPort);
34
-
35
- Console.WriteLine("接続完了");
36
-
37
-
38
-
39
- client.Authenticate(MailAddress, Password);
40
-
41
- Console.WriteLine("認証完了");
42
-
43
-
44
-
45
- client.Send(message);
46
-
47
- Console.WriteLine("送信完了");
48
-
49
-
50
-
51
- client.Disconnect(true);
235
+ dir.Delete(true); ---☆
52
-
53
- Console.WriteLine("切断");
54
236
 
55
237
  }
56
238
 
57
- catch (Exception ex)
239
+ return true;
58
-
59
- {
60
-
61
- errMessage = ex.ToString();
62
-
63
- }
64
240
 
65
241
  }
66
242
 
243
+ catch(Exception ex)
244
+
245
+ {
246
+
247
+ errMessage = "ローカルの送信用フォルダ削除に失敗しました。";
248
+
249
+ return false;
250
+
251
+ }
252
+
67
253
  ```
68
254
 
69
-
70
-
71
- その後、ファイル削除の処理
72
-
73
-
74
-
75
- ```C#
76
-
77
- try
78
-
79
- {
80
-
81
- DirectoryInfo target = new DirectoryInfo(PATH);
82
-
83
- foreach (DirectoryInfo dir in target.GetDirectories())
84
-
85
- {
86
-
87
- dir.Delete(true); ---☆
88
-
89
- }
90
-
91
- return true;
92
-
93
- }
94
-
95
- catch(Exception ex)
96
-
97
- {
98
-
99
- errMessage = "ローカルの送信用フォルダ削除に失敗しました。";
100
-
101
- return false;
102
-
103
- }
104
-
105
- ```
106
-
107
255
  ☆の処理で
108
256
 
109
257
  System.IO.IOException: 別のプロセスで使用されているため、プロセスはファイル '〇〇〇.pdf' にアクセスできません。
@@ -114,7 +262,15 @@
114
262
 
115
263
  メール送信先を複数選択することができ、その場合は全てにメール送信をした後にローカルのファイルをまとめて削除しています。
116
264
 
117
- 添付ファイルは送信先ごとにそれぞれ別で存在しています。
265
+ 添付ファイル、添付ファイルの保存フォルダ先ごとにそれぞれ別で存在しています。
266
+
267
+ フォルダ1\001_A社\A社.pdf
268
+
269
+ フォルダ1\002_B社\B社.pdf
270
+
271
+ フォルダ1\003_C社\C社.pdf
272
+
273
+ といった感じです。
118
274
 
119
275
 
120
276