Lựa chọn dịch vụ thư nào. Thu thập thư từ các hộp thư khác nhau trên một tài khoản Gmail

Chuyển từ tab này bằng Gmail sang tab khác bằng Yandex.Mail khá tẻ nhạt. Và nếu bạn có hàng tá tài khoản với các nhà cung cấp email khác nhau, việc kiểm tra thư mới vào buổi sáng sẽ trở thành một cực hình. Bằng cách kết hợp các chữ cái ở một nơi, bạn sẽ thoát khỏi sự bất tiện này.

giao diện web

Hầu hết các nhà cung cấp email đều cung cấp tính năng tích hợp sẵn để thu thập email từ nhiều hộp thư. Ví dụ: hãy thử thu thập thư từ tất cả các hộp thư của bạn vào một tài khoản Gmail.

Trước hết, hãy đảm bảo rằng dịch vụ bưu chính mà bạn muốn nhận thư có quyền truy cập POP. Sau đó đi tới cài đặt Gmail của bạn và nhấp vào Cài đặt ở góc trên cùng bên phải. Chuyển đến tab “Tài khoản” và tìm phần “Nhận thư từ các tài khoản khác”.

Thêm tài khoản, nhập địa chỉ email của bạn và nhấp vào Tiếp theo, sau đó nhập mật khẩu của bạn. Để làm cho việc trao đổi thư giữa các nhà cung cấp trở nên an toàn hơn, hãy đảm bảo rằng tùy chọn “Luôn sử dụng kết nối an toàn (SSL) khi nhận thư” được bật. Sau đó bấm vào “Thêm tài khoản”.

Giờ đây, những bức thư gửi đến địa chỉ đã thêm sẽ được tự động thu thập trong Hộp thư đến Gmail của bạn. Bạn có thể thêm bao nhiêu địa chỉ gửi thư tùy thích.

Máy khách để bàn

Email cần phần mềm. Có, bạn có thể làm được nhiều việc trong ứng dụng thư trên web (đôi khi nhiều hơn những gì Google hiện cho phép bạn làm trong Gmail). Nhưng giao diện web không thể so sánh với ứng dụng gốc. Ngay cả giao diện người dùng Web hiện đại nhất cũng gặp trở ngại khi làm việc với thư.

Rafe Needleman, Сnet.com

Ứng dụng email trên máy tính để bàn rất tốt vì chúng có thể tổng hợp email từ nhiều tài khoản. Đồng thời, bạn có thể làm việc với hàng tá địa chỉ và thậm chí không cần suy nghĩ xem nhà cung cấp nào lưu trữ tin nhắn này hay tin nhắn kia.

Hầu hết các ứng dụng email trên máy tính để bàn đều có Hộp thư đến chung được tích hợp sẵn. Ngay cả khi ứng dụng khách yêu thích của bạn chỉ hỗ trợ các hộp thư đến riêng lẻ, bạn vẫn có thể dễ dàng tập hợp chúng lại với nhau bằng các bộ lọc thông minh.

Mặc dù Outlook được thiết kế để quản lý nhiều hộp thư cùng lúc nhưng nó vẫn hiển thị Hộp thư đến riêng cho từng tài khoản. Nhưng điều này có thể dễ dàng khắc phục bằng cách sử dụng các bộ lọc.

Mở Outlook, chuyển đến tab Thư mục và nhấp vào Thư mục Tìm kiếm Mới trên thanh công cụ. Sau đó chọn "Tạo thư mục tìm kiếm tùy chỉnh." Bấm Chọn nhưng không chọn bất kỳ tiêu chí tìm kiếm nào để tất cả tin nhắn mới được gửi vào thư mục. Đặt tên cho thư mục theo bất kỳ tên nào bạn thích, chẳng hạn như “All Mail”.

Nhấp vào “Duyệt qua”, chọn tất cả các thư mục và hộp thư mà bạn muốn thu thập thư và chọn tùy chọn “Tìm kiếm trong thư mục con”.

Bây giờ thư mục thông minh bạn đã tạo sẽ chứa email từ tất cả tài khoản email bạn đã thêm vào Outlook. Bạn có thể bật tùy chọn “Hiển thị trong Mục ưa thích” để thư mới của bạn luôn hiển thị.

Ứng dụng email khách Mac cung cấp một hộp thư đến duy nhất cho tất cả các tài khoản được kết nối. Chỉ cần thêm tài khoản của bạn và tất cả các chữ cái mới sẽ được thu thập ở một nơi.

Trong Thunderbird, việc thu thập tất cả email của bạn vào một hộp thư đến thật dễ dàng. Vào menu View (nếu thanh menu không hiển thị thì nhấn Alt). Sau đó chọn “Thư mục” → “Đã hợp nhất”. Bây giờ bạn sẽ có một Hộp thư đến dành cho email mới, một thư mục Thư nháp, một thư mục Mục đã gửi và một thư mục Lưu trữ. Bạn sẽ không phải tìm kiếm lâu để tìm hiểu những gì ở đâu. Trong trường hợp này, tin nhắn sẽ, như trước đây, được lưu trữ trên máy chủ của nhà cung cấp dịch vụ thư của bạn.

Khách hàng di động

Hộp thư đến hợp nhất có sẵn trong nhiều ứng dụng email dành cho thiết bị di động, bao gồm cả Gmail. Ứng dụng Gmail thu thập hộp thư đến của bạn từ tất cả các tài khoản email, bao gồm Yahoo, Outlook hoặc các dịch vụ khác.

Nếu không thích ứng dụng của Google, bạn có thể dùng thử ứng dụng email khách của bên thứ ba như Outlook hoặc MyMail.

Có thể bạn có ý tưởng riêng về cách nhóm thư ở một nơi? Chia sẻ trong các ý kiến.

Hướng dẫn

Đăng nhập vào tài khoản của bạn bằng cách nhấp vào liên kết sau http://gmail.com và nhập tên người dùng và mật khẩu của bạn.

Nhấp vào biểu tượng bánh răng ở góc trên cùng bên phải của Tài khoản & Nhập. Sau đó đi tới khối “Gửi email dưới dạng” và nhấp vào liên kết “Thêm địa chỉ email khác của bạn”.

Trong cửa sổ mới bật lên, hãy nhập họ và tên mà email được thêm vào đã đăng ký, cũng như địa chỉ email. Nhấp vào nút “Giai đoạn tiếp theo”.

Tiếp theo, trên màn hình sẽ xuất hiện yêu cầu hỏi cách gửi thư khi sử dụng địa chỉ này - sử dụng dịch vụ Gmail hoặc giao diện thư từ QIP. Nên chỉ định Gmail, có ít cài đặt hơn nên sẽ tốn ít thời gian hơn. Nhấp vào nút "Hành động tiếp theo".

Cửa sổ tiếp theo thông báo cho bạn rằng sau khi nhấp vào nút “Gửi xác nhận”, bạn sẽ cần kiểm tra e-mail được chỉ định để Gmail chắc chắn rằng địa chỉ e-mail đó thực sự tồn tại. Nhấp vào nút và mở hộp thư của bạn trong tab mới.

Xem lại các email chưa đọc của bạn và mở email có tiêu đề “Xác nhận Gmail”. Nhấp vào liên kết để xác nhận sự tồn tại của địa chỉ email này hoặc sao chép mã.

Nếu bạn đã sao chép mã, hãy dán mã đó vào trường trống của cửa sổ "Thêm mã khác..." và nhấp vào nút "Xác minh". Sau một thời gian, cửa sổ này sẽ tự động đóng và một e-mail mới sẽ xuất hiện trong danh sách “Gửi email bằng địa chỉ”.

Bây giờ, theo cách tương tự như mô tả, bạn cần thêm địa chỉ mới vào khối “Thu thập thư từ các tài khoản khác”. Để thực hiện việc này, hãy nhấp vào liên kết “Thêm tài khoản email POP3 của bạn”.

Trong cửa sổ mới bật lên, hãy nhập địa chỉ email của bạn. Nhấp vào nút "Hành động tiếp theo". Trong cửa sổ tiếp theo, bạn phải nhập mật khẩu và kích hoạt các tùy chọn “Luôn sử dụng kết nối an toàn” và “Gán nhãn cho email đến”. Sau đó nhấp vào nút “Thêm tài khoản”. Sau một thời gian, cửa sổ này sẽ tự động đóng và một e-mail mới sẽ xuất hiện trong danh sách “Thu thập thư từ các tài khoản khác”.

E-mail đã trở thành một phần không thể thiếu trong cuộc sống của người dùng Internet. Có rất nhiều tài nguyên cung cấp hộp thư. Thường thì bạn cần phải kiểm tra sự tồn tại hộp, độ tin cậy của nó. Nếu bạn cần tìm hiểu về tính xác thực của một địa chỉ email thì không có gì khó khăn cả.

Hướng dẫn

Đăng ký một địa chỉ email có cùng tên nếu bạn quan tâm đến một email được tạo trên một số tài nguyên miễn phí. Một email hiện có trước đó không thể được đăng ký lại. Tất cả các máy chủ thư đã biết đều được cung cấp hệ thống thông báo trả lại. Trong trường hợp này, bạn sẽ nhận được thông báo lỗi cho biết rằng không thể đăng ký thêm.

Hãy thử viết một lá thư từ một địa chỉ email có sẵn cho bạn. hộp tới e-mail mong muốn. Tin nhắn có thể có hoặc không có văn bản. Gửi nó và kiểm tra e-mail của bạn sau một thời gian để tìm những bức thư nhận được. Nếu bạn được thông báo rằng thư của bạn không đến được địa chỉ mong muốn thì thư này có thể không tồn tại.

Đăng ký vào mạng “Thế giới của tôi”. Đây là mạng xã hội trên RuNet nơi nhiều người dùng giao tiếp. Sử dụng tìm kiếm tài khoản của người dùng khác. Nhập e-mail mong muốn vào thanh tìm kiếm, nằm ở góc bên phải trên đầu trang của trang web. Bạn có thể nhấp vào nút “Mọi người”. Bạn sẽ được đưa đến tìm kiếm tài khoản dựa trên nhiều tiêu chí khác nhau. Chỉ cần nhập e-mail mà bạn quan tâm vào trường mà bạn sẽ thấy có tên là “Tìm kiếm”. Bạn phải bấm vào “Tìm”. Nếu địa chỉ gửi thư chính xác, bạn sẽ thấy thông tin về chủ sở hữu của thư.

