SMTP: Có thể gửi CC cho ai đó mà không cần gửi bản gốc không?


24

Tôi thực sự bắt đầu nghĩ về điều này bởi vì tôi đã quên gửi CC cho ai đó trong một email mà tôi phải gửi và tôi muốn anh ta nhận được một bản sao mà không gửi hai lần cho những người khác. Tôi cuối cùng chỉ chuyển tiếp nó cho anh ta, nhưng tôi vẫn tò mò.

Danh sách CC và BCC được xử lý trong SMTP ở đâu? Bạn có cần điều khiển máy chủ SMTP không, hoặc có thể thực hiện phía máy khách không?

Cảm ơn!

email  smtp 

5
Tại sao điều này bị hạ cấp? Đó là một câu hỏi thú vị sau tất cả ...

5
@Achilles - Chi tiết về việc này có khả thi hay không là TUYỆT ĐỐI một câu hỏi lập trình IMHO. Nó được định nghĩa trong RFC 2821 và 2822. Vào cuối ngày, tất cả các ứng dụng thư khách ngoài đó được lập trình theo các định nghĩa này và mỗi nhà phát triển ở đây cũng có thể phải nghiên cứu kỹ về SMTP tại một số điểm. Tôi chắc chắn có.

3
VUI LÒNG dừng bỏ phiếu để đóng cái này là "thuộc về SuperUser". Chỉ vì OP nói rằng đó là hành động gửi email khiến anh ấy suy nghĩ về vấn đề này, nó không khiến câu hỏi thực sự "không liên quan đến lập trình". Nếu tôi có một câu hỏi triển khai http xảy ra với tôi khi tôi nhấp vào liên kết web, đó có phải là "không liên quan đến lập trình" không? Số

Câu trả lời:


17

Nói tóm lại - có thể nếu bạn có thể kết nối trực tiếp với máy chủ SMTP của người nhận. Vì những lý do Rup nêu ra trong câu trả lời của mình, nó có thể không thực tế và nếu bạn ở trên mạng phía sau tường lửa, bạn hoàn toàn không thể có kết nối với máy chủ từ xa trên cổng TCP 25.

Giả sử điều này không áp dụng cho bạn, thì đây là chi tiết:

Khi bạn (với tư cách là ứng dụng thư) kết nối với máy chủ thư của người nhận, tất cả các máy chủ đó quan tâm (cho mục đích gửi) là người nhận được chỉ định trong RCPT TO:. Xem RFC2821 - Giao thức chuyển thư đơn giản . Nó không phân biệt giữa loại người nhận (đến:, cc: hoặc bcc :), nó chỉ biết bạn đang nói "đảm bảo rằng người nhận trên máy chủ của bạn nhận được điều này".

Tuy nhiên, theo như liên quan đến ứng dụng thư thực tế của người nhận, thì tiêu đề trong thư cho biết tất cả những người nhận thư là ai. Xem RFC2822 - Định dạng tin nhắn Internet .

Nói cách khác, các tiêu đề TO:, CC: và BCC: có lợi cho ứng dụng thư khách, trong khi phân phối thực tế được xử lý trong 'cuộc trò chuyện' với các máy chủ thư.

Trên thực tế, bạn có thể có một cuộc trò chuyện với máy chủ SMTP trông giống như thế này:

C:>telnet aspmx.l.google.com 25
220 mx.google.com ESMTP f70si17620845wej.110
HELO myserver.mydomain.co.uk
250 mx.google.com at your service
MAIL FROM: <test@mydomain.co.uk>
250 2.1.0 OK f70si17620845wej.110
RCPT TO: <user_i_missed_out@mydomain.co.uk>
250 2.1.5 OK f70si17620845wej.110
DATA
354  Go ahead f70si17620845wej.110
To: recipient_on_original@somewhere.com
cc: another_recipient_on_original@somewhere.com, user_i_missed_out@mydomain.co.uk
Subject: My email

Hi - this is a test
.
250 2.0.0 OK 1277401976 f70si17620845wej.110
QUIT
221 2.0.0 closing connection f70si17620845wej.110


Connection to host lost.

Hiệu ứng ròng là user_i_missed_out@mydomain.co.uknhận được một bản sao của email có anh ấy trong danh sách cc cũng như người nhận ban đầu recipient_on_original@somewhere.comvà người nhận cc gốc another_recipient_on_original@somewhere.com.

Tuy nhiên, vì chúng tôi chưa bao giờ thực sự kết nối với hai máy chủ thư sau, nên họ không thực sự nhận được email lần thứ hai. Và vì chúng tôi không thể thay đổi các thư đã được gửi cho họ trước đó, họ sẽ không bao giờ nhận thấy rằng chúng tôi đã thêm một người nhận cc khác.


