2016-01-21 8 views
1

мой код для отправки почты с использованием шага данных sas. здесь пытается создать код для отправки почты.Макрос для отправки электронной почты

FILENAME outbox EMAIL ("***********"); 
DATA _NULL_; 
FILE outbox 
TO=("************") 
FROM=("***********") 
SUBJECT=("Example of a SAS E-mail"); 
/* ATTACH=(""); */ 
PUT " "; 
PUT "Hello Boss,"; 
PUT " "; 
PUT "Attached are the Daily Operational Reports."; 
PUT " "; 
PUT "rrt"; 
RUN; 
+1

Не могли бы вы рассказать о своем вопросе? Я не уверен, чего вы пытаетесь достичь. –

+0

Макрос, который отправит электронное письмо. используя filename – Apache11

+0

Предполагая, что ваш шаг данных работает, вы можете просто обернуть его в макрос, я покажу его в своем ответе. –

ответ

0

Я не имею тенденцию включать параметры электронной почты в самом файле данных, а скорее в fileref. Я проверил код ниже с моим адресом электронной почты, и он сработал.

Как я уже сказал в комментариях, вам просто нужно обернуть свой файл datastep в макрос, если вы хотите, чтобы он выполнялся внутри макроса.

У вас могут быть позиционные или ключевые параметры. См. Это source для получения подробной информации. В этом примере я использовал параметры ключевых слов. вы вызываете макрос, задавая ключевое слово, а затем значение, как я показал последнюю строку. Если вы ничего не ставите, ключевое слово будет проигнорировано.

К слову, пустые ключевые слова приводят к инициализации локальных макропеременных. Пусть такие утверждения, как (% LET FROM = FROM = "& FROM"), должны добавить строку «FROM =» в начало макроопределения «FROM», чтобы синтаксис имени файла был завершен. Если макро переменная, такая как «ОТ», будет передана как есть, она решит адрес электронной почты, в котором имя файла не знает, что делать.

%MACRO send_email (TO=,FROM=,SUBJECT=,ATTACHMENT=,BODY=); 
    %IF &TO ne %THEN 
     %LET TO="&TO"; 

    %IF &FROM ne %THEN 
     %LET FROM=FROM="&FROM"; 

    %IF &SUBJECT ne %THEN 
     %LET SUBJECT=SUBJECT="&SUBJECT"; 

    %IF &ATTACHMENT ne %THEN 
     %LET ATTACHMENT=ATTACHMENT="&ATTACHMENT"; 

    %IF &BODY ne %THEN 
     %LET BODY="&BODY"; 
    FILENAME outbox EMAIL &TO &FROM &SUBJECT &ATTACHMENT; 

    DATA _NULL_; 
     FILE outbox; 
     PUT &BODY; 
    RUN; 

%MEND; 

%send_email([email protected]); 
+0

«Невозможно создать шифр» появляется ошибка, возникающая – Apache11

+0

Я изменил свой ответ, чтобы показать, как вы можете использовать параметры ключевого слова для макроса. Я не знаю об ошибке для шифрования. В моем последнем примере двойные кавычки использовались неправильно. Это могло вызвать ошибку или может быть способ подключения к smtp-серверу, который потенциально может быть в вашей конфигурации. –

+0

Googling «Невозможно создать шифр» приводит к этому сообщению в блоге от Криса, где вопрос обсуждается в комментариях. Кажется, это потенциально связано с SAS/secure ... http://blogs.sas.com/content/sasdummy/2013/07/31/gmail-from-sas-program/ – Quentin

0

Peeyush,

Попробуйте пример кода ниже. Обязательно введите данные своего хоста SMTP и адреса электронной почты. Вы можете указать макрокоманды адресов электронной почты, если хотите дополнительную автоматизацию:

%macro emailM; 
OPTIONS emailsys = SMTP emailhost = Youremail.Host.net emailport= 25; 
FILENAME Mailbox EMAIL '[email protected]'; 
attach=("\\somewhere\something\File.xls"); 
DATA _NULL_; 
FILE MailBox TO=("[email protected]" "[email protected]") 
Subject="Example of a SAS E-mail"; 
PUT "Hello Boss,"; 
PUT " "; 
PUT "Attached are the Daily Operational Reports."; 
PUT " "; 
PUT "Thank you"; 
RUN; 
%mend emailM; 

%emailM; 
Смежные вопросы