Nếu bạn có hộp thư trên các dịch vụ email khác, hãy thiết lập trình thu thập thư để tất cả thông tin đều ở một nơi.

Để bộ sưu tập hoạt động chính xác, bạn chỉ phải định cấu hình nó trong tài khoản Mail.Ru của mình. Đảm bảo bạn đã đăng nhập vào tài khoản Mail.Ru trước khi bắt đầu thu thập email từ các dịch vụ email khác.

Để thêm một hộp:

  1. Nhấp vào logo của dịch vụ nơi đặt hộp của bạn. Nếu dịch vụ của bạn không có trong danh sách, hãy nhấp vào “Thư khác”.
  2. Nhập tên hộp thư và mật khẩu, nhấp vào “Thêm”. Nếu bạn thấy thông báo lỗi, hãy kiểm tra xem dữ liệu bạn đã nhập có chính xác không và thử lại. Nếu dữ liệu được nhập chính xác, bạn sẽ nhận được xác nhận và có thể tiếp tục thiết lập trình thu thập thư.

Tùy thuộc vào giao thức nào được hỗ trợ bởi dịch vụ chứa hộp thư, cài đặt có thể khác nhau:

IMAP

  1. Chỉ định thư mục bạn muốn chuyển email đến và nhấp vào “Lưu”.
  2. Nếu bạn có các thư mục cá nhân trong hộp thư mà bạn sẽ thu thập thư từ đó, chúng sẽ được lồng vào thư mục đã chọn.

Các thư mục hệ thống cũng được đồng bộ hóa: “Bản nháp”, “Mục đã gửi”, “Thư rác” và “Thùng rác”. Nếu bạn định nhập email từ hộp thư của bên thứ ba vào Hộp thư đến của mình, hãy chỉ định xem bạn có muốn áp dụng các bộ lọc được định cấu hình trong hộp thư hiện tại cho các email đến hay không.

Nếu bộ sưu tập thư được định cấu hình bằng giao thức IMAP, bạn sẽ có thể trả lời các thư từ hộp thư mà thư được gửi đến.

POP3

  1. Chọn hộp kiểm “Tất cả thư” để nhập tất cả thư từ hộp thư. Nếu bạn muốn đánh dấu tất cả các email đã nhập là đã đọc, hãy chọn hộp kiểm “Đánh dấu tất cả các email cũ là đã đọc”.
  2. Chọn thư mục bạn muốn đặt email từ hộp thư này. Nếu bạn muốn tạo thư mục mới, hãy chọn hộp bên cạnh danh sách thả xuống và nhập tên thư mục.
  3. Để áp dụng các bộ lọc được định cấu hình trong hộp thư cho các thư từ các máy chủ khác, hãy chọn hộp bên cạnh “Áp dụng bộ lọc cho các thư đã nhận”.
  4. Nhấp vào để lưu".

Bằng cách này, bạn có thể chỉ định tối đa 9 hộp thư mà thư sẽ được thu thập. Để tắt tính năng thu thập thư, hãy đặt công tắc sang vị trí TẮT. Nếu bạn muốn chỉnh sửa cài đặt, hãy nhấp vào "Chỉnh sửa". Để tháo vòi, hãy nhấp vào Xóa.

Bài viết này sẽ nói về “thư từ các hộp thư khác” và “thu thập thư từ các tài khoản khác” là gì. Đánh giá và so sánh dịch vụ email.

Khi chúng tôi cập nhật chức năng của dịch vụ email, chúng tôi sẽ đăng tin tức ở cuối bài viết này.

Dịch vụ thư Mail.ru, công cụ tìm kiếm Yandex và Google đã cung cấp chức năng rất hữu ích và cần thiết trong vài năm nay, cho phép bạn kết hợp tất cả các tài khoản e-mail khác trong một thư. Nói cách khác, bạn chỉ cần thêm và định cấu hình tất cả “thư” của mình một lần và có thể quản lý chúng trong một cửa sổ mà không cần liên tục nhập thông tin đăng nhập và mật khẩu.

Dịch vụ thư cung cấp cho chúng ta một không gian rộng lớn để lưu trữ tất cả các thư đến, giao diện thuận tiện, chức năng quản lý tốt và hơn thế nữa. Để kiểm tra khả năng của các dịch vụ email được liệt kê, chúng tôi sẽ nêu bật ba thông số để đánh giá hiệu suất của chúng: 1) cần quản lý nhiều tài khoản email khác nhau, bao gồm từ nhiều dịch vụ và trang web khác nhau, thông qua một ứng dụng email; 2) có chữ ký và tên riêng cho từng thư; 3) xóa thư khỏi máy chủ của các tài khoản thư đã được thêm vào mail, yandex hoặc google mail.

Nhiệm vụ của chúng tôi trông như thế này:

Vậy hãy bắt đầu. Dịch vụ đầu tiên được thử nghiệm là dịch vụ từ Mail.ru, dịch vụ này cho chúng tôi biết: “Bạn có thể thu thập thư từ tất cả các hộp thư của mình vào một hộp thư trên Mail.ru.

Thiết lập bộ sưu tập thư từ bất kỳ máy chủ nào chạy giao thức IMAP hoặc POP3." Để thêm thư bên ngoài không phải @mail, @inbox, @list, @bk, bạn cần có ít nhất một thư đã tồn tại trên các máy chủ được liệt kê từ mail. Nói cách khác, hãy đăng ký thư của bạn trước, sau đó thêm các tài khoản thư khác. Quá trình đăng ký thư rất đơn giản, không có ích gì khi mô tả nó, nhưng chúng tôi sẽ mô tả việc thêm các e-mail khác vào tài khoản thư này.


Tiếp theo, bạn sẽ được yêu cầu nhập thông tin đăng nhập và mật khẩu cho bất kỳ hộp thư nào bạn sử dụng và trong vòng 3-5 phút, “Mail Collector from mail” sẽ tạo một thư mục có tên của thư đã thêm bên cạnh “hộp thư đến”, “đã gửi”, “thư rác” và những thứ khác.


Trên thực tế, trình thu thập thư sẽ hoạt động trong vòng 10-15 phút và sẽ thêm tất cả các thư vào thư mục mới tạo từ hộp thư bạn đã chỉ định. Tất cả thư đến cho e-mail mới sẽ được gửi đến thư mục này và cũng có thể gửi thư từ hộp thư đính kèm. Khi tạo một bức thư mới, trường “Từ” sẽ xuất hiện, trong đó bạn có thể chọn hộp thư mà bức thư sẽ được gửi.


Ưu điểm của dịch vụ thư Mail.ru bao gồm dễ dàng thêm và dễ thiết lập các hộp thư khác và không cần chỉ định các giao thức khác nhau (POP3, SMTP). Điều này rất quan trọng vì không phải người dùng nào cũng biết nó là gì.

Nhược điểm của Mail.ru là không thể gán tên và chữ ký cho mỗi thư mới được thêm vào (bất kỳ e-mail mới nào ngoại trừ địa chỉ chính), nghĩa là tên và chữ ký của thư chính sẽ áp dụng cho từng địa chỉ và thế là xong. Một nhược điểm lớn nữa là khi tải thư lên mail, không có cách nào tự động xóa thư gốc khỏi máy chủ hộp thư đính kèm. Tại sao việc xóa email khỏi máy chủ của hộp thư đã thêm lại quan trọng đến vậy? Điều này sẽ tránh việc điền vào thư đính kèm, bởi vì... Tài khoản email bên ngoài thường quá nhỏ để lưu trữ email. Ví dụ: nếu dung lượng thư trong tài khoản bên ngoài của bạn đã đầy, Mail.ru sẽ không hiển thị bất kỳ thư mới nào cho đến khi bạn vào giao diện thư bên ngoài và xóa thư trực tiếp từ đó để giải phóng dung lượng. Ngoài ra, chúng tôi liên kết thư với Thư với hy vọng nhận được nhiều dung lượng lưu trữ cho thư của mình, dung lượng này có thể bị giới hạn do tài nguyên lưu trữ. Do đó, mặc dù Mail.ru cung cấp dung lượng hộp thư gần như không giới hạn, nhưng khi thêm thư từ một vùng miền khác (ví dụ: ), tài nguyên e-mail đã thêm của bạn sẽ không tăng trong Mail.ru mà sẽ tiếp tục bị giới hạn bởi tài nguyên lưu trữ (trong trường hợp của chúng tôi là tài nguyên Primer.ru).

Khả năng thêm một thư khác vào dịch vụ Thư không đáp ứng được nhiệm vụ của chúng tôi ở hai điểm trên ba, với tổng số là một điểm.


Đúng, Mail.ru có một cách khác để thêm thư bên ngoài, hay chính xác hơn là kết nối hoặc đăng nhập vào thư bên ngoài. Nó trông như thế này:


Phương pháp này không phù hợp với nhiệm vụ của chúng tôi, bởi vì Đây không phải là trình thu thập thư mà là chế độ người dùng kết nối với thư và tải tất cả các thư mục và thư vào giao diện thư mọi lúc. Nhưng ở đây có thể thêm chữ ký và tên cá nhân cho từng thư, có thể gửi thư từ thư đã định cấu hình. Xóa email khỏi hộp thư đã tải không hiệu quả vì... Đây không phải là một người thu thập thư.

Quan trọng! Một số người dùng lầm tưởng rằng nếu các chữ cái được hiển thị trong thư thì thư mà quá trình tải xuống đã xảy ra có thể bị xóa. Chúng tôi xin lưu ý một lần nữa rằng Mail.ru hoạt động như một trình xem thư và nếu bạn xóa thư của mình, nó sẽ bị xóa cả trong hộp thư chính và trong thư.

