2010-04-13 52 views
7

Tôi đã tự hỏi liệu có ai có thể giải thích cho tôi tại sao nó mất gần 30 giây mỗi lần ứng dụng web Java của tôi gửi email bằng máy chủ SMTP của Gmail không? Xem các dấu thời gian sau:Sử dụng gmail làm máy chủ SMTP trong ứng dụng web Java chậm

13/04/2010-22: 24: 27: 281 DEBUG test.service.impl.SynchronousEmailService - Trước khi gửi thư. 13/04/2010-22: 24: 52: 625 DEBUG test.service.impl.SynchronousEmailService - Sau khi gửi thư.

Tôi đang sử dụng lớp JavaMailSender mùa xuân với các cài đặt sau:

email.host = smtp.gmail.com

[email protected] email.password = mypassword email .port = 465 mail.smtp.auth.required = true

Lưu ý rằng thư đang được gửi và tôi nhận được thư, chỉ có sự chậm trễ này dẫn đến trải nghiệm chậm cho người dùng ứng dụng.

Nếu bạn biết làm thế nào tôi có thể chẩn đoán vấn đề bản thân mình rằng sẽ là tốt quá :)

+0

Thảo luận này có thể liên quan: http://groups.google.com/group/Gmail-Help-POP-and-IMAP-en/browse_thread/thread/575e3f06894ab8b9/97d753671e733c41?lnk=gst&q=slow – Andre

Trả lời

4

Nó có thể là gmail mà sử dụng sự chậm trễ này để ngăn chặn kẻ gửi thư rác từ việc sử dụng máy chủ SMTP của họ từ "bên ngoài": nếu SMTP được gọi từ ứng dụng webmail thực tế, nó sẽ không sử dụng sự chậm trễ này. Để kiểm tra điều này, bạn có thể mở phiên telnet tới cổng 25 và thực hiện phiên SMTP thủ công (Tìm kiếm trên web cho SMTP HELO ví dụ)

2

GMail sử dụng SSL để kết nối. Để xác thực chứng chỉ SSL đúng thời gian cần thiết. Thời gian chính xác phụ thuộc vào độ phức tạp của chuỗi chứng chỉ và việc sử dụng và khả năng truy cập của CRL và kiểm tra OCSP. Rất có khả năng Java kiểm tra OCSP cho (các) chứng chỉ được trình bày, và điều này có thể chậm.

Thử chạy ứng dụng của bạn trên hệ thống khác (tốt nhất là ở mạng phụ khác) để loại trừ ảnh hưởng của tường lửa. Có thể một số phần của giao tiếp (hoặc bản thân SMTP, hoặc truy xuất CRL hoặc kiểm tra OCSP) bị chậm lại bởi tường lửa.

0

Tùy thuộc vào hệ điều hành của bạn, bạn nên có hệ thống thư thích hợp thực sự quan tâm đến việc gửi thư bên ngoài mạng của bạn.

Ví dụ: Postfix có thể thực hiện công việc một cách độc đáo. Cấu hình của Postfix sẽ nằm trên một luồng khác, nhưng thường Postfix sẽ chấp nhận thư từ mạng LAN của bạn (chấp nhận là chuyển tiếp cho mạng LAN của bạn) và sẽ chuyển thư thành gmail.

Đây là exemple về cách thiết lập postfix có gmail làm rơle.

Có dịch vụ thư chăm sóc chuyển tiếp thư Gmail cho phép ứng dụng Java của bạn được giải phóng gần như ngay lập tức (Postfix hấp thụ thư, lưu trữ thư đó trong hàng đợi và chuyển tiếp tới chính Gmail).

+1

Tại sao -1 ? Có một máy chủ thư thích hợp là phổ biến để đối phó với lưu lượng thư và sẽ giải quyết sự chậm trễ từ hoạt động gửi của bạn. –

Các vấn đề liên quan