4

Nhũng gì xảy ra là

  1. Bạn gửi email đến máy chủ SMTP cục bộ (hoặc ISP)
  2. Máy chủ SMTP cục bộ của bạn mở rộng danh sách người nhận và tìm ra danh sách các máy chủ mà nó sẽ cần nói chuyện với tất cả người nhận. Nó loại bỏ tiêu đề BCC khỏi tin nhắn.
  3. Đối với mỗi máy chủ, nó kết nối và thông báo "Đây là email dành cho người nhận X, Y: đây là tiêu đề thư và nội dung"

tức là nếu bạn có thể gửi email thành 3, gửi trực tiếp đến máy chủ SMTP tại nhà của CC bị bỏ lỡ, thì bạn có thể gửi CC cho họ mà không phải gửi thư cho mọi người khác. Cụ thể, một người nhận BCC sẽ nhận được các tiêu đề và nội dung thư hoàn toàn không đề cập đến chúng (ngoại trừ có thể là tiêu đề 'X-Envel-To').

Tuy nhiên, về mặt thực tế, việc gửi đến mọi người sẽ dễ dàng hơn rất nhiều. Để thực hiện điều này một cách hiệu quả, bạn cần sửa đổi ứng dụng email khách và máy chủ SMTP cục bộ của mình để hỗ trợ danh sách người nhận giả mạo hoặc danh sách loại trừ không thực sự gửi đến, nó xử lý trong quá trình mở rộng người nhận.


2

Vấn đề này thực sự được giải quyết bằng một tiến trình đang thực hiện của IETF: Bản sao Carbon Mỹ phẩm . Thật không may, tôi không biết bất kỳ ứng dụng email nào thực sự thực hiện CCC, vì dự thảo được coi là một trò đùa vô nghĩa cho Ngày Cá tháng Tư.

Nói một cách nghiêm túc, những gì bạn đang hỏi là có thể, chủ yếu là vì nội dung của email không thực sự ảnh hưởng đến thư được gửi đến ở lớp SMTP. Các ứng dụng email được viết để gửi thư cho mọi người trong các trường To, CC và BCC, nhưng họ không bắt buộc phải làm điều này theo bất kỳ tiêu chuẩn nào.

Đã cập nhật: Để chính xác, khi gửi thư đến máy chủ SMTP, người gửi sử dụng lệnh RCPT để chỉ định địa chỉ email nào mà thư sẽ được gửi đến. Sau đó nó sẽ gửi nội dung của thư bằng lệnh DATA. Máy chủ SMTP không nên xem nội dung. Có thể thêm một người nhận vào dòng tiêu đề CC của tin nhắn và yêu cầu máy chủ SMPT gửi nó đến chỉ một địa chỉ đó.


0

Nếu tôi hiểu điều này một cách chính xác, những gì bạn đang cố gắng làm là gửi tin nhắn lần thứ hai, bao gồm cả người nhận ban đầu trong các tiêu đề To: và CC :, nhưng chỉ nhận được tin nhắn đó bởi một số người nhận bổ sung. Như các câu trả lời khác đã lưu ý, điều này có thể được thực hiện bằng ứng dụng email khách của bạn giao tiếp với máy chủ SMTP và chỉ định một người nhận, nhưng bao gồm các tiêu đề To: và Cc: của email gốc.

Ứng dụng khách Apple Mail có chức năng có thể thực hiện điều này một cách hiệu quả. Các Redirect chức năng có thể được tìm thấy trong các tin nhắn đơn, hoặc menu ngữ cảnh cho một tin nhắn. Chức năng này được thiết kế để được sử dụng như một cách để chuyển tiếp email một cách minh bạch cho người khác mà không cần thêm Fwd: vào dòng tiêu đề và tăng mức trích dẫn, nhưng nó cũng có thể được sử dụng cho các thư bạn đã gửi trước đó. Nó giữ các trường To / Cc / From của tin nhắn gốc giống nhau và thêm người nhận mới trong các tiêu đề Resent-To và Resent-CC. Những người nhận duy nhất tin nhắn bực bội sẽ là những người bạn chỉ định khi soạn nó. Không hoàn toàn rõ ràng cách thức hoạt động của tính năng này khi bạn sử dụng tính năng này, vì vậy hãy chắc chắn kiểm tra trước.


-1

Nó có thể được cho phép / không được phép trên cơ sở từng khách hàng, nhưng bạn có thể thử đặt một cái gì đó giả mạo (như ";; người nhận không được tiết lộ ;;") vào To và đưa mọi người vào BCC. Sau đó, lặp lại quy trình sẽ làm cho nó trông giống như một email, miễn là không ai theo dõi đủ chặt chẽ để đánh dấu thời gian và các thông điệp theo chuỗi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.