Đối tượng thử nghiệm thứ hai là Yandex với người thu thập thư của mình. Các tác vụ tương tự nhau: thu thập thư, gán chữ ký và tên cho từng thư, đồng thời xóa tất cả thư khỏi hộp thư đã thêm.

Trình thu thập thư Yandex được định cấu hình theo sơ đồ tương tự, nhưng nếu thư được kết nối từ một số trang web, chẳng hạn như site.ru, thì các cài đặt bổ sung sẽ cần được chỉ định, xem ảnh chụp màn hình.


Dịch vụ Thư đã thực hiện công việc này cho chúng tôi, nhưng Yandex đề nghị đặt thủ công tất cả cài đặt từ thư của bên thứ ba. Không có gì phức tạp ở đây: trong trường đăng nhập, chúng tôi nhập tên đầy đủ của thư (), trong trường máy chủ, chúng tôi chỉ nhập tên miền (site.ru), tốt hơn là để tất cả các cài đặt khác làm mặc định hoặc thay đổi chúng nếu bạn biết bạn đang làm gì. Sau khi thêm thư thành công sẽ xuất hiện thông báo sau:


Không giống như Trình thu thập Thư, Yandex cho phép bạn chọn có lưu các chữ cái gốc vào hộp thư đã thêm hay không. Về tất cả các khía cạnh khác, trình thu thập thư từ Yandex hoạt động theo cách tương tự như Mail.ru; bạn có thể chọn hộp thư để gửi thư. Nhưng Yandex cũng gặp vấn đề tương tự với việc ký các chữ cái: không thể đặt tên và chữ ký riêng cho từng hộp thư được thêm vào.


Đánh giá bằng cách điều hướng, có thể thêm chữ ký riêng cho từng hộp thư, nhưng thực tế nó không hoạt động. Chọn email của bạn, nhập tên và chữ ký của bạn và nhấp vào lưu. Thế là xong, chữ ký đã được lưu và hoạt động nhưng nó cũng được lưu cho tất cả các hộp thư khác, tức là bằng cách gán tên và chữ ký cho một hộp thư, bạn sẽ tự động thay đổi các tham số này trong tất cả các thư được kết hợp trong Yandex. Ngay cả khi bạn chọn bất kỳ ô nào khác, chữ ký bây giờ sẽ giống nhau ở mọi nơi.

Nhìn chung, Yandex đã xử lý thành công việc thu thập và sắp xếp thư, nó có thể xóa các chữ cái gốc khỏi hộp thư đã thêm nhưng không thể hoạt động với chữ ký! Trình thu thập email Yandex đã không thể hoàn thành nhiệm vụ của chúng tôi và ghi được hai trên ba điểm.


Tôi muốn lưu ý rằng, sau khi nghiên cứu kỹ cả ba dịch vụ ghép chữ, có vẻ như Mail đã cải tiến chức năng của nó. Mặc dù sẽ làm hài lòng hầu hết người dùng nhưng thành thật mà nói, Mail đã tạo ra một công cụ thu thập thư để trưng bày, để thể hiện trong cuộc đua cạnh tranh. Mọi thứ đều hoạt động tốt và không có lỗi, nhưng người thu thập từ Mail không thể hoàn thành nhiệm vụ của chúng tôi. Giao diện thư có một số khối quảng cáo nhưng chúng không ảnh hưởng đến việc làm việc với các chữ cái.

Đối với Yandex, công ty đã tạo ra trình thu thập thư từ lâu, có vẻ như ngành cụ thể này không được hỗ trợ, bởi vì việc sửa một chức năng đơn giản như vậy (khả năng thêm nhiều chữ ký cho hộp thư) sẽ không khó đối với một tìm kiếm mạnh mẽ như vậy. động cơ. Tuy nhiên, Yandex đã thêm một chức năng độc đáo khác cho phép bạn liên kết các miền với máy chủ DNS của họ, sau đó tạo và định cấu hình thư. Nhưng những hoạt động và cài đặt như vậy đòi hỏi kiến ​​thức và thời gian. Và mặc dù không có gì phức tạp ở đó, nhưng trong mọi trường hợp, nó không dành cho hầu hết người dùng RuNet. Lợi thế lớn- không có quảng cáo trong giao diện thư Yandex! Dấu trừ- giới hạn trong bộ thu thập thư ở 10 hộp thư.

Người vào chung kết và người chiến thắng là một người thu thập thư từ Google, người đã hoàn thành nhiệm vụ của chúng tôi một cách thành công, mặc dù giới hạn 5 hộp

Hôm nọ, phiên bản tiếp theo của Mail.Ru Mail đã được phát hành cho iPhone và iPad. Bản cập nhật chính là một, nhưng có ý nghĩa: đó là khả năng thu thập tất cả các hộp thư của người dùng ở một nơi, cụ thể là trong ứng dụng Mail.Ru Mail.

Tất cả thư ở một nơi. Hầu hết chúng ta đều có một số email - cho công việc, để đăng ký trên các diễn đàn khác nhau, các trang web phiếu giảm giá và cửa hàng trực tuyến, và cho tâm hồn (đọc - để liên lạc với bạn bè, người thân, v.v.). Trong phiên bản trước của ứng dụng Mail.Ru, các nhà phát triển đã thực hiện bước đầu tiên nhằm hợp lý hóa việc quản lý “sở thú” tài khoản: họ đã thêm hỗ trợ cho nhiều hộp thư.

Giờ đây, trong ứng dụng khách Mail.Ru Mail, bạn không chỉ có thể làm việc với các hộp thư trên dịch vụ này mà còn với các tài khoản Gmail, Rambler, Outlook và các nhà cung cấp khác hỗ trợ IMAP/POP3. Việc chuyển đổi giữa các hộp rất đơn giản - chỉ cần một cú nhấp chuột. Trong khi người dùng đang xem một tài khoản, những người khác đang kiên nhẫn chờ đến lượt mình.

Ứng dụng không sắp xếp lại thứ tự ở các ô khác nhau theo cách riêng. Trong mỗi tài khoản, bạn có thể tiếp tục tuân theo chính xác logic công việc mà bạn đã quen. Chẳng hạn, trong giao diện của ứng dụng Mail.Ru, tên và cấu trúc các thư mục, hộp kiểm và các cài đặt hộp thư khác trên Gmail sẽ vẫn được giữ nguyên như ở phiên bản lớn của Gmail. Ngoài ra, trong ứng dụng, bạn có thể định cấu hình riêng từng tài khoản: đặt chữ ký, bật hoặc tắt hiển thị biểu tượng, định cấu hình hoạt động của hệ thống thông báo đẩy.


Thông báo đẩy. Thông báo đẩy nâng cao xứng đáng được đề cập đặc biệt. Thứ nhất (và đây là một trong những phần thưởng chính của ứng dụng), chúng có thể được kích hoạt ngay cả đối với những tài khoản trên các dịch vụ không thể gửi đẩy.

Thứ hai, chúng có thể được cấu hình chính xác như bạn muốn, chỉ định chi tiết thời gian chúng sẽ đến và những gì cần báo cáo. Có thể đánh dấu theo tên những người nhận có tin nhắn mà bạn sẵn sàng đọc cả ngày lẫn đêm (ví dụ: thư của mẹ bạn) hoặc nghiêm ngặt từ 9 đến 19:00 (rất có thể đây sẽ là thư của khách hàng hoặc đồng nghiệp) . Bạn có thể bật hoặc tắt cảnh báo cho các tài khoản, thư mục hoặc người nhận cụ thể.

Các nhà phát triển đã cẩn thận cung cấp một nút cho phép bạn tắt ngay lập tức thông báo về thư từ mạng xã hội hoặc dịch vụ phiếu giảm giá. Bạn cũng có thể đặt nội dung của thông báo đẩy: bạn có thể muốn ẩn tên hoặc dòng chủ đề của người nhận vì lý do riêng tư.

Hành động nhanh chóng.Để thuận tiện làm việc với các chữ cái, ứng dụng có menu thao tác nhanh. Để gọi ra các nút thần kỳ này, bạn chỉ cần vuốt từ phải sang trái vào tin nhắn mong muốn trong danh sách chữ cái. Với sự trợ giúp của họ, bạn có thể xóa một lá thư, đánh dấu vào ô, chuyển nó sang thư mục khác, gửi nó vào thư rác, v.v. Tất cả các hành động được thực hiện trong một cú nhấp chuột.

Hình đại diện của người nhận và dịch vụ sẽ giúp bạn điều hướng thư của mình. Chúng hiển thị trong danh sách các chữ cái, khi đọc và viết thư, và như đã đề cập, trong các thông báo đẩy. Khi đọc và viết thư, người dùng sẽ nhìn thấy hình đại diện của người gửi hoặc người nhận, cũng như bản xem trước của tệp đính kèm. Nếu ảnh hoặc hình vẽ được đính kèm, hình thu nhỏ của hình ảnh sẽ được hiển thị. Nhân tiện, bạn có thể xem tệp đính kèm mà không cần rời khỏi máy tính tiền, tức là. ngay trong ứng dụng.

Bộ nhớ đệm. Bộ nhớ đệm sẽ rất hữu ích ở những nơi Internet không tốt lắm, chẳng hạn như trong tàu điện ngầm. Chủ sở hữu điện thoại thông minh có ứng dụng email Mail.Ru sẽ có thể đọc văn bản và xem ảnh ngay cả khi không có mạng.

Gợi ý.Ứng dụng sẽ nhắc bạn về email được yêu cầu, bạn nên nhập các chữ cái đầu tiên vào thanh địa chỉ (với điều kiện là bạn đã viết thư cho người nhận này ít nhất một lần - không quan trọng trong phiên bản chính của Mail hay trong ứng dụng). Ngoài ra, khách hàng, theo yêu cầu của bạn, sẽ thêm số liên lạc qua điện thoại vào danh sách người trả lời.

