コード例 #1
0
ファイル: FakePop3Test.cs プロジェクト: takepara/MvcPhotos
        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("添付テキストのテスト"));
        }
コード例 #2
0
ファイル: FakePop3Test.cs プロジェクト: takepara/MvcPhotos
        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("添付テキストのテスト"));
        }
コード例 #3
0
ファイル: MailService.cs プロジェクト: takepara/MvcPhotos
        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));
        }
コード例 #4
0
ファイル: FakePop3Test.cs プロジェクト: takepara/MvcPhotos
        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);
        }
コード例 #5
0
ファイル: RealPop3Test.cs プロジェクト: takepara/MvcPhotos
        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;
            }
        }
コード例 #6
0
ファイル: RealPop3Test.cs プロジェクト: takepara/MvcPhotos
        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);
        }