xp_readmail (języka Transact-SQL)
Odczytuje wiadomości ze skrzynki odbiorczej poczty SQL .Procedura ta jest używana przez sp_processmail do przetwarzania wszystkich wiadomości w Skrzynce odbiorczej poczty SQL .
Ostrzeżenie
Ta funkcja zostanie usunięta z przyszłej wersji programu Microsoft SQL Server. Należy unikać stosowania tej funkcji w nowych projektach oraz zaplanować modyfikację aplikacji, w których obecnie jest używana ta funkcja.
Składnia
xp_readmail [ [ @msg_id= ] 'message_id' ]
[ , [ @type= ] 'type' [ OUTPUT ] ]
[ , [ @peek= ] 'peek' ]
[ , [ @suppress_attach= ] 'suppress_attach' ]
[ , [ @originator= ] 'sender' OUTPUT ]
[ , [ @subject= ] 'subject' OUTPUT ]
[ , [ @message= ] 'message' OUTPUT ]
[ , [ @recipients= ] 'recipients [ ;...n ]' OUTPUT ]
[ , [ @cc_list= ] 'copy_recipients [ ;...n ]' OUTPUT ]
[ , [ @bcc_list= ] 'blind_copy_recipients [ ;...n ]' OUTPUT ]
[ , [ @date_received= ] 'date' OUTPUT ]
[ , [ @unread= ] 'unread_value' OUTPUT ]
[ , [ @attachments= ] 'attachments [ ;...n ]' OUTPUT ])
[ , [ @skip_bytes= ] bytes_to_skip OUTPUT ]
[ , [ @msg_length= ] length_in_bytes OUTPUT ]
[ , [ @originator_address= ] 'sender_address' OUTPUT ] ]
Argumenty
[ @msg_id = ] 'message_id'
Jest to identyfikator wiadomości do przeczytania.message_idjest varchar(255), z braku domyślne.[ @type = ] 'type'
typ komunikatu zwraca opiera się na definicji MAPI :IP[ M|C ].Vendorname.subclass
Jeśli używana na wejściu, to należy zdefiniować typ dla określonej wiadomości; typejest ignorowane, jeśli wprowadzania message_id ma wartość NULL.typejest varchar(255), domyślna wartość NULL.SQL Mail obsługuje typy wiadomości IPM i IPC.
DANE WYJŚCIOWE
Po określeniu umieszcza wartości parametru określonej w parametru wyjściowego.[ @peek = ] 'peek'
Jest czy SQL Server zwraca wiadomość poczty bez zmiany stanu poczty do odczytu. peek jest varchar(5), domyślna wartość FALSE.Jeśli zestaw na wartość FALSE, poczty jest traktowany tak, jakby zostały przeczytane.Jeśli zestaw na wartość TRUE, poczty jest traktowany tak, jakby nie zostały przeczytane.[ @ suppress_attach = ] 'suppress_attach"
To, czy załączniki wiadomości są pomijane.suppress_attachjest varchar(255), domyślna wartość FALSE.Jeśli zestaw na wartość TRUE, SQL Server uniemożliwia tworzenie tymczasowych plików, kiedy xp_readmail odczytuje wiadomości z załącznikami.Jeśli zestaw wartość FALSE, tam nie zapobiegania pliki tymczasowe przeczytaniu wiadomości z załącznikami.[ @ zleceniodawcy = ] 'sender"
Jest nadawcy poczty zwrócone.senderjest varchar(255), z braku domyślne.[ @ podmiotu = ] 'subject"
Zwracane jest temat wiadomości poczty.subjectjest varchar(255), z braku domyślne.[ @ wiadomości = ] 'message"
Jest zwracany organowi lub rzeczywisty tekst wiadomości.messagejest tekstu, z Brak domyślnej.[ @recipients = ' recipients ;... n] '
Jest rozdzielaną średnikami listę adresatów wiadomości mają być zwrócone.Nazwy adresatów są oddzielone średnikiem (;).recipient_listjest varchar(255), z braku domyślne.[ @cc_list = ' copy_recipients ;... n] '
Jest rozdzielaną średnikami listę adresatów "w DW: pole wiadomości mają być zwrócone.Nazwy adresatów są oddzielone średnikiem (;).cc_listjest varchar(255), z braku domyślne.[ @bcc_list = ' blind_copy_recipients**;... n] '
Jest rozdzielaną średnikami listę adresatów UDW: pole wiadomości mają być zwrócone.Odbiorca " nazwy są oddzielane średnikami (;**).bcc_listjest varchar(255), z braku domyślne.Jeśli serwer poczty e-mail nie podano wartości UDW polenastępnie blind_copy_recipients jest pusta.[ @ date_received = ] 'date"
Jest zwracany data wiadomości pocztowej.datejest varchar(255), z braku domyślne.[ @ nieprzeczytane = ] 'unread_value"
To, czy wiadomość została wcześniej nieprzeczytane (true) lub nie (false).unread_valuejest varchar(5), domyślna wartość TRUE.[ @attachments = ' attachments ;... n] '
Jest rozdzielaną średnikami listę zwrócone tymczasowe ścieżek załączników do wiadomości dla wiadomości.Tymczasowe ścieżki są oddzielone średnikiem (;).attachmentsjest varchar(255), z braku domyślne.[ @ skip_bytes = ] bytes_to_skipdanych wyjściowych
Jeśli wartość inną niż 0 zostanie przekazany do wprowadzania danych, ten parametr określa liczbę bajtów, aby pominąć przed odczytaniem dalej 255 bajtów (max) wiadomość do body_of_message parametru wyjściowego.Po bytes_to_skip jest używana, body_of_message zawiera następna część wiadomości i bytes_to_skip zwraca następny punkt początkowy w wiadomości (poprzedniego bytes_to_skip plus długość message).bytes_to_skipjest int, domyślna wartość 0.[ @ msg_length = ] length_in_bytesdanych wyjściowych
Jest całkowitą długością wiadomości w bajtach.Gdy używana z bytes_to_skip w procedura składowanaten parametr umożliwia wiadomości odczytywane fragmentów z 255 bajtów.length_in_bytesis int.[ @ originator_address = ] 'sender_address"
Jest adresem poczty rozpoznać nadawcą wiadomości pocztowej.sender_addressjest varchar(255), z braku domyślne.
Wartości kodów powrotnych
0 (sukces) lub 1 (błąd)
Zestawy wyników
xp_readmail zwraca zestaw wyników te kolumny.
Nazwa kolumny |
Opis |
---|---|
Zleceniodawca |
Nadawcy wiadomości e-mail |
Data otrzymania |
Data otrzymania wiadomości e-mail |
Adresaci |
Osoby, do której wysłano wiadomość |
Lista DW |
Osoby na "DW:" wiersz wiadomości e-mail |
Lista UDW |
Osoby na "UDW:" wiersz wiadomości e-mail |
Przedmiot |
Wiersz tematu wiadomości e-mail |
Komunikat |
Treść wiadomości (tekst) |
Nieprzeczytane |
Czy to jest komunikat nieprzeczytane |
Załączniki |
Załączniki wiadomości |
Identyfikator komunikatu |
Identyfikator komunikatu |
Typ |
Typ wiadomości |
Uwagi
Niepowodzenie z wyjątkiem nieprawidłowy parametr jest zalogowany do Microsoft Informacje aplikacji systemu Windows
Istnieją dwa sposoby używania xp_readmail:
Zwraca wszystkie wiadomości w Skrzynce odbiorczej jako zestaw wyników do klient.
Przeczytaj pojedynczej wiadomości ze skrzynki odbiorczej.
Aby przywrócić zawartość skrzynki odbiorczej jako zestaw wyników klient, nie udostępniają żadnych parametrów wejściowych.
Awaria, aby zmienić ustawienie domyślne dla suppress_attach parametr raises spełnione dwa potencjalne problemy dotyczące zabezpieczeń dla załączników.
Po pierwsze Jeśli dwóch różnych użytkowników współużytkują ten sam katalog tymczasowy i zalogować się na tym samym komputerze, będą mogli wyświetlać załączniki sobie wzajemnie.Można określić miejsce przechowywania załączników i czy dwóch użytkownicy współużytkują ten sam katalog tymczasowy przeglądając attachments dane wyjściowe zmiennej.
Drugi, xp_deletemail nie powoduje usunięcia tych załączników, należy ręcznie usunąć wszystkich załączników.
Aby odczytać pojedynczej wiadomości ze skrzynki odbiorczej, podać prawidłowy message_id zwrócone przez xp_findnextmsg jako parametru wejściowego do xp_readmail.Można określić peek i suppress_attach jako parametry wejściowe do sterowania sposobem wiadomości jest odczytu.Podczas korzystania z peek i suppress_attach z tej metoda, wszystkie pozostałe parametry są parametry wyjściowe opcjonalny zawierający szczegółowe informacje z wiadomości do odczytu.
Przykład użycia można wyświetlić xp_findnextmsg jako parametru wejściowego do xp_readmail , wykonując następujące polecenie:
sp_helptext 'sp_processmail';
Gdy odczytane pojedynczej wiadomości, xp_readmail może odczytywać wiadomości tekstowe dłuższe niż 255 bajtów w sekcjach.Użycie length_in_bytes do czytania wiadomości tekstowe dłuższe niż 255 bajtów w sekcjach.Za pomocą length_in_bytes jako danych wejściowych i parametrów wyjściowych umożliwia kodowanie pętli do przetwarzania tekstu całą wiadomość.Następujący kod przedstawia przykład pętli, przy założeniu, że message_id jest zestaw identyfikator prawidłowy komunikat zwrócony przez xp_findnextmsg.
USE master;
GO
-- Set up variables.
DECLARE @status INT,
@message_part VARCHAR(255),
@msg_id VARCHAR(255),
@message_length INT,
@skip_bytes INT,
@message VARCHAR(MAX) ;
-- Find the next message
EXEC @status = dbo.xp_findnextmsg
@msg_id = @msg_id OUTPUT ;
-- If xp_findnextmsg completed successfully and
-- there is a message in the inbox, read the message.
IF (@status = 0 AND @msg_id IS NOT NULL)
BEGIN
WHILE (1=1)
BEGIN
EXEC @status = dbo.xp_readmail
@msg_id = @msg_id,
@msg_length = @message_length OUTPUT,
@skip_bytes = @skip_bytes OUTPUT,
@message = @message_part OUTPUT ;
IF @status <> 0 BREAK ;
SET @message = ISNULL(@message, '') + @message_part ;
PRINT @message_length ;
PRINT @skip_bytes;
IF @message_length = @skip_bytes BREAK ;
END ;
IF @status = 0
BEGIN
SELECT 'Message ID' = @msg_id, 'Message Body' = @message ;
END ;
ELSE
SELECT 'Could not read message.' ;
END;
GO
Uprawnienia
Wymaga członkostwa w sysadmin stała rola serwera, ale uprawnienia wykonywania mogą być przyznane innym użytkownikom.Jednak ze względów bezpieczeństwa zalecane jedynie uprawnienia dla tej procedura składowana dla członków sysadmin stała rola serwera.
Przykłady
Poniższy przykład zwraca stan podczas czytania wiadomości.W tym przykładzie wartość wiadomości identyfikator z xp_findnextmsg jest umieszczana w zmiennej lokalnej @message_id i przekazywana do xp_readmail.
USE master ;
GO
DECLARE @status INT,
@msg_id VARCHAR(255),
@originator VARCHAR(255),
@cc_list VARCHAR(255),
@subject VARCHAR(255),
@query VARCHAR(8000);
-- Find the next message
EXEC @status = dbo.xp_findnextmsg
@msg_id = @msg_id OUTPUT ;
-- If xp_findnextmsg completed successfully and
-- there is a message in the inbox, read the message.
IF (@status = 0 AND @msg_id IS NOT NULL)
BEGIN
EXEC @status = dbo.xp_readmail
@msg_id = @msg_id,
@originator = @originator OUTPUT,
@cc_list = @cc_list OUTPUT,
@subject = @subject OUTPUT,
@message = @query OUTPUT,
@peek = 'TRUE',
@suppress_attach = 'TRUE'
END;
GO