Hãy khách quan - ứng dụng email Mail.Ru được tạo ra để tồn tại lâu dài. Và nếu trước đó bạn sử dụng các cú đẩy phức tạp, thích hình đại diện trong danh sách các chữ cái, v.v. chỉ có thể thực hiện được nếu bạn có hộp thư trên Mail.Ru, giờ đây, người dùng cùng Mail.Ru sẽ có thể thu thập các hộp thư khác trong ứng dụng (và những người thích các dịch vụ khác ít nhất có thể kiểm tra ứng dụng khách).

Lần trước, tôi đã bắt đầu một loạt bài viết về việc thu thập thư từ nhiều hộp thư khác nhau, thậm chí được tạo trên các dịch vụ khác nhau, vào một hộp thư chính mà người dùng liên tục kiểm soát và sẽ dễ dàng hơn cho anh ta khi chỉ làm việc với một trong số chúng thay vì riêng lẻ. xem tất cả các hộp thư email của anh ấy. Đọc thêm về nhu cầu thu thập thư và việc triển khai nó trên dịch vụ GMail.

Tính đến nay tôi đang lên kế hoạch cho loạt bài này gồm 3 bài. Hôm nay tôi sẽ nói với bạn về cách thiết lập bộ sưu tập thư trong một dịch vụ thư nổi tiếng không kém - Yandex.

Việc thu thập thư từ các tài khoản khác trong Yandex được thiết lập dễ dàng như trong các dịch vụ khác.

Quá trình thiết lập bộ sưu tập thư trong dịch vụ Yandex.

Để cho phép khả năng thu thập tất cả thư trong hộp thư Yandex của bạn từ bất kỳ tài khoản nào của bạn trên cùng dịch vụ thư đó hoặc các dịch vụ thư khác, trước tiên hãy đăng nhập vào tài khoản Yandex của bạn, đây sẽ là tài khoản chính. Đây là nơi bạn sẽ thu thập thư từ các hộp thư khác.

Mở phần cài đặt thư và chọn “Thu thập thư từ các hộp thư khác”.

Bạn có thể thu thập thư từ bất kỳ hộp thư nào nằm trên bất kỳ dịch vụ thư nào và không chỉ từ các hộp thư của bạn nằm trên cùng một dịch vụ Yandex!

Ví dụ cho bài viết này sẽ hiển thị quá trình thu thập thư từ thư Mail.ru.

Nhập địa chỉ email đầy đủ mà bạn sẽ thu thập các chữ cái và mật khẩu từ đó, sau đó nhấp vào “Bật trình thu thập”.

Nếu bạn đã chỉ định thông tin đăng nhập và mật khẩu email chính xác, một thông báo cho biết kết nối thành công sẽ xuất hiện trong cửa sổ tiếp theo và tại đây bạn có thể thực hiện một số cài đặt để thu thập email. Ví dụ: bạn có thể gán nhãn cho các email đã thu thập và cũng có thể hiển thị các email cũ được chuyển tiếp dưới dạng đã đọc. Kiểm tra các tùy chọn bạn cần, sau đó nhập lại mật khẩu cho email thứ hai của bạn ở bên dưới và nhấp vào “Lưu thay đổi”. Thư sẽ bắt đầu được thu thập sau khoảng 10 phút.

Trong cửa sổ cài đặt này, bạn sẽ không thể chọn một thư mục riêng để thu thập thư từ hộp thư được kết nối. Ban đầu, thư mục “Hộp thư đến” sẽ được chỉ định và nó không thay đổi. Điều này là do thư ban đầu được thu thập bằng giao thức IMAP và giao thức này sao chép toàn bộ cấu trúc thư mục từ thư được kết nối của bạn.

Nếu có 2 tùy chọn để buộc thư đã thu thập được sắp xếp vào các thư mục:

    Thay đổi cài đặt thu thập thư và cài đặt giao thức POP3 thay vì IMAP (được đặt ban đầu);

    Thiết lập tính năng lọc thư sau, tức là tạo một điều kiện theo đó thư đã nhận sẽ nằm trong thư mục bạn cần, bỏ qua “Hộp thư đến”.

Tôi nghĩ tùy chọn thứ hai sẽ thích hợp hơn, đặc biệt là đối với người mới bắt đầu, để không phải loay hoay với các cài đặt kết nối với thư khác.

Bây giờ tất cả các thư đến thư được kết nối của bạn sẽ chuyển vào thư hiện tại, đây là thư chính của bạn. Và sau đó không cần phải vào riêng thư thứ hai để kiểm tra các chữ cái mới trong đó.

Làm cách nào tôi có thể xem riêng tất cả các bức thư được thu thập từ thư được kết nối?

Sau khi thêm thư, bạn sẽ thấy nhãn có tên ở bên trái trong thư mục thư. Ví dụ:

Bằng cách nhấp vào phím tắt này, bạn sẽ thấy riêng biệt tất cả các chữ cái từ hộp thư được kết nối.

Làm cách nào để thay đổi cài đặt hoặc tắt tính năng thu thập thư từ một hộp thư cụ thể?

Nếu bạn cần thay đổi bất kỳ điều gì trong cài đặt thu thập thư từ hộp thư đã thêm, bạn có thể thực hiện việc này trong cài đặt thư Yandex, thông qua phần “Thu thập thư từ các hộp thư khác”.

Nếu bạn cần tắt hoặc bật lại tính năng thu thập thư từ một hộp thư được kết nối cụ thể, hãy nhấp vào nút chuyển “Bật”. / Tắt." trong danh sách các hộp thư được kết nối.

Nếu bạn cần mở cài đặt thu thập thư, nhấp vào tên của hộp thư, sau đó nhấp vào liên kết “Định cấu hình” xuất hiện. Kết quả là cửa sổ cài đặt tương tự sẽ mở ra như khi kết nối thư ().

Phần kết luận.

Tóm lại, tôi muốn lưu ý rằng thông thường không có vấn đề gì khi thu thập email vào dịch vụ Yandex và bạn không cần phải định cấu hình bất cứ điều gì trong email thứ hai (mà bạn kết nối). Nhưng có một dịch vụ rất thất thường tên là GMail :) Khi kết nối với nó (và không chỉ với Yandex, mà ngay cả với chính bạn), các vấn đề thường phát sinh và điều này là do tính bảo mật của thư Google này được tăng cường. Không, tôi không tranh luận, an toàn là tốt! Nhưng đôi khi điều này đạt đến mức điên rồ, chẳng hạn như khi Gmail chặn kết nối đến hộp thư GMail thứ hai của chính nó và cả hai đều đăng nhập từ cùng một máy tính và cùng một IP :)) Tôi sẽ nói về các vấn đề tương tự khi kết nối Google mail trong một bài viết riêng.

Ngày nay đây có lẽ là những dịch vụ email phổ biến nhất. Và khi xem xét tài nguyên này hoặc tài nguyên kia, chúng tôi đã đồng ý một cách tình cờ rằng mỗi hộp thư có thể được kết nối với một địa chỉ email khác từ một dịch vụ khác.

Suy cho cùng, việc đến từng hộp thư và kiểm tra thư không phải lúc nào cũng thuận tiện. Do đó, để thuận tiện, khả năng thêm hộp thư vào địa chỉ hiện có đã được tạo. Sau đó tất cả thư sẽ được thu thập vào một nơi, trong một hộp thư. Hôm nay chúng ta sẽ học cách tổ chức việc thu thập thư từ các hộp thư khác.

Hãy bắt đầu với Mail ru

Cách thêm hộp thư vào Mail ru

Dịch vụ mail ru mail cung cấp khả năng thêm hộp thư của bên thứ ba vào hộp thư chính của bạn.

Để thêm hộp thư khác, hãy truy cập tài khoản mail ru mail chính của bạn và nhấp vào địa chỉ của bạn ở trên cùng bên phải

Và bấm vào nút “ để thêm hộp thư».

Sau khi nhập dữ liệu bấm vào " Để vào».

Do hành động của chúng tôi, một thư mục có tên và họ của chúng tôi đã xuất hiện và các bức thư từ thư Yandex sẽ được gửi đến đó. Và bạn sẽ không cần phải vào hộp thư Yandex của mình để kiểm tra thư mới nữa.

Bây giờ chúng ta sẽ làm điều gì đó tương tự trong thư Yandex.

Làm cách nào để thêm hộp thư vào Yandex?

Để thêm hộp thư từ một dịch vụ thư khác trong hệ thống Yandex, hãy đăng nhập vào tài khoản thư Yandex của bạn

Và nhấp vào biểu tượng bánh răng và chọn “ Thu thập thư từ các hộp thư khác».

Đi tới Cài đặt " Bộ sưu tập thư" Bây giờ chúng ta sẽ thêm một hộp thư từ mail ru. Nhập địa chỉ email của chúng tôi, mật khẩu của nó và nhấp vào “ Kích hoạt bộ sưu tập»

Ở giai đoạn tiếp theo, bạn có thể chỉ định nhãn cho các chữ cái từ Thư. Tất cả thư từ dịch vụ thư sẽ được gửi đến thư mục Hộp thư đến. Hãy để các email cũ được đánh dấu là đã đọc. Tiếp theo, nhập lại mật khẩu và nhấp vào “ Lưu thay đổi».

Vậy là xong, chúng ta đã kết nối thêm một hộp thư với thư Yandex. Nếu trong tương lai bạn không còn muốn nhận email từ hộp thư đã kết nối của mình nữa, bạn có thể tắt nó bất kỳ lúc nào.

Bạn có thể thêm các hộp khác theo cách tương tự.

Để chuyển đổi giữa các hộp chính và hộp bổ sung, hãy sử dụng menu chính, sau đó chọn hộp bạn cần.

Làm cách nào để thêm hộp thư vào Gmail?

Mail from Google còn cho phép bạn kết nối thêm 5 hộp thư nữa.

Và chọn mục ""

Chuyển đến tab " Tài khoản và nhập khẩu" và nhấp vào liên kết " Thêm tài khoản email»

Trong cửa sổ mới, nhập địa chỉ hộp thư mà chúng tôi sẽ thêm. Nhấp chuột " Hơn nữa».

