2012-12-13 12 views
54

Tôi muốn gửi thông điệp tới nhiều người nhận sử dụng phương pháp ::Gửi Mail cho nhiều người nhận trong java

message.addRecipient(Message.RecipientType.TO, String arg1); 

HOẶC

message.setRecipients(Message.RecipientType.TO,String arg1); 

Nhưng có một sự nhầm lẫn là trong đối số thứ hai, sau Cách chuyển nhiều địa chỉ như:

message.addRecipient(Message.RecipientType.CC, "[email protected],[email protected],[email protected]"); 

HOẶC

message.addRecipient(Message.RecipientType.CC, "[email protected];[email protected];[email protected]"); 

tôi có thể gửi tin nhắn bằng các phương pháp thay thế quá, nhưng muốn biết mục đích của phương pháp trên. Nếu tôi không thể sử dụng nó (như cho đến bây giờ tôi đã không có bất kỳ câu trả lời cho yêu cầu trên) thì nhu cầu cho phương pháp này được trong API thư là gì.

Trả lời

81

Nếu bạn gọi addRecipient nhiều lần nó sẽ thêm người nhận trao cho danh sách người nhận trong những thời gian nhất định (TO, CC, BCC)

Ví dụ:

message.addRecipient(Message.RecipientType.CC, InternetAddress.parse("[email protected]")); 
message.addRecipient(Message.RecipientType.CC, InternetAddress.parse("[email protected]")); 
message.addRecipient(Message.RecipientType.CC, InternetAddress.parse("[email protected]")); 

Sẽ thêm 3 địa chỉ để CC


Nếu bạn muốn thêm tất cả các địa chỉ cùng lúc bạn nên sử dụng setRecipients hoặc addRecipients và cung cấp nó với một mảng địa chỉ

Address[] cc = new Address[] {InternetAddress.parse("[email protected]"), 
           InternetAddress.parse("[email protected]"), 
           InternetAddress.parse("[email protected]")}; 
message.addRecipients(Message.RecipientType.CC, cc); 

Bạn cũng có thể sử dụng InternetAddress.parse để phân tích một danh sách địa chỉ

message.addRecipients(Message.RecipientType.CC, 
         InternetAddress.parse("[email protected],[email protected],[email protected]")); 
+0

Vì vậy, tôi phải sử dụng nó n lần n người nhận hơn là việc sử dụng phương pháp quá tải tis .... sau đó tranh luận thứ hai là một mảng là tốt hơn. Xin vui lòng đề nghị – Prateek

+3

Cập nhật câu trả lời của tôi để hiển thị như thế nào để thêm tất cả cùng một lúc –

+1

Thực ra câu hỏi của tôi là đặc biệt liên quan đến một phương pháp cụ thể. – Prateek

7

Bạn có thể đã nhiều địa chỉ cách nhau bởi dấu phẩy

if (cc.indexOf(',') > 0) 
    message.setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc)); 
else 
    message.setRecipient(Message.RecipientType.CC, new InternetAddress(cc)); 
+1

Tại sao bạn không sử dụng 'InternetAddress.parse()' cho cả hai? (Và có, tôi biết đây là 4 tuổi) –

+1

@ seanbright có bạn chỉ có thể có tuyên bố đầu tiên bỏ qua nếu điều kiện khác hoàn toàn. 'setRecipients (Message.RecipientType.CC, InternetAddress.parse (cc));' sẽ hoạt động ngay cả khi chỉ có 1 địa chỉ. Nó chỉ là một cách cá nhân của lập trình để tăng khả năng đọc. – ThePCWizard

1

Bạn có thể sử dụng n số người nhận bên dưới phương thức:

String to[] = {"[email protected]"} //Mail id you want to send; 
    InternetAddress[] address = new InternetAddress[to.length]; 
    for(int i =0; i< to.length; i++) 
    { 
     address[i] = new InternetAddress(to[i]); 
    } 

    msg.setRecipients(Message.RecipientType.TO, address); 
+0

tôi đã chỉ định một phương thức cụ thể trong câu hỏi của tôi, muốn gửi bằng cách sử dụng. – Prateek

3

Vậy ... phải mất nhiều tháng, nhưng vẫn ... Bạn có thể gửi email đến nhiều người nhận bằng cách sử dụng '' như tách và

message.setRecipients(Message.RecipientType.CC, "[email protected],[email protected],[email protected]"); 

là ok. Ít nhất trong JavaMail 1.4.5

18

Hi mỗi một mã này được workin đối với tôi hãy thử với điều này để gửi thư cho nhiều recepients

private String recipient = "[email protected] ,[email protected] "; 
String[] recipientList = recipient.split(","); 
InternetAddress[] recipientAddress = new InternetAddress[recipientList.length]; 
int counter = 0; 
for (String recipient : recipientList) { 
    recipientAddress[counter] = new InternetAddress(recipient.trim()); 
    counter++; 
} 
message.setRecipients(Message.RecipientType.TO, recipientAddress); 
5

InternetAddress. Parse sẽ là bạn của bạn!Xem ví dụ làm việc dưới đây:

String to = "[email protected], [email protected], [email protected]"; 
String toCommaAndSpaces = "[email protected] [email protected], [email protected]"; 
  1. Phân tích một danh sách bằng dấu phẩy của địa chỉ email. Nghiêm khắc. Yêu cầu danh sách được phân cách bằng dấu phẩy.
  2. Nếu đúng là đúng, nhiều (nhưng không phải tất cả) quy tắc cú pháp RFC822 cho email được thực thi.

    msg.setRecipients(Message.RecipientType.CC, 
    InternetAddress.parse(to, true)); 
    
  3. Danh sách phân tách bằng dấu phẩy/không gian. Cắt giảm một số chùng. Chúng tôi cũng cho phép các không gian tách biệt danh sách, cộng với các định dạng email không hợp lệ.

    msg.setRecipients(Message.RecipientType.BCC, 
    InternetAddress.parse(toCommaAndSpaces, false)); 
    
1

Nếu bạn muốn gửi như Cc sử dụng MimeMessageHelper

List<String> emails= new ArrayList(); 
email.add("email1"); 
email.add("email2"); 
for (String string : emails) { 
message.addCc(string); 
} 

Cùng bạn có thể sử dụng để thêm nhiều người nhận.

7

Chỉ cần sử dụng các phương pháp message.setRecipients với nhiều địa chỉ cách nhau bởi dấu phẩy:

message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("[email protected],[email protected],[email protected]")); 

message.setRecipients(Message.RecipientType.CC, InternetAddress.parse("[email protected],[email protected],[email protected]")); 

hoạt động tốt với một địa chỉ quá

message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("[email protected]")); 
2
String[] mailAddressTo = new String[3];  
mailAddressTo[0] = emailId_1;  
mailAddressTo[1] = emailId_2;  
mailAddressTo[2] = "[email protected]"; 

InternetAddress[] mailAddress_TO = new InternetAddress[mailAddressTo.length]; 

for (int i = 0; i < mailAddressTo.length; i++) 
{ 
    mailAddress_TO[i] = new InternetAddress(mailAddressTo[i]); 
} 

message.addRecipients(Message.RecipientType.TO, mailAddress_TO);ress_TO = new InternetAddress[mailAddressTo.length]; 
+0

Rohit Vyas ....... – user2389095