public void Receive(string uploadingPath) { if(string.IsNullOrEmpty(uploadingPath)) throw new ArgumentNullException("uploadingPath"); if(!Directory.Exists(uploadingPath)) throw new ArgumentException("一時保存用のフォルダがありません", "uploadingPath"); // 受信してファイルに保存後、DBにメタ情報を登録 using(var pop3 = new Pop3()) { var connected = pop3.Connect(_server, _port, _secure); if(!connected.Successed) return; var loggedIn = pop3.Login(_userName, _password); if(!loggedIn.Successed) return; var received = pop3.GetMessageItems(); if(!received.Successed) return; foreach (var item in received.Items) { InternalReceive(uploadingPath, pop3, item); } // 削除の確定 pop3.CommandQuit(); } }
public void テキスト添付のみ() { Pop3.TransportFactory = () => new FakeTransport("TextOnlyAttatch"); Response response; string mailBody; using (var pop3 = new Pop3()) { response = pop3.CommandRetr(0); var message = response.Message.Multiparts.First().Body; mailBody = Mime.DecodeString(message.Encoding, message.Charset, message.BodySource); Console.WriteLine(mailBody); } Assert.IsTrue(response.Successed); Assert.IsTrue(mailBody.Contains("添付テキストのテスト")); }
public void テキストとテキスト添付() { Pop3.TransportFactory = () => new FakeTransport("TextAndTextAttatch"); Response response; string mailBody; string text; using (var pop3 = new Pop3()) { response = pop3.CommandRetr(0); var message = response.Message.FirstTextPlainMultipart(); text = Mime.DecodeString(message.Encoding, message.Charset, message.BodySource); message = response.Message.Multiparts.First(m=>m.IsAttachment).Body; mailBody = Mime.DecodeString(message.Encoding, message.Charset, message.BodySource); Console.WriteLine(mailBody); } Assert.IsTrue(response.Successed); Assert.IsTrue(text.Contains("本文もあるよ。")); Assert.IsTrue(mailBody.Contains("添付テキストのテスト")); }
private void InternalReceive(string uploadingPath, Pop3 pop3, MessageItem item) { Trace.WriteLine(string.Format(" retr mail {0} : {1}", item.No, DateTime.Now)); var message = pop3.CommandRetr(item.No); var delete = true; if (message.Successed) { var subject = "メール投稿 " + message.Message.Header("Subject"); var sender = message.Message.Header("From"); var senderHash = PhotosService.GetStringHash(sender); var messageId = message.Message.Header("Message-ID"); var textPart = message.Message.FirstTextPlainMultipart(); var text = textPart != null ? Mime.DecodeString(textPart.Encoding, textPart.Charset, textPart.BodySource).Trim() : ""; var description = text; if (_repository.GetPhoto(messageId) == null) { var images = message.Message .Multiparts .Where(m => m.Body.ContentType.StartsWith("image/")); Trace.WriteLine(string.Format(" save photos {0}({1}) : {2}", item.No, images.Count(), DateTime.Now)); foreach (var image in images) { var ext = ImageResizer.GetMimeToExtension(image.Body.ContentType); var photo = InternalSaveMultipart(uploadingPath, image, string.Format("original.{0}", ext)); photo.ImportTags(Tag.ToTags(subject.Split(' '))); photo.MessageId = messageId; photo.Description = description; // メールアドレスを削除コードにする。 photo.DeleteCode = senderHash; photo.Sender = senderHash; _repository.Append(photo); _repository.SaveChanges(); } } else { // 他のホストで取り出し中のはず delete = false; } } if (delete) pop3.CommandDele(item.No); Trace.WriteLine(string.Format(" dele mail {0} : {1}", item.No, DateTime.Now)); }
public void 画像添付() { Pop3.TransportFactory = () => new FakeTransport("ImageAttatch"); Response response; Message message; using (var pop3 = new Pop3()) { response = pop3.CommandRetr(0); message = response.Message.Multiparts.First(m => m.IsAttachment && !m.IsTextPlain).Body; Console.WriteLine(message.Source); } Assert.IsTrue(message.ContentType.StartsWith("image/jpeg")); Assert.IsTrue(response.Successed); }
public void 全メール削除() { Response response; using (var pop3 = new Pop3()) { pop3.Connect(_server, _port, _secure); pop3.Login(_userName, _password); response = pop3.GetMessageItems(); // 全部消す foreach (var item in response.Items.Where(i => i.No > TestMailMaxNo)) { pop3.CommandDele(item.No); } pop3.CommandQuit(); } }
private Response InternalMailRequest(int mailNo) { using (var pop3 = new Pop3()) { var response = pop3.Connect(_server, _port, _secure); Console.WriteLine(response.Trace); response = pop3.Login(_userName, _password); Console.WriteLine(response.Trace); response = pop3.CommandRetr(mailNo); Assert.IsTrue(response.Successed); return response; } }
public void ログイン() { Response response; using (var pop3 = new Pop3()) { response = pop3.Connect(_server, _port, _secure); Console.WriteLine(response.Trace); response = pop3.Login(_userName, _password); Console.WriteLine(response.Trace); } Assert.IsTrue(response.Successed); }
public void メッセージ一覧を取得() { SendTestMail(_userName); Response response; using (var pop3 = new Pop3()) { response = pop3.Connect(_server, _port, _secure); Console.WriteLine(response.Trace); response = pop3.Login(_userName, _password); Console.WriteLine(response.Trace); response = pop3.GetMessageItems(); Console.WriteLine(response.Trace); Console.WriteLine(response.Items.Count + " messages"); } Assert.IsTrue(response.Successed); Assert.IsTrue(response.Items.Any()); }
public void メッセージを取得() { SendTestMail(_userName); Response response; using (var pop3 = new Pop3()) { response = pop3.Connect(_server, _port, _secure); Console.WriteLine(response.Trace); response = pop3.Login(_userName, _password); Console.WriteLine(response.Trace); response = pop3.GetMessageItems(); Console.WriteLine(response.Trace); if (response.Items.Any()) { var messageNo = response.Items.First().No; response = pop3.CommandRetr(messageNo); Console.WriteLine(response.Trace); Console.WriteLine(response.Message.Source); } } Assert.IsTrue(response.Successed); }
public void メッセージを削除() { SendTestMail(_userName); Response response; using (var pop3 = new Pop3()) { response = pop3.Connect(_server, _port, _secure); Console.WriteLine(response.Trace); response = pop3.Login(_userName, _password); Console.WriteLine(response.Trace); response = pop3.GetMessageItems(); Console.WriteLine(response.Trace); Console.WriteLine(response.Items.Count + " messages"); // 全部消す foreach (var item in response.Items.Where(i => i.No > TestMailMaxNo)) { response = pop3.CommandDele(item.No); Assert.IsTrue(response.Successed); Console.WriteLine(response.Trace); } response = pop3.CommandQuit(); Console.WriteLine(response.Trace); } Assert.IsTrue(response.Successed); }
public void サーバーに接続() { Response response; using (var pop3 = new Pop3()) { response = pop3.Connect(_server, _port, _secure); Console.WriteLine(response.Trace); } Assert.IsTrue(response.Successed); }