Sau đó, lần lượt chỉ định mật khẩu cho hộp thư sẽ được thêm vào, sau đó thay đổi máy chủ POP thành pop3.thư. ru. Chọn hộp đảm bảo rằng bản sao của email đã nhận được lưu trên máy chủ. Đây sẽ là mạng lưới an toàn của bạn trong trường hợp có điều gì đó xảy ra với tài khoản Google của bạn; email của bạn sẽ được lưu trên máy chủ mail ru. Để dễ dàng nhận biết thư được gửi đến hộp thư nào, hãy thêm nhãn cho tất cả thư đến từ thư ru

Sau đó, nhấp vào “ Thêm tài khoản».

Trên trang tiếp theo, chúng tôi không thay đổi bất cứ điều gì như vậy, ngoại trừ bạn có thể đặt của riêng mình tên tài khoản. Nhập mật khẩu cho hộp thư của bạn và nhấp vào “ Thêm tài khoản».

Sau đó, một email có mã xác nhận sẽ được gửi đến hộp thư đã thêm của bạn. Bạn có thể xác nhận bằng hai cách: theo liên kết trong thư hoặc sao chép mã từ thư và dán vào trường. Nhấp chuột " Xác nhận».

Bây giờ các cài đặt đã thay đổi. Như bạn có thể thấy trong ảnh chụp màn hình bên dưới, địa chỉ email đã thêm của chúng tôi xuất hiện, địa chỉ này có thể được thay đổi hoặc xóa.

Bạn cũng có thể thiết lập hộp thư mặc định từ mail ru để gửi thư bằng cách nhấn vào link tương ứng.

Và bây giờ những bức thư từ hộp thư mail ru đã được gửi đến hộp thư từ Google thành công. Như bạn có thể thấy, tất cả các chữ cái đều được đánh dấu bằng nhãn mà chúng tôi đã chỉ định trong quá trình thêm hộp thư.

Và khi tạo một bức thư mới, bạn có thể chọn hộp thư mà bạn muốn gửi thư từ đó.

Bạn cũng có thể sử dụng các chương trình đặc biệt - ứng dụng email - để thu thập thư ở một nơi. Phổ biến nhất là " Con dơi" Nhưng chương trình này được trả tiền. Trong số những cái miễn phí - Mozilla Thunderbird. Đọc về điều đó trên trang web của chúng tôi.

Viết nhận xét cho dù bạn sử dụng ứng dụng email hay công cụ thu thập thư, như chúng tôi đã mô tả hôm nay.

Hãy để tôi kết thúc ở đây. Chúc may mắn và thành công cho tất cả các bạn!

Chúng ta không nên cố gắng đảm bảo rằng mọi người đều hiểu chúng ta, mà phải đảm bảo rằng không thể không hiểu chúng ta.

Tất nhiên, mọi thứ phải song song. Đây là nơi thư viện yêu thích của tôi, TPL DataFlow, phát huy tác dụng.

Chúng tôi sẽ thu thập thư qua POP3. Tất cả những “thứ thời thượng” của IMAP đều không cần thiết trong nhiệm vụ này - bạn cần lấy mã nguồn của bức thư càng nhanh và dễ dàng càng tốt và xóa nó trên máy chủ. POP3 ở đây là đủ cho mắt. Chúng tôi sử dụng OpenPop.NET.

Như một tùy chọn, hãy thêm tính năng giám sát vào Zabbix. (Chúng tôi sẽ làm việc 24/7 và cung cấp tốc độ được ca ngợi - chúng tôi cần chú ý đến điều này).

Đi

Hãy tạo một ứng dụng bảng điều khiển thông thường. Mở bảng điều khiển NuGet và cài đặt tất cả các gói cần thiết:

Gói cài đặt Nlog Gói cài đặt OpenPop.NET Gói cài đặt TopShelf Gói cài đặt Microsoft.TPL.DataFlow
Chuyển đến thư mục dự án, tạo App.Debug.config và App.Release.config. Chúng tôi dỡ dự án khỏi studio, mở mã của nó (Sau đây gọi là TopCrawler.csproj). Thêm vào phần config:

Cấu hình

Ứng dụng.config Ứng dụng.config


Và dưới đây là mục tiêu riêng của chúng tôi dành cho MSBuild:

Chuyển đổi mục tiêu

$(TargetFileName).config


Cá nhân tôi đã quen với việc thêm chuyển đổi cấu hình vào các môi trường riêng biệt theo cách chính xác này - cách cũ.
Để thuận tiện, tôi cung cấp cấu hình kiểu mạnh. Một lớp riêng biệt sẽ đọc cấu hình. (Bạn có thể thảo luận về các khía cạnh lý thuyết của giải pháp như vậy trong phần bình luận). Cấu hình, nhật ký, giám sát là lý do tuyệt vời để triển khai mẫu Singleton.

Chúng ta tạo một thư mục cùng tên trong project (phải có thứ tự). Bên trong chúng tôi tạo 3 lớp - Config, Logger, Zabbix. Trình ghi nhật ký của chúng tôi:

Tiều phu

lớp tĩnh Logger ( public static NLog.Logger Log ( get; Private set; ) public static NLog.Logger Archive ( get; Private set; ) static Logger() ( Log = LogManager.GetLogger("Global"); Archive = LogManager. GetLogger("Trình lưu trữ"); ) )


Giám sát bằng Zabbix xứng đáng có một bài riêng, vì vậy tôi sẽ chỉ để lại ở đây lớp triển khai tác nhân:

Zabbix

không gian tên TopCrawler.Singleton ( ///

/// Singleton: lớp người gửi zabbix /// lớp tĩnh Zabbix ( public static ZabbixSender Sender ( get; Private set; ) static Zabbix() ( Sender = new ZabbixSender(Config.ZabbixServer, Config.ZabbixPort); ) ) struct ZabbixItem ( public string Host; public string Key; public string Value ; ) lớp ZabbixSender ( struct nội bộ SendItem ( // ReSharper vô hiệu hóa InconsistentNaming - Zabbix là ​​máy chủ chuỗi công khai phân biệt chữ hoa chữ thường; khóa chuỗi công khai; giá trị chuỗi công khai; đồng hồ chuỗi công khai; // ReSharper khôi phục InconsistentNaming ) #pragma cảnh báo vô hiệu hóa 0649 cấu trúc nội bộ ZabbixResponse ( chuỗi công khai Phản hồi; chuỗi công khai Thông tin; ) #pragma cảnh báo khôi phục 0649 #khu vực --- Hằng số --- chuỗi const công khai DefaultHeader = "ZBXD\x01"; chuỗi const công khai SendRequest = "dữ liệu người gửi"; public const int DefaultTimeout = 10000 ; #endkhu vực #khu vực --- Trường --- riêng tư chỉ đọc DateTime _dtUnixMinTime = DateTime.SpecifyKind(new DateTime(1970, 1, 1), DateTimeKind.Utc); riêng tư chỉ đọc int _timeout; chuỗi chỉ đọc riêng _zabbixserver; riêng tư chỉ đọc int _zabbixport; #endzone #khu vực --- Trình xây dựng --- public ZabbixSender(string zabbixserver, int zabbixport) : this(zabbixserver, zabbixport, DefaultTimeout) ( ) public ZabbixSender(string zabbixserver, int zabbixport, int timeout) ( _zabbixserver = zabbixserver; _zabbixport = zabbixport; _timeout = timeout; ) #endkhu vực #khu vực --- Phương thức --- chuỗi công khai SendData(ZabbixItem itm) ( return SendData(danh sách mới (1) ( itm )); ) chuỗi công khai SendData(Danh sách lstData) ( try ( var serializer = new JavaScriptSerializer(); var value ​​= Danh sách mới (lstData.Count); value.AddRange(lstData.Select(itm => new SendItem ( Host = itm.Host, key = itm.Key, value = itm.Value, clock = Math.Floor((DateTime.Now.ToUniversalTime() - _dtUnixMinTime). TotalSeconds).ToString(CultureInfo.InvariantCulture) ))); var json = serializer.Serialize(new ( request = SendRequest, data = value.ToArray() )); var header = Encoding.ASCII.GetBytes(DefaultHeader); var length = BitConverter.GetBytes((long)json.Length); var data = Encoding.ASCII.GetBytes(json); gói var = byte mới; Buffer.BlockCopy(tiêu đề, 0, gói, 0, header.Length); Buffer.BlockCopy(length, 0, packet, header.Length, length.Length); Buffer.BlockCopy(data, 0, packet, header.Length + length.Length, data.Length); sử dụng (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) ( socket.Connect(_zabbixserver, _zabbixport); socket.Send(packet); //Header var buffer = byte mới; ReceivData(socket) , buffer, 0, buffer.Length, _timeout); if (DefaultHeader != Encoding.ASCII.GetString(buffer, 0, buffer.Length)) ném ngoại lệ mới ("Tiêu đề không hợp lệ"); // Bộ đệm độ dài tin nhắn = byte mới ;ReceivData(socket, buffer, 0, buffer.Length, _timeout); var dataLength = BitConverter.ToInt32(buffer, 0); if (dataLength == 0) ném ngoại lệ mới("Độ dài dữ liệu không hợp lệ"); // Bộ đệm tin nhắn = byte mới;ReceivData(socket, buffer, 0, buffer.Length, _timeout);var reply = serializer.Deserialize (Encoding.ASCII.GetString(buffer, 0, buffer.Length)); return string.Format("Phản hồi: (0), Thông tin: (1)", reply.Response, reply.Info); ) ) bắt (Ngoại lệ e) ( return string.Format("Exception: (0)", e); ) ) riêng tĩnh void ReceivData(Socket pObjSocket, byte buffer, int offset, int size, int timeout) ( var startTickCount = Môi trường.TickCount; var đã nhận = 0; do ( if (Environment.TickCount > startTickCount + timeout) ném TimeoutException mới(); thử ( đã nhận += pObjSocket.Receive(buffer, offset + đã nhận, size - đã nhận, SocketFlags.None) ; ) bắt (SocketException ex) ( if (ex.SocketErrorCode == SocketError.WillBlock || ex.SocketErrorCode == SocketError.IOPending || ex.SocketErrorCode == SocketError.NoBufferSpaceAvailable) Thread.Sleep(30); else Throw; ) ) trong khi (đã nhận< size); } #endregion } }


Cấu hình... Đã đến lúc phải làm ít nhất điều gì đó thú vị. Đầu tiên, chúng tôi sẽ lưu trữ các hộp mà chúng tôi thăm dò trong configs. Thứ hai, cài đặt DataFlow. Tôi đề nghị thế này:

Cấu hình



Vì vậy, máy chủ và cổng nơi nó kết nối, người dùng và mật khẩu - mọi thứ đều rõ ràng ở đây. Tiếp theo là loại hộp. Giả sử dịch vụ được sử dụng bởi bộ phận tiếp thị (cũng như các bộ phận khác). Họ có các hộp thư nơi gửi phản hồi tự động cho các thư cũng như các báo cáo về thư rác FBL. Bản thân hộp thư đã phân loại thư, vì vậy trong những trường hợp như vậy, chúng tôi sẽ đặt ngay loại hộp thư. Cài đặt DataFlow sẽ trở nên rõ ràng hơn sau này khi chúng ta bắt đầu tạo đối tượng. Ở đây chúng ta sẽ có các phần riêng trong config. Có rất nhiều hướng dẫn về cách thực hiện việc này, vì vậy tôi sẽ chỉ cho bạn thấy kết quả:

Xác định loại

#khu vực --- Loại --- lớp tĩnh MailboxType ( public const string Bo = "bo"; public const string Crm = "crm"; public const string Fbl = "fbl"; public const string Bounce = "bounce"; ) lớp MailboxInfo ( chuỗi công khai Loại ( get; set; ) chuỗi công khai Tên máy chủ ( get; set; ) chuỗi công khai Người dùng ( get; set; ) chuỗi công khai Mật khẩu ( get; set; ) public int Port ( get; set; ) ) class DataBlockOptions ( public int Maxdop ( get; set; ) public int BoundedCapacity ( get; set; ) public DataBlockOptions() ( Maxdop = 1; BoundedCapacity = 1; ) ) #endzone


Tạo phần

///

/// Phần cấu hình tùy chỉnh /// lớp công khai CustomSettingsConfigSection: ConfigurationSection ( public CredentialsCollection CredentialItems ( get ( return base["CredentialsList"] as CredentialsCollection; ) ) public DataBlockOptionsCollection DataFlowOptionsItems ( get ( return base["DataFlowOptionsList"] as DataBlockOptionsCollection; ) ) )


///

/// Bộ sưu tập tùy chỉnh - danh sách thông tin xác thực /// lớp công khai Thông tin xác thựcCollection: ConfigurationElementCollection, IEnumerable ( ghi đè được bảo vệ ConfigurationElement CreateNewElement() ( return new CredentialsElement(); ) đối tượng ghi đè được bảo vệ GetElementKey(ConfigurationElement element) ( return ((CredentialsElement)element).Username; ) public CredentialsElement cái này ( get ( return BaseGet(index) as CredentialsElement; ) ) công khai IEnumerator mới < Count; i++) { yield return BaseGet(i) as CredentialsElement; } } } /// /// Mục thông tin xác thực tùy chỉnh /// public class CredentialsElement: ConfigurationElement ( chuỗi công khai Tên máy chủ ( get ( return base["hostname"] as string; ) ) public string Tên người dùng ( get ( return base["username"] as string; ) ) public string Mật khẩu ( get ( return base ["password"] as string; ) ) public string Loại ( get ( return base["type"] as string; ) ) public string Port ( get ( return base["port"] as string; ) ) ) /// /// Bộ sưu tập tùy chỉnh - Danh sách tùy chọn DataBlock /// lớp công khai DataBlockOptionsCollection: ConfigurationElementCollection, IEnumerable ( ghi đè được bảo vệ ConfigurationElement CreateNewElement() ( return new DataBlockOptionsElement(); ) đối tượng ghi đè được bảo vệ GetElementKey(ConfigurationElement element) ( return ((DataBlockOptionsElement)element).Name; ) public CredentialsElement cái này ( get ( return BaseGet(index) as CredentialsElement; ) ) công khai IEnumerator mới GetEnumerator() ( for (var i = 0; i< Count; i++) { yield return BaseGet(i) as DataBlockOptionsElement; } } } /// /// Mục tùy chọn DataBlock tùy chỉnh /// lớp công khai DataBlockOptionsElement: ConfigurationElement ( Tên chuỗi công khai ( get ( return base["name"] as string; ) ) public string Maxdop ( get ( return base["maxdop"] as string; ) ) public string BoundedCapacity ( get ( return base ["boundedcapacity"] dưới dạng chuỗi; ) ) )


Tôi sẽ không viết phần triển khai đầy đủ của cấu hình; giả định rằng trong quá trình phát triển, các tham số chúng ta cần sẽ được thêm vào đó.

Hãy đọc cài đặt tùy chỉnh của chúng tôi như thế này:

Đọc

Danh sách công khai Danh sách thông tin xác thực ( get; bộ riêng tư; ) Từ điển công khai DataFlowOptionsList ( get; Private set; ) ... static Config() ( try ( var customConfig = (CustomSettingsConfigSection)ConfigurationManager.GetSection("CustomSettings"); //Nhận hộp thư foreach (var item trong customConfig.CredentialItems) CredentialsList.Add( new MailboxInfo ( Tên máy chủ = item.Tên máy chủ, Cổng = Convert.ToInt32(item.Port), Người dùng = item.Username, Loại = item.Type, Mật khẩu = item.Password )); //Nhận cài đặt DataFlow foreach (var item in customConfig.DataFlowOptionsItems) DataFlowOptionsList.Add(item.Name, new DataBlockOptions ( Maxdop = Convert.ToInt32(item.Maxdop), BoundedCapacity = Convert.ToInt32(item.BoundedCapacity) )); ) bắt (Ngoại lệ cũ) ( Logger.Log. Fatal("Lỗi khi đọc cấu hình: (0)", ex.Message); Throw; ) )


Bằng cách nào đó, nó đã trở nên rất dài và chúng ta thậm chí còn chưa đi đến phần thú vị nhất.

Bây giờ chúng ta hãy bỏ qua việc khai thác TopShelf, bộ đếm hiệu suất và liên lạc với cơ sở dữ liệu và bắt tay vào công việc! Chúng tôi tạo lớp Crawler - cốt lõi. Đầu tiên chúng ta hãy đọc email:

bool dễ bay hơi riêng tư _stopPipeline; ... public void Start() ( do ( var getMailsTasks = _config.CredentialsList.Select(credentials => Task.Run(() => GetMails(credentials))).ToList(); foreach (var task trong getMailsTasks) .Wait(); Thread.Sleep(2000); ) while (!_stopPipeline); //Dừng đường dẫn - đợi hoàn thành tất cả các điểm cuối // Đường dẫn DataFlow sẽ dừng ở đây nếu (_stopPipeline) Logger.Log.Warn("Pipeline đã bị người dùng dừng"); )
Đây là lúc mà sự lười biếng đã ảnh hưởng đến tôi và tôi quyết định không bận tâm - nếu có khoảng 20-30 hộp, bạn có thể chạy một nhiệm vụ cho mỗi hộp và không phải lo lắng về số lượng luồng. (Tôi cho phép bạn ném cà chua.)

Chúng ta hãy chuyển sang phần đọc chính nó:

Khoảng trống riêng tư GetMails(Thông tin MailboxInfo) ( thử ( sử dụng (var client = new Pop3Client()) (
Hãy tính ngay thời gian truy cập vào hộp thư - nó sẽ hữu ích cho việc chẩn đoán tải mạng và máy chủ.

//Nhận số liệu Zabbix var đồng hồ bấm giờ = đồng hồ bấm giờ mới(); đồng hồ bấm giờ.Start(); //Lấy số lượng thư client.Connect(info.Hostname, info.Port, false); client.Authenticate(info.User, info.Password); đồng hồ bấm giờ.Stop();
Đang gửi dữ liệu tới Zabbix. Thật đơn giản - chúng tôi chỉ ra tên máy chủ (vì nó được nhập trong Zabbix), khóa (một lần nữa, đúng như trong Zabbix) và giá trị chuỗi.

//Gửi nó tới Zabbix Zabbix.Sender.SendData(ZabixItem mới ( Host = Config.HostKey, Key = info.Type + Config.TimingKey, Value = stopwatch.ElapsedMilliseconds.ToString() )); Logger.Log.Debug("Gửi thời gian [(0)] tới Zabbix: được kết nối với "(1)" dưới dạng "(2)", thời gian (3)ms", info.Type, info.Hostname, info.User, đồng hồ bấm giờ.ElapsedMilli giây); var count = client.GetMessageCount(); if (đếm == 0) trả về; Logger.Log.Debug("Chúng tôi"có (0) tin nhắn mới trong "(1)"", count, info.User); // Gửi tin nhắn đến khối sắp xếp cho (var i = 0; i< count; i++) { try { var mailInfo = new MessageInfo { IsSpam = false, Mail = client.GetMessage(i + 1), Type = MessageType.UNKNOWN, Subtype = null, Recipient = null, Mailbox = info }; Logger.Log.Debug("Download message from "{0}". Size: {1}b", info.User, mailInfo.Mail.RawMessage.Length);
Đường dẫn DataFlow sẽ được tạo khi tạo lớp Trình thu thập thông tin. Chúng tôi tin rằng giai đoạn đầu tiên của chúng tôi là sắp xếp bức thư.

Trong khi (!_sortMailDataBlock.Post(mailInfo)) Thread.Sleep(500);
Bạn thấy nó đơn giản thế nào - chỉ có một băng tải. Tất cả các tác vụ đọc thư sẽ gửi từng thư một vào đó. Nếu khối đang bận, Post sẽ trả về sai và chúng ta sẽ đợi cho đến khi nó rảnh. Cái hiện tại sau đó tiếp tục làm việc vào thời điểm này. Đây là những gì tôi gọi là sự song song không lo lắng.

Tin nhắn đã được gửi đến băng tải, bây giờ bạn có thể yên tâm lưu nó vào kho lưu trữ RAW (vâng, vâng! Chúng tôi lưu mọi thứ chúng tôi đọc vào kho lưu trữ tệp. Dịch vụ hỗ trợ sẽ cảm ơn chúng tôi sau).

Ví dụ: hãy thiết lập xoay vòng lưu trữ:

NLog.config



Sau đó, bạn có thể sử dụng logStash trên đó, nhưng đó lại là một câu chuyện khác...

// Lưu mọi thư để lưu trữ Logger.Log.Debug("Lưu trữ thư"); Logger.Archive.Info(Functions.MessageToString(mailInfo.Mail)); ) bắt (Ngoại lệ cũ) ( Logger.Log.Error("Lỗi phân tích cú pháp email: (0)", ex.Message); Functions.ErrorsCounters.Increment(); //Vẫn lưu trữ thư Logger.Log.Debug("Lưu trữ tin nhắn "); Logger.Archive.Info(Encoding.Default.GetString(client.GetMessageAsBytes(i + 1))); ) if (_config.DeleteMail) client.DeleteMessage(i + 1); nếu (_stopPipeline) bị hỏng; ) Logger.Log.Debug("Xong với "(0)"", info.User); ) ) bắt (Ngoại lệ ex) ( Logger.Log.Error("Lỗi chung - loại: (0), tin nhắn: (1)", ex, ex.Message); Functions.ErrorsCounters.Increment(); ) )
Ở đây chúng tôi đã sử dụng bộ đếm lỗi tĩnh (theo loại hộp thư), trong đó ErrorsCounters là:

Từ điển tĩnh công cộng ErrorCounters = từ điển mới ();
Và bản thân các bộ đếm có thể được thực hiện như thế này:

Bộ đếm.cs

lớp Bộ đếm ( riêng tư dài _counter; công khai Bộ đếm() ( _counter = 0; ) công khai void Increment() ( Interlocked.Increment(ref _counter); ) công khai dài Read() ( return _counter; ) công khai dài Làm mới() ( return Khóa liên động .Exchange(ref _counter, 0); ) public void Add(long value) ( ​​​Interlocked.Add(ref _counter, value); ) public void Set(long value) ( ​​​Interlocked.Exchange(ref _counter, value) ; ) )


Hãy chuyển sang tạo đường ống. Giả sử chúng ta có các hộp nơi phản hồi tự động đổ vào. Những bức thư như vậy cần được phân tích cú pháp (loại trả lời tự động là gì, từ ai, cho danh sách gửi thư nào, v.v.) và đưa kết quả vào bộ lưu trữ (DB). Giả sử có những ô chứa báo cáo FBL. Chúng tôi ngay lập tức đưa những bức thư như vậy vào cơ sở dữ liệu. Chúng tôi coi tất cả các chữ cái khác là “hữu ích” - chúng cần được kiểm tra thư rác và gửi đến hệ thống bên ngoài, chẳng hạn như CRM.

Như bạn đã hiểu, ví dụ này chủ yếu xem xét việc sử dụng trình thu thập cho các nhiệm vụ tiếp thị - thu thập số liệu thống kê về gửi thư, thông tin về thư rác.

Vì vậy, chúng tôi đã quyết định về quy trình làm việc. Chúng ta khai báo các khối cần thiết trong lớp Crawler:

Lớp MessageInfo ( public bool IsSpam ( get; set; ) public Message Mail ( get; set; ) public string Subtype ( get; set; ) public string Người nhận ( get; set; ) public MessageType ( get; set; ) public MailboxInfo Hộp thư ( get; set; ) ) lớp Trình thu thập thông tin ( //Pipeline Private TransformBlock _sortMailDataBlock; TransformBlock riêng tư _spamFilterDataBlock; TransformBlock riêng tư _checkBounceDataBlock; TransformBlock riêng tư _identifyDataBlock; Khối hành động riêng tư _addToCrmDataBlock; Khối hành động riêng tư _addToFblDataBlock; Khối hành động riêng tư _addToBounceDataBlock; ...
Chúng tôi tạo một phương thức khởi tạo và tạo các khối quy trình (để khởi tạo các khối, chúng tôi sử dụng các phần tuyệt vời của mình từ cấu hình):

Public void Init() ( //*** Tạo đường dẫn *** //Tạo TransformBlock để nhận loại tin nhắn var blockOptions = _config.GetDataBlockOptions("_sortMailDataBlock"); _sortMailDataBlock = new TransformBlock (mail => SortMail(mail), ExecutionDataflowBlockOptions mới ( MaxDegreeOfParallelism = blockOptions.Maxdop, BoundedCapacity = blockOptions.BoundedCapacity )); //Tạo TransformBlock để lọc khối thư rácOptions = _config.GetDataBlockOptions("_spamFilterDataBlock"); _spamFilterDataBlock = TransformBlock mới (mail => FilterSpam(mail), ExecutionDataflowBlockOptions mới ( MaxDegreeOfParallelism = blockOptions.Maxdop, BoundedCapacity = blockOptions.BoundedCapacity )); //Tạo TransformBlock để sắp xếp các lần trả lại blockOptions = _config.GetDataBlockOptions("_checkBounceDataBlock"); _checkBounceDataBlock = TransformBlock mới (mail => BounceTypeCheck(mail), ExecutionDataflowBlockOptions mới ( MaxDegreeOfParallelism = blockOptions.Maxdop, BoundedCapacity = blockOptions.BoundedCapacity )); //Tạo TransformBlock để xác định chủ sở hữu bị trả lại blockOptions = _config.GetDataBlockOptions("_identifyDataBlock"); _identifyDataBlock = TransformBlock mới (mail => GetRecipient(mail), ExecutionDataflowBlockOptions mới ( MaxDegreeOfParallelism = blockOptions.Maxdop, BoundedCapacity = blockOptions.BoundedCapacity )); //Tạo ActionBlock để gửi thư đến CRM blockOptions = _config.GetDataBlockOptions("_addToCrmDataBlock"); _addToCrmDataBlock = ActionBlock mới (mail => AddToCrm(mail), ExecutionDataflowBlockOptions mới ( MaxDegreeOfParallelism = blockOptions.Maxdop, BoundedCapacity = blockOptions.BoundedCapacity )); //Tạo ActionBlock để gửi FBL tới MailWH blockOptions = _config.GetDataBlockOptions("_addToFblDataBlock"); _addToFblDataBlock = ActionBlock mới (mail => AddToFbl(mail), ExecutionDataflowBlockOptions mới ( MaxDegreeOfParallelism = blockOptions.Maxdop, BoundedCapacity = blockOptions.BoundedCapacity )); //Tạo ActionBlock để gửi Bounce tới MailWH blockOptions = _config.GetDataBlockOptions("_addToBounceDataBlock"); _addToBounceDataBlock = ActionBlock mới (mail => AddToBounce(mail), ExecutionDataflowBlockOptions mới ( MaxDegreeOfParallelism = blockOptions.Maxdop, BoundedCapacity = blockOptions.BoundedCapacity ));
Chúng tôi lắp ráp băng tải theo sơ đồ của chúng tôi:

//*** Xây dựng đường dẫn *** _sortMailDataBlock.LinkTo(_spamFilterDataBlock, info => info.Type == MessageType.GENERAL); _sortMailDataBlock.LinkTo(_addToFblDataBlock, info => info.Type == MessageType.FBL); _sortMailDataBlock.LinkTo(_checkBounceDataBlock, info => info.Type == MessageType.BOUNCE); _sortMailDataBlock.LinkTo(DataflowBlock.NullTarget (), info => info.Type == MessageType.UNKNOWN); /*STUB*/ _checkBounceDataBlock.LinkTo(_identifyDataBlock); _identifyDataBlock.LinkTo(_addToBounceDataBlock); _spamFilterDataBlock.LinkTo(_addToCrmDataBlock, info => !info.IsSpam); _spamFilterDataBlock.LinkTo(DataflowBlock.NullTarget (), thông tin => info.IsSpam); /*SƠ KHAI*/
Như bạn có thể thấy, mọi thứ cực kỳ đơn giản - chúng tôi kết nối khối với khối tiếp theo (với khả năng đặt điều kiện kết nối). Tất cả các khối được thực hiện song song. Mỗi khối có mức độ song song và dung lượng khác nhau (sử dụng dung lượng, bạn có thể điều chỉnh hàng đợi phía trước khối, tức là khối đã nhận được tin nhắn nhưng chưa xử lý). Do đó, bạn có thể đặt mức độ song song cao cho các thao tác “phức tạp” và dài, chẳng hạn như phân tích nội dung của một bức thư.

Tôi sẽ không mô tả phần cứng DataFlow, tốt hơn hết bạn nên đọc mọi thứ trong TPL DataFlow nguồn gốc.

SortMailDataBlock.Completion.ContinueWith(t => ( if (t.IsFaulted) ((IDataflowBlock)_spamFilterDataBlock).Fault(t.Exception); else _spamFilterDataBlock.Complete(); )); _sortMailDataBlock.Completion.ContinueWith(t => ( if (t.IsFaulted) ((IDataflowBlock)_addToFblDataBlock).Fault(t.Exception); else _addToFblDataBlock.Complete(); )); _sortMailDataBlock.Completion.ContinueWith(t => ( if (t.IsFaulted) ((IDataflowBlock)_checkBounceDataBlock).Fault(t.Exception); else _checkBounceDataBlock.Complete(); )); _spamFilterDataBlock.Completion.ContinueWith(t => ( if (t.IsFaulted) ((IDataflowBlock)_addToCrmDataBlock).Fault(t.Exception); else _addToCrmDataBlock.Complete(); )); _checkBounceDataBlock.Completion.ContinueWith(t => ( if (t.IsFaulted) ((IDataflowBlock)_identifyDataBlock).Fault(t.Exception); else _identifyDataBlock.Complete(); )); _identifyDataBlock.Completion.ContinueWith(t => ( if (t.IsFaulted) ((IDataflowBlock)_addToBounceDataBlock).Fault(t.Exception); else _addToBounceDataBlock.Complete(); )); )
Vậy là xong, thực tế băng tải đã hoạt động rồi, bạn có thể đăng tin nhắn lên đó. Tất cả những gì còn lại là dừng nó bằng cách thêm phương thức Start của chúng tôi:

Bắt đầu

public void Start() ( do ( var getMailsTasks = _config.CredentialsList.Select(credentials => Task.Run(() => GetMails(credentials))).ToList(); foreach (var task trong getMailsTasks) task.Wait( ); Thread.Sleep(2000); ) while (!_stopPipeline); //Dừng đường ống - đợi hoàn thành tất cả các điểm cuối _sortMailDataBlock.Complete(); _addToCrmDataBlock.Completion.Wait(); _addToFblDataBlock.Completion.Wait(); _addToBounceDataBlock .Completion.Wait(); if (_stopPipeline) Logger.Log.Warn("Đường ống đã bị người dùng dừng"); )


Hãy chuyển sang các đại biểu.
Sắp xếp... Chà, giả sử mọi thứ đều đơn giản đối với chúng ta (chúng ta luôn có thể làm cho nó phức tạp hơn):

Private MessageInfo SortMail(MessageInfo mail) ( switch (mail.Mailbox.Type) ( case MailboxType.Crm: mail.Type = MessageType.GENERAL; break; case MailboxType.Bounce: mail.Type = MessageType.BOUNCE; break; case MailboxType. Fbl: mail.Type = MessageType.FBL;break; ) trả lại thư; )
Bộ lọc thư rác. Đây là bài tập về nhà - hãy sử dụng SpamAssassin.
Đây là đại biểu của bạn:

Private MessageInfo FilterSpam(MessageInfo mail) ( //TODO: Thêm thư trả về logic SpamAssassin; )
Và các lớp để làm việc với API SpamAssassin (liên kết đến dự án).
Và chúng ta chuyển sang phân tích các chữ cái. Chúng tôi phân tích các câu trả lời tự động. Đây là lúc MEF phát huy tác dụng.
Chúng tôi tạo một dự án (dll) với các giao diện cho các plugin của mình (Hãy gọi nó là Giao diện).
Thêm giao diện:

Giao diện công cộng ICondition ( string Check(Message mimeMessage); ) giao diện công cộng IConditionMetadata ( Type Type ( get; ) )
Và... thế thôi. TopCrawler của chúng tôi phụ thuộc vào dự án này và dự án plugin cũng sẽ sử dụng nó.
Hãy tạo một dự án mới (cũng là một dll), gọi nó là Điều kiện.
Hãy thêm các loại phản hồi tự động:

#khu vực --- Loại --- lớp tĩnh BounceType ( public const string Full = "BounceTypeFull"; public const string Timeout = "BounceTypeTimeout"; public const string Refused = "BounceTypeRefused"; public const string NotFound = "BounceTypeNotFound"; public const string Không hoạt động = "BounceTypeInactive"; chuỗi const công khai OutOfOffice = "BounceTypeOutOfOffice"; chuỗi const công khai HostNotFound = "BounceTypeHostNotFound"; chuỗi const công khai NotAuthorized = "BounceTypeNotAuthorized"; chuỗi const công khai ManyConnections = "BounceTypeManyConnections"; ) #endzone
Và các lớp thực hiện giao diện của chúng tôi:

Lớp công khai ConditionNotFound1: ICondition ( public string Check(Message mimeMessage) ( if (!mimeMessage.MessagePart.IsMultiPart) trả về null; mẫu chuỗi const = "Diagnostic-Code:.+smtp.+550"; var regrec = new Regex(pattern , RegexOptions.IgnoreCase); trả về mimeMessage.MessagePart.MessageParts.Any(part => part.ContentType.MediaType == "message/delivery-status" && regrec.IsMatch(part.GetBodyAsText())) ? BounceType.NotFound: null ; ) ) ... lớp công khai ConditionTimeout2: ICondition ( return BounceType.Timeout; ) ...
Như bạn nhận thấy, tất cả đều là về thuộc tính. Sử dụng chúng, các plugin sẽ được tải.
Hãy quay lại dự án của chúng tôi và tải các plugin:

Trình thu thập thông tin lớp ( ... //Plugins public IEnumerable > BounceTypeConditions ( get; set; ) riêng void LoadPlugins() ( try ( var container = new CompositionContainer(new DirectoryCatalog(_config.PluginDirectory), true); container.ComposeParts(this); ) Catch (Ngoại lệ cũ) ( Logger.Log .Error("Không thể tải plugin: (0)", ex.Message); ) ) ...
Chúng tôi kéo LoadPlugins trong hàm tạo của lớp chúng tôi. Tôi sẽ không giải thích chi tiết về cơ chế tải xuống - Google sẽ làm tốt hơn.

Hãy chuyển sang đại biểu kiểm tra loại Thoát của chúng tôi. Các điều kiện sẽ lần lượt được áp dụng cho đến khi phương pháp đầu tiên - loại trừ - hoạt động:

Private MessageInfo BounceTypeCheck(MessageInfo mailInfo) ( try ( foreach (var condition in BounceTypeConditions) ( var res = condition.Value.Check(mailInfo.Mail); if (res == null) continue; mailInfo.Subtype = res; Logger.Log .Debug("Điều kiện loại trả lại [(0)] được kích hoạt cho tin nhắn [(1)]", condition.Metadata.Type, mailInfo.Mail.Headers.MessageId); break; ) ) bắt (Ngoại lệ cũ) ( Logger.Log .Error("Không thể xác định kiểu trả lại cho thư "(0)": (1)", mailInfo.Mail.Headers.MessageId, ex.Message); Logger.ErrorsCounters.Increment(); ) return mailInfo; )
Do đó, nếu một mô-đun logic mới xuất hiện, bạn chỉ cần thêm một lớp mới vào dự án với các plugin triển khai giao diện của chúng tôi và - thì đấy! Tôi sẽ không đính kèm ví dụ về plugin thứ hai để xác định người gửi thư - đây đã là một bài đăng dài (Trả lời tự động được tạo bởi chính máy chủ, vì vậy người gửi cũng cần được phân tích cú pháp từ các tiêu đề của thư thư).

Cũng không có gì bất thường khi ghi lại kết quả vào cơ sở dữ liệu. Ví dụ như thế này:

Private void AddToBounce(MessageInfo mail) ( try ( MailWH.BounceAdd(mail); Functions.ProcessedCounters.Increment(); Functions.Log.Debug("Gửi trả lại tới MailWH"); ) bắt (Ngoại lệ cũ) ( Functions.Log. Error("Lỗi lưu thư Trả lại "(0)" vào MailWH: (1)", mail.Mail.Headers.MessageId, ex.Message); Functions.ErrorsCounters.Increment(); ) )

ThoátThêm

public static long BounceAdd(MessageInfo message) ( sử dụng (var conn = new SqlConnection(ConnectionString)) sử dụng (var cmd = new SqlDataAdapter("BounceAdd", conn)) ( var body = message.Mail.FindFirstPlainTextVersion() == null ? message.Mail.FindFirstHtmlVersion().GetBodyAsText() : message.Mail.FindFirstPlainTextVersion().GetBodyAsText(); var outId = new SqlParameter("@ID", SqlDbType.BigInt) ( Direction = ParameterDirection.Output ); cmd.SelectCommand .CommandType = CommandType.StoredProcedure;cmd.SelectCommand.Parameters.Add(SqlParameter mới("@RawMessage", message.Mail.RawMessage)); cmd.SelectCommand.Parameters.Add(SqlParameter mới("@Message", body)) ; cmd.SelectCommand.Parameters.Add(SqlParameter mới("@Subject", message.Mail.Headers.Subject ?? "")); cmd.SelectCommand.Parameters.Add(SqlParameter mới("@MessageID", message.Mail .Headers.MessageId ?? "")); cmd.SelectCommand.Parameters.Add (SqlParameter mới ("@AddressTo", message.Mail.Headers.To.Address ?? "")); cmd.SelectCommand.Parameters.Add (SqlParameter mới ("@AddressFrom", message.Mail.Headers.From.Address ?? "")); cmd.SelectCommand.Parameters.Add(SqlParameter mới("@DateRecieved", DateTime.Now)); cmd.SelectCommand.Parameters.Add(SqlParameter mới("@BounceTypeSysName", (object)message.Subtype ?? DBNull.Value)); cmd.SelectCommand.Parameters.Add(SqlParameter mới("@SourceFrom", (object)message.Recipient ?? DBNull.Value)); // VIỆC CẦN LÀM: Thêm ListId hỗ trợ cmd.SelectCommand.Parameters.Add(new SqlParameter("@ListId", DBNull.Value)); cmd.SelectCommand.Parameters.Add(outId); conn.Open(); cmd.SelectCommand.ExecuteNonQuery(); trả về outId.Value bao lâu? ?? 0; ) )


Xin lỗi, tôi không có thời gian để hiển thị TopShelf - bài đăng đã quá cồng kềnh.

kết luận

Trong hướng dẫn này, chúng ta đã biết rằng nhiệm vụ thu thập thư có thể không đơn giản như vậy. Lõi được phát triển cho phép bạn nhanh chóng thêm các bước quy trình mới - khối DataFlow mà không ảnh hưởng đến logic hiện có. Hệ thống con plugin cho phép bạn nhanh chóng mở rộng logic phân tích cú pháp giống như tập lệnh và DataFlow tự song song hóa tất cả các phép tính (và chúng tôi có khả năng định cấu hình linh hoạt đa luồng cho một máy cụ thể). TopShelf cung cấp cho chúng tôi khả năng chạy một dịch vụ ở cả chế độ dịch vụ và chế độ bảng điều khiển để gỡ lỗi dễ dàng hơn.

Phù... Nếu bạn quan tâm, tôi sẽ cho bạn biết cách đưa tính năng này vào lộ trình Tích hợp liên tục, thiết lập các bản dựng và phát hành tự động thông qua Quản lý phát hành VS.

Thẻ: Thêm thẻ